Skip to content

Commit

Permalink
Feat: merge gamedig-cli partially & monorepo conversion
Browse files Browse the repository at this point in the history
Related issue: #125
  • Loading branch information
cainthebest authored Nov 8, 2023
2 parents 1d7cb31 + a11ca7f commit 89222b1
Show file tree
Hide file tree
Showing 71 changed files with 133 additions and 49 deletions.
7 changes: 5 additions & 2 deletions .github/labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,13 @@ ci:
- .pre-commit-config.yaml

protocol:
- src/protocols/**
- crates/lib/src/protocols/**

game:
- src/games/**
- crates/lib/src/games/**

cli:
- crates/cli/**

crate:
- Cargo.toml
Expand Down
16 changes: 8 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@ jobs:
shared-key: "cargo-deps"
cache-targets: false
- name: Run Build
run: cargo build --verbose --bins --lib --examples --all-features
run: cargo check --verbose --workspace --bins --lib --examples --all-features
- name: Run Tests
run: cargo test --verbose --bins --lib --examples --all-features
run: cargo test --verbose --workspace --bins --lib --examples --all-features
build:
runs-on: ubuntu-latest
needs: [ "build_first" ]
Expand Down Expand Up @@ -61,9 +61,9 @@ jobs:
shared-key: "cargo-deps"
cache-targets: false
- name: Run Build
run: cargo build --verbose --bins --lib ${{ matrix.build_type }}
run: cargo check --workspace --verbose --bins --lib ${{ matrix.build_type }}
build_msrv:
name: "Build using MSRV"
name: "Build using MSRV (lib only)"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
Expand All @@ -74,7 +74,7 @@ jobs:
toolchain: 1.65.0
override: true
- name: Run MSRV
run: cargo build
run: cargo check -p gamedig
formatting:
name: "Check code formatting"
runs-on: ubuntu-latest
Expand Down Expand Up @@ -105,10 +105,10 @@ jobs:
uses: actions-rs/clippy-check@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
args: --bins --lib --examples --all-features
args: --workspace --bins --lib --examples --all-features
if: ${{ !env.ACT }} # skip during local actions testing
- name: Run clippy (local)
run: cargo clippy --verbose --bins --lib --examples --all-features
run: cargo clippy --workspace --verbose --bins --lib --examples --all-features
if: ${{ env.ACT }} # only run during local actions testing
doc:
name: "Check rustdoc"
Expand All @@ -121,6 +121,6 @@ jobs:
shared-key: "cargo-deps"
cache-targets: false
- name: "Run cargo doc"
run: cargo doc
run: cargo doc --workspace
env:
RUSTDOCFLAGS: "-D warnings"
2 changes: 1 addition & 1 deletion .github/workflows/node-badge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ jobs:
# Calculate how many of those games we have definitions for
rust_games_count=0
for game in $node_games; do
if grep "\"$game\" *=>" ./src/games/definitions.rs; then
if grep "\"$game\" *=>" ./crates/lib/src/games/definitions.rs; then
rust_games_count=$(( rust_games_count + 1 ))
fi
done
Expand Down
12 changes: 6 additions & 6 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,37 +8,37 @@ repos:
language: system
files: '[.]rs$'
pass_filenames: false
entry: rustup run --install nightly-2023-07-09 cargo-clippy -- -- -D warnings
entry: rustup run --install nightly-2023-07-09 cargo-clippy -- --workspace --all-features -- -D warnings
- id: build-no-features
name: Check crate build with no features
language: system
files: '[.]rs$'
pass_filenames: false
entry: cargo build --no-default-features
entry: cargo check --workspace --no-default-features
- id: build-all-features
name: Check crate builds with all features
language: system
files: '[.]rs$'
pass_filenames: false
entry: cargo build --all-features --lib --bins --examples
entry: cargo check --workspace --all-features --lib --bins --examples
- id: test
name: Check tests pass
language: system
files: '[.]rs$'
pass_filenames: false
entry: cargo test --bins --lib --examples --all-features
entry: cargo test --workspace --bins --lib --examples --all-features
- id: format
name: Check rustfmt
language: system
files: '[.]rs$'
pass_filenames: false
entry: rustup run --install nightly-2023-07-09 cargo-fmt --check
- id: msrv
name: Check MSRV compiles
name: Check MSRV compiles (lib only)
language: system
files: '[.]rs$'
pass_filenames: false
entry: rustup run --install 1.65 cargo build
entry: rustup run --install 1.65 cargo check -p gamedig
- id: docs
name: Check rustdoc compiles
language: system
Expand Down
44 changes: 12 additions & 32 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,35 +1,15 @@
[package]
name = "gamedig"
version = "0.4.1"
edition = "2021"
authors = [
"rust-GameDig contributors [https://github.com/gamedig/rust-gamedig/contributors]",
"node-GameDig contributors [https://github.com/gamedig/node-gamedig/contributors]",
]
license = "MIT"
description = "Query game servers and not only."
homepage = "https://github.com/gamedig/rust-gamedig"
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"
categories = ["parser-implementations", "parsing", "network-programming", "encoding"]
[workspace]
name = "gamedig-workspace"
members = ["crates/cli", "crates/lib"]

[features]
default = ["games", "services", "game_defs"]
games = []
services = []
game_defs = ["dep:phf", "games"]
serde = ["dep:serde", "serde/derive"]
# Edition 2021, uses resolver = 2
resolver = "2"

[dependencies]
byteorder = "1.5"
bzip2-rs = "0.1"
crc32fast = "1.3"
serde_json = "1.0"
encoding_rs = "0.8"
[profile.release]
opt-level = 3
debug = false
rpath = true
lto = true

serde = { version = "1.0", optional = true }

phf = { version = "0.11", optional = true, features = ["macros"] }
[profile.release.package."*"]
opt-level = 3
16 changes: 16 additions & 0 deletions crates/cli/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
[package]
name = "gamedig-cli"
authors = [
"rust-GameDig contributors [https://github.com/gamedig/rust-gamedig/contributors]",
]
description = "A command line interface for gamedig"
license = "MIT"
version = "0.4.1"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
clap = { version = "4.1.11", features = ["derive"] }
gamedig = { version = "*", path = "../lib" }
thiserror = "1.0.43"
16 changes: 16 additions & 0 deletions crates/cli/src/error.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
pub type Result<T> = std::result::Result<T, Error>;

#[derive(thiserror::Error, Debug)]
pub enum Error {
#[error("IO Error: {0}")]
Io(#[from] std::io::Error),

#[error("Clap Error: {0}")]
Clap(#[from] clap::Error),

#[error("Gamedig Error: {0}")]
Gamedig(#[from] gamedig::errors::GDError),

#[error("Unknown Game: {0}")]
UnknownGame(String),
}
34 changes: 34 additions & 0 deletions crates/cli/src/main.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
use std::net::IpAddr;

use clap::Parser;
use gamedig::games::*;

mod error;

use self::error::Result;

#[derive(Parser)]
#[command(author, version, about)]
struct Cli {
#[arg(short, long)]
game: String,

#[arg(short, long)]
ip: IpAddr,

#[arg(short, long)]
port: Option<u16>,
}

fn main() -> Result<()> {
let args = Cli::parse();

let game = match GAMES.get(&args.game) {
Some(game) => game,
None => return Err(error::Error::UnknownGame(args.game)),
};

println!("{:#?}", query(game, &args.ip, args.port)?.as_json());

Ok(())
}
35 changes: 35 additions & 0 deletions crates/lib/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
[package]
name = "gamedig"
version = "0.4.1"
edition = "2021"
authors = [
"rust-GameDig contributors [https://github.com/gamedig/rust-gamedig/contributors]",
"node-GameDig contributors [https://github.com/gamedig/node-gamedig/contributors]",
]
license = "MIT"
description = "Query game servers and not only."
homepage = "https://github.com/gamedig/rust-gamedig"
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"
categories = ["parser-implementations", "parsing", "network-programming", "encoding"]

[features]
default = ["games", "services", "game_defs"]
games = []
services = []
game_defs = ["dep:phf", "games"]
serde = ["dep:serde", "serde/derive"]

[dependencies]
byteorder = "1.5"
bzip2-rs = "0.1"
crc32fast = "1.3"
serde_json = "1.0"
encoding_rs = "0.8"

serde = { version = "1.0", optional = true }

phf = { version = "0.11", optional = true, features = ["macros"] }
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 comments on commit 89222b1

Please sign in to comment.