diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 21bde40..a9b42a0 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -1,57 +1,15 @@ on: push: branches: - - develop + - main + - renovate/** + paths-ignore: + - README.md pull_request: - + paths-ignore: + - README.md + name: Check Rust code jobs: check: - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v2 - - - name: Install Rust nightly with rustfmt and clippy - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: nightly - components: rustfmt, clippy - - - name: Cache cargo registry and build outputs - uses: actions/cache@v2 - with: - path: | - ~/.cargo/registry - target - key: ${{ runner.os }}-cargo-${{ hashFiles('Cargo.lock') }} - - - name: Check formatting - uses: actions-rs/cargo@v1 - with: - command: fmt - args: -- --check - - - name: Annotate commit with clippy warnings - if: "${{ github.event_name == 'push' }}" - uses: actions-rs/clippy-check@v1 - with: - token: ${{ secrets.GITHUB_TOKEN }} - args: --all-features - - - name: Run cargo check - uses: actions-rs/cargo@v1 - with: - command: check - - - name: Run cargo test - uses: actions-rs/cargo@v1 - with: - command: test - - - name: Run cargo doc - uses: actions-rs/cargo@v1 - with: - command: doc - args: --no-deps + uses: msfjarvis/shared-workflows/.github/workflows/test-rust-project.yml@main diff --git a/Cargo.lock b/Cargo.lock index 4c32e65..d7afb82 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "anyhow" -version = "1.0.52" +version = "1.0.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84450d0b4a8bd1ba4144ce8ce718fbc5d071358b1e5384bace6536b3d1f2d5b3" +checksum = "94a45b455c14666b85fc40a019e8ab9eb75e3a124e05494f5397122bc9eb06e0" [[package]] name = "atty" @@ -48,19 +48,34 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "clap" -version = "3.0.10" +version = "3.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a30c3bf9ff12dfe5dae53f0a96e0febcd18420d1c0e7fad77796d9d5c4b5375" +checksum = "b63edc3f163b3c71ec8aa23f9bd6070f77edbf3d1d198b164afa90ff00e4ec62" dependencies = [ "atty", "bitflags", + "clap_derive", "indexmap", + "lazy_static", "os_str_bytes", "strsim", "termcolor", "textwrap", ] +[[package]] +name = "clap_derive" +version = "3.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a1132dc3944b31c20dd8b906b3a9f0a5d0243e092d59171414969657ac6aa85" +dependencies = [ + "heck", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "form_urlencoded" version = "1.0.1" @@ -105,6 +120,12 @@ version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +[[package]] +name = "heck" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" + [[package]] name = "hermit-abi" version = "0.1.19" @@ -144,11 +165,17 @@ dependencies = [ "libc", ] +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + [[package]] name = "libc" -version = "0.2.113" +version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eef78b64d87775463c549fbd80e19249ef436ea3bf1de2a1eb7e717ec7fab1e9" +checksum = "e74d72e0f9b65b5b4ca49a346af3976df0f9c61d550727f349ecd559f251a26c" [[package]] name = "libgit2-sys" @@ -251,6 +278,30 @@ version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe" +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + [[package]] name = "proc-macro2" version = "1.0.36" @@ -262,9 +313,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47aa80447ce4daf1717500037052af176af5d38cc3e571d9ec1c7353fc10c87d" +checksum = "864d3e96a899863136fc6e99f3d7cae289dafe43bf2c5ac19b70df7210c0a145" dependencies = [ "proc-macro2", ] @@ -280,18 +331,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.133" +version = "1.0.136" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97565067517b60e2d1ea8b268e59ce036de907ac523ad83a0475da04e818989a" +checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.133" +version = "1.0.136" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed201699328568d8d08208fdd080e3ff594e6c422e438b6705905da01005d537" +checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9" dependencies = [ "proc-macro2", "quote", @@ -393,6 +444,12 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + [[package]] name = "walkdir" version = "2.3.2" diff --git a/Cargo.toml b/Cargo.toml index 0003cc9..30ab6c4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,11 +14,11 @@ include = ["src/**/*", "LICENSE-*", "README.md"] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -anyhow = "1.0.52" -clap = "3.0.10" +anyhow = "1.0.53" +clap = { version = "3.0.14", features = ["color", "derive"] } git2 = "0.13.25" -serde = { version = "1.0.133", default-features = false, features = ["derive"] } -serde_derive = "1.0.133" +serde = { version = "1.0.136", default-features = false, features = ["derive"] } +serde_derive = "1.0.136" toml = "0.5.8" walkdir = "2.3.2" diff --git a/deny.toml b/deny.toml new file mode 100644 index 0000000..24ef3df --- /dev/null +++ b/deny.toml @@ -0,0 +1,41 @@ +targets = [ + { triple = "x86_64-unknown-linux-gnu" }, + { triple = "aarch64-unknown-linux-gnu" }, + { triple = "x86_64-unknown-linux-musl" }, + { triple = "aarch64-apple-darwin" }, + { triple = "x86_64-apple-darwin" }, + { triple = "x86_64-pc-windows-msvc" }, +] + +[advisories] +db-path = "~/.cargo/advisory-db" +db-urls = ["https://github.com/rustsec/advisory-db"] +vulnerability = "deny" +unmaintained = "warn" +yanked = "warn" +notice = "warn" +[licenses] +unlicensed = "deny" +allow = [ + "MIT", + "Apache-2.0", +] +copyleft = "allow" +allow-osi-fsf-free = "neither" +default = "deny" +confidence-threshold = 0.8 +exceptions = [ +] + +[licenses.private] +ignore = false + +[bans] +multiple-versions = "deny" +wildcards = "deny" +highlight = "all" + +[sources] +unknown-registry = "deny" +unknown-git = "deny" +allow-git = [] diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000..f948982 --- /dev/null +++ b/renovate.json @@ -0,0 +1,12 @@ +{ + "extends": [ + "config:base" + ], + "packageRules": [ + { + "matchPackagePatterns": ["*"], + "automerge": true, + "automergeType": "branch" + } + ] +} diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..0bc21dd --- /dev/null +++ b/shell.nix @@ -0,0 +1,15 @@ +with import { overlays = [ (import ) ]; }; +mkShell { + RUSTFLAGS = ""; + buildInputs = [ + (rust-bin.selectLatestNightlyWith (toolchain: + toolchain.default.override { + extensions = [ "rust-src" "rustfmt-preview" ]; + })) + pkg-config + openssl + clang_12 + ] ++ lib.optionals stdenv.isDarwin [ + pkgs.darwin.apple_sdk.frameworks.Security + ]; +} diff --git a/src/cli.rs b/src/cli.rs index 5704680..0c9418f 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -1,37 +1,28 @@ -use clap::{crate_authors, crate_description, crate_name, crate_version, AppSettings, Clap}; +use clap::{AppSettings, Parser}; -#[derive(Clap)] -#[clap( - name = crate_name!(), - version = crate_version!(), - author = crate_authors!(), - about = crate_description!(), - setting = AppSettings::ColoredHelp, - setting = AppSettings::DeriveDisplayOrder, - setting = AppSettings::SubcommandRequiredElseHelp, -)] +#[derive(Parser)] +#[clap(author, version, about)] +#[clap(global_setting(AppSettings::DeriveDisplayOrder))] pub(crate) struct Opts { #[clap(subcommand)] pub(crate) subcommand: SubCommand, } -#[derive(Clap)] +#[derive(Parser)] pub(crate) enum SubCommand { Freeze(Freeze), Thaw(Thaw), } /// recursively find git repos and record their states into a lockfile -#[derive(Clap)] -#[clap(setting = AppSettings::ColoredHelp)] +#[derive(Parser)] pub(crate) struct Freeze { /// directory to search and freeze repos from. pub(crate) directory: String, } -/// takes the given -#[derive(Clap)] -#[clap(setting = AppSettings::ColoredHelp)] +/// takes the given lockfile and clones them back into the given directory +#[derive(Parser)] pub(crate) struct Thaw { /// directory to put cloned repos into. pub(crate) directory: String, diff --git a/src/git.rs b/src/git.rs index 3aa83c0..c0804f1 100644 --- a/src/git.rs +++ b/src/git.rs @@ -73,9 +73,9 @@ pub(crate) fn thaw_repos(dir: &str, lockfile: &str) -> anyhow::Result<()> { .expect("Failed to run `git clone`. Perhaps git is not installed?"); if output.status.success() { - println!("Thawed {} successfully.", name) + println!("Thawed {} successfully.", name); } else { - println!("{}", std::str::from_utf8(&output.stderr)?) + println!("{}", std::str::from_utf8(&output.stderr)?); } } diff --git a/src/main.rs b/src/main.rs index 2311644..1857303 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,9 +2,8 @@ pub(crate) mod cli; pub(crate) mod git; pub(crate) mod model; -use clap::Clap; -use cli::Opts; -use cli::SubCommand; +use clap::Parser; +use cli::{Opts, SubCommand}; use git::freeze_repos; use git::thaw_repos;