chore: maintenance (#233)

This commit is contained in:
Cain 2024-11-27 15:21:11 +00:00 committed by GitHub
commit c04f442bbe
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
16 changed files with 187 additions and 196 deletions

View file

@ -1,6 +1,6 @@
{
"act": true,
"repository": {
"default_branch": "main"
}
"act": true,
"repository": {
"default_branch": "main"
}
}

View file

@ -3,8 +3,8 @@ name: Security audit
on:
push:
paths:
- '**/Cargo.toml'
- '**/Cargo.lock'
- "**/Cargo.toml"
- "**/Cargo.lock"
jobs:
security_audit:
runs-on: ubuntu-latest
@ -15,6 +15,6 @@ jobs:
run: cargo generate-lockfile
- name: Audit Check
- uses: rustsec/audit-check@v2.0.0
uses: rustsec/audit-check@v2.0.0
with:
token: ${{ secrets.GITHUB_TOKEN }}

View file

@ -3,14 +3,14 @@ name: CI
on:
push:
branches: [ "main" ]
branches: ["main"]
paths:
- "**.rs" # Any rust file
- "**/Cargo.toml" # Any Cargo.toml
- ".rustfmt.toml"
- ".github/workflows/ci.yml" # This action
pull_request:
branches: [ "main" ]
branches: ["main"]
paths:
- "**.rs" # Any rust file
- "**/Cargo.toml" # Any Cargo.toml
@ -51,7 +51,7 @@ jobs:
# If we were able to build then test different feature combinations compile with the library
build_lib:
runs-on: ubuntu-latest
needs: [ "build_first" ]
needs: ["build_first"]
# Only run if library files were modified
if: ${{ needs.build_first.outputs.lib == 'true' }}
strategy:
@ -69,7 +69,7 @@ jobs:
- build_type: "--no-default-features --features game_defs"
build_name: "Just Game definitions"
- build_type: "--no-default-features --features serde"
build_name: "Just serde"
build_name: "Just serde"
name: "Build library ${{ matrix.build_name }}"
steps:
- uses: actions/checkout@v4
@ -84,7 +84,7 @@ jobs:
# If we were able to build then test different feature combinations compile with the CLI
build_cli:
runs-on: ubuntu-latest
needs: [ "build_first" ]
needs: ["build_first"]
# Only run if CLI files were modified
if: ${{ needs.build_first.outputs.cli == 'true' }}
strategy:
@ -104,13 +104,13 @@ jobs:
cache-targets: false
save-if: false
- name: Run Build
run: cargo check -p gamedig-cli --verbose --bins --examples --tests ${{ matrix.build_type }}
run: cargo check -p gamedig_cli --verbose --bins --examples --tests ${{ matrix.build_type }}
# If we were able to build then test the MSRV compiles (for the libary as not enforced for CLI)
build_msrv:
name: "Build using MSRV (lib only)"
runs-on: ubuntu-latest
needs: [ "build_first" ]
needs: ["build_first"]
# Only run if library files were modified
if: ${{ needs.build_first.outputs.lib == 'true' }}
# Unfortunate hard-coding of rustup directory so that rust-cache caches it
@ -128,7 +128,7 @@ jobs:
- name: Install MSRV
uses: actions-rs/toolchain@v1
with:
toolchain: 1.65.0
toolchain: 1.71.1
override: true
- name: Run MSRV
run: cargo check -p gamedig
@ -161,7 +161,7 @@ jobs:
clippy:
name: "Run clippy tests"
runs-on: ubuntu-latest
needs: [ "build_first" ]
needs: ["build_first"]
steps:
- uses: actions/checkout@v4
- uses: Swatinem/rust-cache@v2
@ -185,7 +185,7 @@ jobs:
doc:
name: "Check rustdoc"
runs-on: ubuntu-latest
needs: [ "build_first" ]
needs: ["build_first"]
steps:
- uses: actions/checkout@v4
- uses: Swatinem/rust-cache@v2

View file

@ -1,6 +1,6 @@
name: "Pull Request Labeler"
on:
- pull_request_target
- pull_request_target
jobs:
triage:

View file

@ -10,7 +10,7 @@ on:
branches:
- "main" # Limit badge commits to only happen on the main branch
schedule: # This runs on the default branch only, it could still trigger on PRs but only if they develop on default branch and enable actions.
- cron: '34 3 * * 2' # Update once a week in case node-gamedig has changed
- cron: "34 3 * * 2" # Update once a week in case node-gamedig has changed
workflow_dispatch:
jobs:

View file

@ -1,35 +0,0 @@
name: Release
on:
release:
types: [created]
workflow_dispatch:
jobs:
release:
if: startsWith(github.event.release.tag_name, 'cli-')
name: Release ${{ matrix.target }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- target: x86_64-pc-windows-gnu
archive: zip
- target: x86_64-unknown-linux-musl
archive: tar.gz tar.xz tar.zst
- target: x86_64-apple-darwin
archive: zip
- target: wasm32-wasi
archive: zip tar.gz
steps:
- uses: actions/checkout@v4
- name: Compile and release
uses: rust-build/rust-build.action@v1.4.5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
RUSTTARGET: ${{ matrix.target }}
ARCHIVE_TYPES: ${{ matrix.archive }}
SRC_DIR: ./crates/cli

View file

@ -9,10 +9,10 @@ import { closeSync, openSync, writeSync } from "node:fs";
import { spawnSync } from "node:child_process";
const setOutput = (key, value) => {
const file = openSync(process.env.GITHUB_OUTPUT, "a");
writeSync(file, `${key}=${value}\n`);
closeSync(file);
}
const file = openSync(process.env.GITHUB_OUTPUT, "a");
writeSync(file, `${key}=${value}\n`);
closeSync(file);
};
// Get node IDs
// NOTE: Here we directly import from games to avoid loading
@ -25,28 +25,39 @@ const node_total = node_ids.size;
// Get rust IDs
const command = spawnSync("cargo", ["run", "-p", "gamedig", "--example", "generic"]);
const command = spawnSync("cargo", [
"run",
"-p",
"gamedig",
"--example",
"generic",
]);
if (command.status !== 0) {
console.error(command.stderr.toString("utf8"));
process.exit(1);
console.error(command.stderr.toString("utf8"));
process.exit(1);
}
const rust_ids_pretty = command.stdout.toString("utf8");
const rust_ids = new Set(rust_ids_pretty.split("\n").map(line => line.split("\t")[0]).filter(id => id.length > 0));
const rust_ids = new Set(
rust_ids_pretty
.split("\n")
.map((line) => line.split("\t")[0])
.filter((id) => id.length > 0)
);
// Detect missing node IDs
for (const id of rust_ids) {
if (node_ids.delete(id)) {
rust_ids.delete(id);
}
if (node_ids.delete(id)) {
rust_ids.delete(id);
}
}
console.log("Node remains", node_ids);
console.log("Rust remains", rust_ids);
const percent = 1 - (node_ids.size / node_total);
const percent = 1 - node_ids.size / node_total;
// Output percent to 2 decimal places
setOutput("percent", Math.round(percent*10000)/100);
setOutput("percent", Math.round(percent * 10000) / 100);

View file

@ -43,7 +43,7 @@ repos:
language: system
files: '([.]rs|Cargo\.toml)$'
pass_filenames: false
entry: rustup run --install 1.65 cargo check -p gamedig
entry: rustup run --install 1.71.1 cargo check -p gamedig
- id: docs
name: Check rustdoc compiles

236
README.md
View file

@ -1,118 +1,118 @@
<h1 align="center">rust-GameDig</h1>
<h5 align="center">The fast library for querying game servers/services.</h5>
<div align="center">
<a href="https://github.com/gamedig/rust-gamedig/actions">
<img src="https://github.com/gamedig/rust-gamedig/actions/workflows/ci.yml/badge.svg" alt="CI">
</a>
<a href="https://crates.io/crates/gamedig">
<img src="https://img.shields.io/crates/v/gamedig.svg?color=orange" alt="Latest Version">
</a>
<a href="https://crates.io/crates/gamedig">
<img src="https://img.shields.io/crates/d/gamedig?color=purple" alt="Crates.io">
</a>
<a href="https://github.com/gamedig/node-gamedig">
<img src="https://raw.githubusercontent.com/gamedig/rust-gamedig/main/.github/badges/node.svg" alt="Node-GameDig Game Coverage">
</a>
<a href="https://deps.rs/crate/gamedig/0.5.1">
<img src="https://deps.rs/crate/gamedig/0.5.1/status.svg" alt="Rust-GameDig Dependencies">
</a>
</div>
<h5 align="center">
This library brings what
<a href="https://github.com/gamedig/node-gamedig">
node-GameDig
</a>
does (and not only), to pure Rust!
</h5>
**Warning**: This project goes through frequent API breaking changes and hasn't been thoroughly tested.
## Community
Checkout the GameDig Community Discord Server [here](https://discord.gg/NVCMn3tnxH).
Note that it isn't be a replacement for GitHub issues, if you have found a problem
within the library or want to request a feature, it's better to do so here rather than
on Discord.
## Usage
Minimum Supported Rust Version is `1.65.0` and the code is cross-platform.
Pick a game/service/protocol (check the [GAMES](GAMES.md), [SERVICES](SERVICES.md) and [PROTOCOLS](PROTOCOLS.md) files
to see the currently supported ones), provide the ip and the port (be aware that some game servers use a separate port
for the info queries, the port can also be optional if the server is running the default ports) then query on it.
[Team Fortress 2](https://store.steampowered.com/app/440/Team_Fortress_2/) query example:
```rust
use gamedig::games::teamfortress2;
fn main() {
let response = teamfortress2::query(&"127.0.0.1".parse().unwrap(), None);
// None is the default port (which is 27015), could also be Some(27015)
match response { // Result type, must check what it is...
Err(error) => println!("Couldn't query, error: {}", error),
Ok(r) => println!("{:#?}", r)
}
}
```
Response (note that some games have a different structure):
```json5
{
protocol: 17,
name: "Team Fortress 2 Dedicated Server.",
map: "ctf_turbine",
game: "tf2",
appid: 440,
players_online: 0,
players_details: [],
players_maximum: 69,
players_bots: 0,
server_type: Dedicated,
has_password: false,
vac_secured: true,
version: "7638371",
port: Some(27015),
steam_id: Some(69753253289735296),
tv_port: None,
tv_name: None,
keywords: Some(
"alltalk,nocrits"
),
rules: [
"mp_autoteambalance"
:
"1",
"mp_maxrounds"
:
"5",
//....
]
}
```
Want to see more examples? Checkout the [examples](crates/lib/examples) folder.
## Command Line Interface
The library also has an [official CLI](https://crates.io/crates/gamedig_cli) that you can use but it has
MSRV of `1.74.1`.
## Documentation
The documentation is available at [docs.rs](https://docs.rs/gamedig/latest/gamedig/).
Curious about the history and what changed between versions?
Everything is in the changelogs file: [lib](crates/lib/CHANGELOG.md) and [cli](crates/lib/CHANGELOG.md).
## Contributing
If you want to see your favorite game/service being supported here, open an issue, and I'll prioritize it (or do a pull
request if you want to implement it yourself)!
Before contributing please read [CONTRIBUTING](CONTRIBUTING.md).
<h1 align="center">rust-GameDig</h1>
<h5 align="center">The fast library for querying game servers/services.</h5>
<div align="center">
<a href="https://github.com/gamedig/rust-gamedig/actions">
<img src="https://github.com/gamedig/rust-gamedig/actions/workflows/ci.yml/badge.svg" alt="CI">
</a>
<a href="https://crates.io/crates/gamedig">
<img src="https://img.shields.io/crates/v/gamedig.svg?color=orange" alt="Latest Version">
</a>
<a href="https://crates.io/crates/gamedig">
<img src="https://img.shields.io/crates/d/gamedig?color=purple" alt="Crates.io">
</a>
<a href="https://github.com/gamedig/node-gamedig">
<img src="https://raw.githubusercontent.com/gamedig/rust-gamedig/main/.github/badges/node.svg" alt="Node-GameDig Game Coverage">
</a>
<a href="https://deps.rs/crate/gamedig">
<img src="https://deps.rs/crate/gamedig/latest/status.svg" alt="Rust-GameDig Dependencies">
</a>
</div>
<h5 align="center">
This library brings what
<a href="https://github.com/gamedig/node-gamedig">
node-GameDig
</a>
does (and not only), to pure Rust!
</h5>
**Warning**: This project goes through frequent API breaking changes and hasn't been thoroughly tested.
## Community
Checkout the GameDig Community Discord Server [here](https://discord.gg/NVCMn3tnxH).
Note that it isn't be a replacement for GitHub issues, if you have found a problem
within the library or want to request a feature, it's better to do so here rather than
on Discord.
## Usage
Minimum Supported Rust Version is `1.71.1"` and the code is cross-platform.
Pick a game/service/protocol (check the [GAMES](GAMES.md), [SERVICES](SERVICES.md) and [PROTOCOLS](PROTOCOLS.md) files
to see the currently supported ones), provide the ip and the port (be aware that some game servers use a separate port
for the info queries, the port can also be optional if the server is running the default ports) then query on it.
[Team Fortress 2](https://store.steampowered.com/app/440/Team_Fortress_2/) query example:
```rust
use gamedig::games::teamfortress2;
fn main() {
let response = teamfortress2::query(&"127.0.0.1".parse().unwrap(), None);
// None is the default port (which is 27015), could also be Some(27015)
match response { // Result type, must check what it is...
Err(error) => println!("Couldn't query, error: {}", error),
Ok(r) => println!("{:#?}", r)
}
}
```
Response (note that some games have a different structure):
```json5
{
protocol: 17,
name: "Team Fortress 2 Dedicated Server.",
map: "ctf_turbine",
game: "tf2",
appid: 440,
players_online: 0,
players_details: [],
players_maximum: 69,
players_bots: 0,
server_type: Dedicated,
has_password: false,
vac_secured: true,
version: "7638371",
port: Some(27015),
steam_id: Some(69753253289735296),
tv_port: None,
tv_name: None,
keywords: Some(
"alltalk,nocrits"
),
rules: [
"mp_autoteambalance"
:
"1",
"mp_maxrounds"
:
"5",
//....
]
}
```
Want to see more examples? Checkout the [examples](crates/lib/examples) folder.
## Command Line Interface
The library also has an [official CLI](https://crates.io/crates/gamedig_cli) that you can use but it has
MSRV of `1.74.1`.
## Documentation
The documentation is available at [docs.rs](https://docs.rs/gamedig/latest/gamedig/).
Curious about the history and what changed between versions?
Everything is in the changelogs file: [lib](crates/lib/CHANGELOG.md) and [cli](crates/lib/CHANGELOG.md).
## Contributing
If you want to see your favorite game/service being supported here, open an issue, and I'll prioritize it (or do a pull
request if you want to implement it yourself)!
Before contributing please read [CONTRIBUTING](CONTRIBUTING.md).

View file

@ -1,6 +1,6 @@
# MSRV (Minimum Supported Rust Version)
Current: `1.65.0`
Current: `1.71.1`
Places to update:

View file

@ -1,9 +1,17 @@
Who knows what the future holds...
# 0.X.Y - DD/MM/YYYY
# X.Y.Z - DD/MM/YYYY
Nothing... yet.
# 0.2.0 - 26/11/2024
### Breaking Changes:
- Restructured the release flow to be more consistent (GitHub releases will no longer be available, use cargo instead).
- Changed crate name from `gamedig-cli` to `gamedig_cli` to align with recommended naming conventions.
- The CLI now requires a minimum Rust version of `1.74.1`.
# 0.1.1 - 15/07/2024
### Changes:

View file

@ -5,7 +5,7 @@ authors = [
]
description = "A command line interface for gamedig"
license = "MIT"
version = "0.1.1"
version = "0.2.0"
edition = "2021"
default-run = "gamedig_cli"
homepage = "https://gamedig.github.io/"
@ -33,7 +33,7 @@ browser = ["dep:webbrowser"]
# Core Dependencies
thiserror = "2.0.0"
clap = { version = "4.5.4", default-features = false, features = ["derive"] }
gamedig = { version = "0.5", default-features = false, features = [
gamedig = { version = "0.6", default-features = false, features = [
"clap",
"games",
"game_defs",

View file

@ -1,6 +1,6 @@
# rust-GameDig CLI
# Rust GameDig CLI
The official [rust-GameDig](https://crates.io/crates/gamedig_cli) Command Line Interface.
The official [rust-GameDig](https://crates.io/crates/gamedig) Command Line Interface.
[![CI](https://github.com/gamedig/rust-gamedig/actions/workflows/ci.yml/badge.svg)](https://github.com/gamedig/rust-gamedig/actions) [![License:MIT](https://img.shields.io/github/license/gamedig/rust-gamedig?color=blue)](https://github.com/gamedig/rust-gamedig/blob/main/LICENSE.md) [![node coverage](https://raw.githubusercontent.com/gamedig/rust-gamedig/main/.github/badges/node.svg)](https://github.com/gamedig/node-gamedig)

View file

@ -1,11 +1,18 @@
Who knows what the future holds...
# 0.X.Y - DD/MM/YYYY
# X.Y.Z - DD/MM/YYYY
# 0.6.0 - 26/11/2024
Breaking:
- MSRV is now `1.71.1` (was `1.65.0`), this is due to deps we rely on requiring a higher version on linux builds (`1.65.0` is 2+ years old).
Games:
- [Minetest](https://www.minetest.net/) support (available on the `tls`, `serde` and `services` features) (#218 by
@CosminPerRam).
- Fixed the forest game failing when host has the client steam id (#232 by @paul-hansen).
# 0.5.2 - 20/10/2024

View file

@ -1,6 +1,6 @@
[package]
name = "gamedig"
version = "0.5.2"
version = "0.6.0"
edition = "2021"
authors = [
"rust-GameDig contributors [https://github.com/gamedig/rust-gamedig/contributors]",
@ -13,7 +13,7 @@ documentation = "https://docs.rs/gamedig/latest/gamedig/"
repository = "https://github.com/gamedig/rust-gamedig"
readme = "README.md"
keywords = ["server", "query", "game", "check", "status"]
rust-version = "1.65.0"
rust-version = "1.71.1"
categories = ["parser-implementations", "parsing", "network-programming", "encoding"]
[features]

View file

@ -36,7 +36,7 @@ on Discord.
## Usage
Minimum Supported Rust Version is `1.65.0` and the code is cross-platform.
Minimum Supported Rust Version is `1.71.1` and the code is cross-platform.
Pick a game/service/protocol (check
the [GAMES](https://github.com/gamedig/rust-gamedig/blob/main/GAMES.md), [SERVICES](https://github.com/gamedig/rust-gamedig/blob/main/SERVICES.md)