From eb7c78327bb6700a5d3ac0aecdf5f40364eade80 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sat, 13 Sep 2025 16:00:09 -0600 Subject: [PATCH 01/67] ci: try build with cross --- .github/workflows/release.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3f401b3..cf7d39f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -311,11 +311,12 @@ jobs: shell: bash run: | set -euxo pipefail - if [[ "${{ matrix.job.use-cross || 'false' }}" == 'true' ]]; then - cross build --release --locked --target=${{ matrix.job.target }} --verbose - else - cargo build --release --locked --target=${{ matrix.job.target }} --verbose - fi + cross build --release --target=${{ matrix.job.target }} + # if [[ "${{ matrix.job.use-cross || 'false' }}" == 'true' ]]; then + # cross build --release --locked --target=${{ matrix.job.target }} --verbose + # else + # cargo build --release --locked --target=${{ matrix.job.target }} --verbose + # fi - name: Verify file shell: bash From 77fe30b26772036c8d89b8579d94d088e0e5edc8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 13 Sep 2025 22:01:00 +0000 Subject: [PATCH 02/67] =?UTF-8?q?bump:=20version=200.0.1=20=E2=86=92=200.0?= =?UTF-8?q?.2=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 32 ++++++++++++++++++++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index da43d4e..1302fde 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,3 +8,35 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [0.0.1] - 2025-09-10 ### Other + +## v0.0.2 (2025-09-13) + +### Fix + +- Revert back hacky stuff so I can test with act now +- Attempting to use pre-generated bindgens for the aws-lc-sys library +- Install openSSL differently to make this work +- Address edge case for unknown_musl targets +- Install LLVM prereqs for release flow +- Updated the release flow to install the external bindgen-cli + +## v0.0.1 (2025-09-12) + +### Feat + +- Azure Key Vault support +- GCP Secret Manager support +- Full AWS SecretsManager support +- AWS Secrets Manager support +- Added two new flags to output where gman writes logs to and where it expects the config file to live + +### Fix + +- Made the vault file location more fault tolerant +- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests + +### Refactor + +- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions +- Made the creation of the log directories a bit more fault tolerant +- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky diff --git a/Cargo.lock b/Cargo.lock index e85ede4..597354f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gman" -version = "0.0.1" +version = "0.0.2" dependencies = [ "anyhow", "argon2", diff --git a/Cargo.toml b/Cargo.toml index a7b8868..fb795e7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gman" -version = "0.0.1" +version = "0.0.2" edition = "2024" authors = ["Alex Clarke "] description = "Universal secret management and injection tool" From 06885e3d86921aa08d6bdf12001c6c27d9c1ce29 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 13 Sep 2025 22:01:03 +0000 Subject: [PATCH 03/67] chore: bump Cargo.toml to 0.0.2 --- Cargo.lock | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 597354f..d33722f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3297,10 +3297,11 @@ checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" [[package]] name = "serde" -version = "1.0.219" +version = "1.0.220" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "ceecad4c782e936ac90ecfd6b56532322e3262b14320abf30ce89a92ffdbfe22" dependencies = [ + "serde_core", "serde_derive", ] @@ -3315,10 +3316,19 @@ dependencies = [ ] [[package]] -name = "serde_derive" -version = "1.0.219" +name = "serde_core" +version = "1.0.220" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "ddba47394f3b862d6ff6efdbd26ca4673e3566a307880a0ffb98f274bbe0ec32" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.220" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60e1f3b1761e96def5ec6d04a6e7421c0404fa3cf5c0155f1e2848fae3d8cc08" dependencies = [ "proc-macro2", "quote", From 84ffc8b71c0533b25db0b1f19aa2f2f4159b4159 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sat, 13 Sep 2025 16:08:37 -0600 Subject: [PATCH 04/67] ci: force install libclang deps --- .github/workflows/release.yml | 2 +- CHANGELOG.md | 31 ------------------------------- Cargo.lock | 2 +- Cargo.toml | 2 +- 4 files changed, 3 insertions(+), 34 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cf7d39f..d525362 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -237,7 +237,7 @@ jobs: esac - name: Install clang + bindgen for musl targets - if: matrix.job.os == 'ubuntu-latest' && contains(matrix.job.target, 'musl') + # if: matrix.job.os == 'ubuntu-latest' && contains(matrix.job.target, 'musl') shell: bash run: | set -euxo pipefail diff --git a/CHANGELOG.md b/CHANGELOG.md index 1302fde..88805cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,34 +9,3 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Other -## v0.0.2 (2025-09-13) - -### Fix - -- Revert back hacky stuff so I can test with act now -- Attempting to use pre-generated bindgens for the aws-lc-sys library -- Install openSSL differently to make this work -- Address edge case for unknown_musl targets -- Install LLVM prereqs for release flow -- Updated the release flow to install the external bindgen-cli - -## v0.0.1 (2025-09-12) - -### Feat - -- Azure Key Vault support -- GCP Secret Manager support -- Full AWS SecretsManager support -- AWS Secrets Manager support -- Added two new flags to output where gman writes logs to and where it expects the config file to live - -### Fix - -- Made the vault file location more fault tolerant -- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests - -### Refactor - -- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions -- Made the creation of the log directories a bit more fault tolerant -- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky diff --git a/Cargo.lock b/Cargo.lock index d33722f..9434e81 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gman" -version = "0.0.2" +version = "0.0.1" dependencies = [ "anyhow", "argon2", diff --git a/Cargo.toml b/Cargo.toml index fb795e7..a7b8868 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gman" -version = "0.0.2" +version = "0.0.1" edition = "2024" authors = ["Alex Clarke "] description = "Universal secret management and injection tool" From 9b5b2a603f120b862186e28eefc0c3f5058c52d0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 13 Sep 2025 22:10:00 +0000 Subject: [PATCH 05/67] =?UTF-8?q?bump:=20version=200.0.1=20=E2=86=92=200.0?= =?UTF-8?q?.2=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 31 +++++++++++++++++++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 88805cc..1302fde 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,3 +9,34 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Other +## v0.0.2 (2025-09-13) + +### Fix + +- Revert back hacky stuff so I can test with act now +- Attempting to use pre-generated bindgens for the aws-lc-sys library +- Install openSSL differently to make this work +- Address edge case for unknown_musl targets +- Install LLVM prereqs for release flow +- Updated the release flow to install the external bindgen-cli + +## v0.0.1 (2025-09-12) + +### Feat + +- Azure Key Vault support +- GCP Secret Manager support +- Full AWS SecretsManager support +- AWS Secrets Manager support +- Added two new flags to output where gman writes logs to and where it expects the config file to live + +### Fix + +- Made the vault file location more fault tolerant +- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests + +### Refactor + +- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions +- Made the creation of the log directories a bit more fault tolerant +- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky diff --git a/Cargo.lock b/Cargo.lock index 9434e81..d33722f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gman" -version = "0.0.1" +version = "0.0.2" dependencies = [ "anyhow", "argon2", diff --git a/Cargo.toml b/Cargo.toml index a7b8868..fb795e7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gman" -version = "0.0.1" +version = "0.0.2" edition = "2024" authors = ["Alex Clarke "] description = "Universal secret management and injection tool" From a8b3c185c69fd533c779eecfea61c0f36d7386cc Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sat, 13 Sep 2025 16:14:33 -0600 Subject: [PATCH 06/67] ci: fix bug for mac installs --- .github/workflows/release.yml | 2 +- CHANGELOG.md | 32 +------------------------------- Cargo.lock | 2 +- Cargo.toml | 2 +- 4 files changed, 4 insertions(+), 34 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d525362..0e09248 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -237,7 +237,7 @@ jobs: esac - name: Install clang + bindgen for musl targets - # if: matrix.job.os == 'ubuntu-latest' && contains(matrix.job.target, 'musl') + if: matrix.job.os == 'ubuntu-latest' shell: bash run: | set -euxo pipefail diff --git a/CHANGELOG.md b/CHANGELOG.md index 1302fde..2162529 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,34 +9,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Other -## v0.0.2 (2025-09-13) - -### Fix - -- Revert back hacky stuff so I can test with act now -- Attempting to use pre-generated bindgens for the aws-lc-sys library -- Install openSSL differently to make this work -- Address edge case for unknown_musl targets -- Install LLVM prereqs for release flow -- Updated the release flow to install the external bindgen-cli - -## v0.0.1 (2025-09-12) - -### Feat - -- Azure Key Vault support -- GCP Secret Manager support -- Full AWS SecretsManager support -- AWS Secrets Manager support -- Added two new flags to output where gman writes logs to and where it expects the config file to live - -### Fix - -- Made the vault file location more fault tolerant -- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests - -### Refactor - -- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions -- Made the creation of the log directories a bit more fault tolerant -- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky + Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky diff --git a/Cargo.lock b/Cargo.lock index d33722f..9434e81 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gman" -version = "0.0.2" +version = "0.0.1" dependencies = [ "anyhow", "argon2", diff --git a/Cargo.toml b/Cargo.toml index fb795e7..a7b8868 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gman" -version = "0.0.2" +version = "0.0.1" edition = "2024" authors = ["Alex Clarke "] description = "Universal secret management and injection tool" From 6c7f1c7ecde2392b1fe67de17382d66a3959c728 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 13 Sep 2025 22:15:20 +0000 Subject: [PATCH 07/67] =?UTF-8?q?bump:=20version=200.0.1=20=E2=86=92=200.0?= =?UTF-8?q?.2=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 32 ++++++++++++++++++++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2162529..71bbd17 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,3 +10,35 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Other Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky + +## v0.0.2 (2025-09-13) + +### Fix + +- Revert back hacky stuff so I can test with act now +- Attempting to use pre-generated bindgens for the aws-lc-sys library +- Install openSSL differently to make this work +- Address edge case for unknown_musl targets +- Install LLVM prereqs for release flow +- Updated the release flow to install the external bindgen-cli + +## v0.0.1 (2025-09-12) + +### Feat + +- Azure Key Vault support +- GCP Secret Manager support +- Full AWS SecretsManager support +- AWS Secrets Manager support +- Added two new flags to output where gman writes logs to and where it expects the config file to live + +### Fix + +- Made the vault file location more fault tolerant +- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests + +### Refactor + +- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions +- Made the creation of the log directories a bit more fault tolerant +- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky diff --git a/Cargo.lock b/Cargo.lock index 9434e81..d33722f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gman" -version = "0.0.1" +version = "0.0.2" dependencies = [ "anyhow", "argon2", diff --git a/Cargo.toml b/Cargo.toml index a7b8868..fb795e7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gman" -version = "0.0.1" +version = "0.0.2" edition = "2024" authors = ["Alex Clarke "] description = "Universal secret management and injection tool" From b956e956195267532e861194ca7954d4b984b902 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sat, 13 Sep 2025 16:20:40 -0600 Subject: [PATCH 08/67] ci: test using cross for all compilation targets --- .github/workflows/release.yml | 2 +- CHANGELOG.md | 33 --------------------------------- Cargo.lock | 2 +- Cargo.toml | 2 +- 4 files changed, 3 insertions(+), 36 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0e09248..bb6d153 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -224,7 +224,7 @@ jobs: target: ${{ matrix.job.target }} - uses: taiki-e/install-action@cross - if: ${{ matrix.job.use-cross }} + # if: ${{ matrix.job.use-cross }} - name: Installing needed Ubuntu dependencies if: matrix.job.os == 'ubuntu-latest' diff --git a/CHANGELOG.md b/CHANGELOG.md index 71bbd17..88805cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,36 +9,3 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Other - Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky - -## v0.0.2 (2025-09-13) - -### Fix - -- Revert back hacky stuff so I can test with act now -- Attempting to use pre-generated bindgens for the aws-lc-sys library -- Install openSSL differently to make this work -- Address edge case for unknown_musl targets -- Install LLVM prereqs for release flow -- Updated the release flow to install the external bindgen-cli - -## v0.0.1 (2025-09-12) - -### Feat - -- Azure Key Vault support -- GCP Secret Manager support -- Full AWS SecretsManager support -- AWS Secrets Manager support -- Added two new flags to output where gman writes logs to and where it expects the config file to live - -### Fix - -- Made the vault file location more fault tolerant -- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests - -### Refactor - -- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions -- Made the creation of the log directories a bit more fault tolerant -- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky diff --git a/Cargo.lock b/Cargo.lock index d33722f..9434e81 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gman" -version = "0.0.2" +version = "0.0.1" dependencies = [ "anyhow", "argon2", diff --git a/Cargo.toml b/Cargo.toml index fb795e7..a7b8868 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gman" -version = "0.0.2" +version = "0.0.1" edition = "2024" authors = ["Alex Clarke "] description = "Universal secret management and injection tool" From 9a3c7d360ca26a4cf7c763824dcbd77a1dde4619 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 13 Sep 2025 22:21:25 +0000 Subject: [PATCH 09/67] =?UTF-8?q?bump:=20version=200.0.1=20=E2=86=92=200.0?= =?UTF-8?q?.2=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 31 +++++++++++++++++++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 88805cc..1302fde 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,3 +9,34 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Other +## v0.0.2 (2025-09-13) + +### Fix + +- Revert back hacky stuff so I can test with act now +- Attempting to use pre-generated bindgens for the aws-lc-sys library +- Install openSSL differently to make this work +- Address edge case for unknown_musl targets +- Install LLVM prereqs for release flow +- Updated the release flow to install the external bindgen-cli + +## v0.0.1 (2025-09-12) + +### Feat + +- Azure Key Vault support +- GCP Secret Manager support +- Full AWS SecretsManager support +- AWS Secrets Manager support +- Added two new flags to output where gman writes logs to and where it expects the config file to live + +### Fix + +- Made the vault file location more fault tolerant +- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests + +### Refactor + +- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions +- Made the creation of the log directories a bit more fault tolerant +- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky diff --git a/Cargo.lock b/Cargo.lock index 9434e81..d33722f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gman" -version = "0.0.1" +version = "0.0.2" dependencies = [ "anyhow", "argon2", diff --git a/Cargo.toml b/Cargo.toml index a7b8868..fb795e7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gman" -version = "0.0.1" +version = "0.0.2" edition = "2024" authors = ["Alex Clarke "] description = "Universal secret management and injection tool" From 1063038c52a4dd7ff54a0bf5bbf55f89d0e427f5 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 14:36:23 -0600 Subject: [PATCH 10/67] ci: Testing new build flow --- .github/workflows/release.yml | 1239 ++++++++++++++++++--------------- 1 file changed, 676 insertions(+), 563 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bb6d153..3050c5f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,163 +18,205 @@ on: - major jobs: - bump-version: - name: bump-version - runs-on: ubuntu-latest - steps: - - name: Configure SSH for Git - if: env.ACT != 'true' - run: | - mkdir -p ~/.ssh - echo "${{ secrets.RELEASE_BOT_SSH_KEY }}" > ~/.ssh/id_ed25519 - chmod 600 ~/.ssh/id_ed25519 - ssh-keyscan -H github.com >> ~/.ssh/known_hosts - - - name: Checkout repository - if: env.ACT != 'true' - uses: actions/checkout@v3 - with: - ssh-key: ${{ secrets.RELEASE_BOT_SSH_KEY }} - fetch-depth: 0 - - - name: Checkout repository - if: env.ACT == 'true' - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: "3.10" - - - name: Install Commitizen - run: | - python -m pip install --upgrade pip - pip install commitizen - npm install -g conventional-changelog-cli - - - name: Configure Git user - run: | - git config user.name "github-actions[bot]" - git config user.email "github-actions[bot]@users.noreply.github.com" - - - name: Bump version with Commitizen - run: | - cz bump --yes --increment ${{ github.event.inputs.bump_type }} - - - name: Amend commit message to include '[skip ci]' - run: | - git commit --amend --no-edit -m "$(git log -1 --pretty=%B) [skip ci]" - - - name: Install Rust stable - uses: dtolnay/rust-toolchain@stable - - - name: Get the new version tag - id: version - run: | - mkdir -p artifacts - NEW_TAG=$(cz version --project) - echo "New version: $NEW_TAG" - echo "version=$NEW_TAG" >> $GITHUB_ENV - echo "$NEW_TAG" > artifacts/release-version - - - name: Get the previous version tag - id: prev_version - run: | - PREV_TAG=$(git describe --tags --abbrev=0 ${GITHUB_SHA}^) - echo "Previous tag: $PREV_TAG" - echo "prev_version=$PREV_TAG" >> $GITHUB_ENV - - - name: Bump Cargo.toml version - shell: bash - working-directory: ${{ github.workspace }} - env: - VERSION: ${{ env.version }} - run: | - set -euo pipefail - : "${VERSION:?env.version is empty}" - - # Ignore Act's local artifact dir noise - echo artifacts/ >> .git/info/exclude || true - - # Edit the version line right after name="gman" - sed -E -i ' - /^[[:space:]]*name[[:space:]]*=[[:space:]]*"gman"[[:space:]]*$/ { - n - s|^[[:space:]]*version[[:space:]]*=[[:space:]]*"[^"]*"|version = "'"$VERSION"'"| - } - ' Cargo.toml - - cargo update || true - - # Git config that helps in Act - git config user.name "github-actions[bot]" - git config user.email "github-actions[bot]@users.noreply.github.com" - git config --global --add safe.directory "$GITHUB_WORKSPACE" - - git status --porcelain - git diff --name-only -- Cargo.toml Cargo.lock || true - - if ! git diff --quiet -- Cargo.toml Cargo.lock; then - git add -u -- Cargo.toml Cargo.lock - git commit -m "chore: bump Cargo.toml to $VERSION" - else - echo "No changes to commit (already at $VERSION)" - fi - - - name: Generate changelog for the version bump - id: changelog - run: | - changelog=$(conventional-changelog -p angular -i CHANGELOG.md -s --from ${{ env.prev_version }} --to ${{ env.version }}) - echo "$changelog" > artifacts/changelog.md - echo "changelog_body=$(cat artifacts/changelog.md)" >> $GITHUB_ENV - - - name: Push changes - if: env.ACT != 'true' - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - git push origin --follow-tags - - - name: Upload artifacts - uses: actions/upload-artifact@v4 - with: - path: artifacts - - - name: Upload the changed Cargo files (Act) - if: env.ACT == 'true' - uses: actions/upload-artifact@v4 - with: - name: bumped-cargo-files - path: | - Cargo.toml - Cargo.lock + ################################################# TODO Uncomment job +# bump-version: +# name: bump-version +# runs-on: ubuntu-latest +# steps: +# - name: Configure SSH for Git +# if: env.ACT != 'true' +# run: | +# mkdir -p ~/.ssh +# echo "${{ secrets.RELEASE_BOT_SSH_KEY }}" > ~/.ssh/id_ed25519 +# chmod 600 ~/.ssh/id_ed25519 +# ssh-keyscan -H github.com >> ~/.ssh/known_hosts +# +# - name: Checkout repository +# if: env.ACT != 'true' +# uses: actions/checkout@v3 +# with: +# ssh-key: ${{ secrets.RELEASE_BOT_SSH_KEY }} +# fetch-depth: 0 +# +# - name: Checkout repository +# if: env.ACT == 'true' +# uses: actions/checkout@v3 +# with: +# fetch-depth: 0 +# +# - name: Set up Python +# uses: actions/setup-python@v4 +# with: +# python-version: "3.10" +# +# - name: Install Commitizen +# run: | +# python -m pip install --upgrade pip +# pip install commitizen +# npm install -g conventional-changelog-cli +# +# - name: Configure Git user +# run: | +# git config user.name "github-actions[bot]" +# git config user.email "github-actions[bot]@users.noreply.github.com" +# +# - name: Bump version with Commitizen +# run: | +# cz bump --yes --increment ${{ github.event.inputs.bump_type }} +# +# - name: Amend commit message to include '[skip ci]' +# run: | +# git commit --amend --no-edit -m "$(git log -1 --pretty=%B) [skip ci]" +# +# - name: Install Rust stable +# uses: dtolnay/rust-toolchain@stable +# +# - name: Get the new version tag +# id: version +# run: | +# mkdir -p artifacts +# NEW_TAG=$(cz version --project) +# echo "New version: $NEW_TAG" +# echo "version=$NEW_TAG" >> $GITHUB_ENV +# echo "$NEW_TAG" > artifacts/release-version +# +# - name: Get the previous version tag +# id: prev_version +# run: | +# PREV_TAG=$(git describe --tags --abbrev=0 ${GITHUB_SHA}^) +# echo "Previous tag: $PREV_TAG" +# echo "prev_version=$PREV_TAG" >> $GITHUB_ENV +# +# - name: Bump Cargo.toml version +# shell: bash +# working-directory: ${{ github.workspace }} +# env: +# VERSION: ${{ env.version }} +# run: | +# set -euo pipefail +# : "${VERSION:?env.version is empty}" +# +# # Ignore Act's local artifact dir noise +# echo artifacts/ >> .git/info/exclude || true +# +# # Edit the version line right after name="gman" +# sed -E -i ' +# /^[[:space:]]*name[[:space:]]*=[[:space:]]*"gman"[[:space:]]*$/ { +# n +# s|^[[:space:]]*version[[:space:]]*=[[:space:]]*"[^"]*"|version = "'"$VERSION"'"| +# } +# ' Cargo.toml +# +# cargo update || true +# +# # Git config that helps in Act +# git config user.name "github-actions[bot]" +# git config user.email "github-actions[bot]@users.noreply.github.com" +# git config --global --add safe.directory "$GITHUB_WORKSPACE" +# +# git status --porcelain +# git diff --name-only -- Cargo.toml Cargo.lock || true +# +# if ! git diff --quiet -- Cargo.toml Cargo.lock; then +# git add -u -- Cargo.toml Cargo.lock +# git commit -m "chore: bump Cargo.toml to $VERSION" +# else +# echo "No changes to commit (already at $VERSION)" +# fi +# +# - name: Generate changelog for the version bump +# id: changelog +# run: | +# changelog=$(conventional-changelog -p angular -i CHANGELOG.md -s --from ${{ env.prev_version }} --to ${{ env.version }}) +# echo "$changelog" > artifacts/changelog.md +# echo "changelog_body=$(cat artifacts/changelog.md)" >> $GITHUB_ENV +# +# - name: Push changes +# if: env.ACT != 'true' +# env: +# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} +# run: | +# git push origin --follow-tags +# +# - name: Upload artifacts +# uses: actions/upload-artifact@v4 +# with: +# path: artifacts +# +# - name: Upload the changed Cargo files (Act) +# if: env.ACT == 'true' +# uses: actions/upload-artifact@v4 +# with: +# name: bumped-cargo-files +# path: | +# Cargo.toml +# Cargo.lock build-release-artifacts: name: build-release - needs: [bump-version] - runs-on: ${{ matrix.job.os }} +# needs: [bump-version] ## TODO uncomment + runs-on: ${{ matrix.os }} env: RUST_BACKTRACE: 1 + BUILD_CMD: cargo strategy: fail-fast: true matrix: + include: + - target: aarch64-unknown-linux-musl + os: ubuntu-latest + use-cross: true + cargo-flags: "" + - target: aarch64-apple-darwin + os: macos-latest + use-cross: true + cargo-flags: "" + - target: aarch64-pc-windows-msvc + os: windows-latest + use-cross: true + cargo-flags: "" + - target: x86_64-apple-darwin + os: macos-latest + cargo-flags: "" + - target: x86_64-pc-windows-msvc + os: windows-latest + cargo-flags: "" + - target: x86_64-unknown-linux-musl + os: ubuntu-latest + use-cross: true + cargo-flags: "" + - target: i686-unknown-linux-musl + os: ubuntu-latest + use-cross: true + cargo-flags: "" + - target: i686-pc-windows-msvc + os: windows-latest + use-cross: true + cargo-flags: "" + - target: armv7-unknown-linux-musleabihf + os: ubuntu-latest + use-cross: true + cargo-flags: "" + - target: arm-unknown-linux-musleabihf + os: ubuntu-latest + use-cross: true + cargo-flags: "" + # prettier-ignore - job: - - { name: "macOS-arm64", os: "macOS-latest", target: "aarch64-apple-darwin", artifact_suffix: "macos-arm64", use-cross: true } - - { name: "macOS-amd64", os: "macOS-latest", target: "x86_64-apple-darwin", artifact_suffix: "macos" } - - { name: "windows-amd64", os: "windows-latest", target: "x86_64-pc-windows-msvc", artifact_suffix: "windows" } - - { name: "windows-aarch64", os: "windows-latest", target: "aarch64-pc-windows-msvc", artifact_suffix: "windows-aarch64", use-cross: true } - - { name: "linux-gnu", os: "ubuntu-latest", target: "x86_64-unknown-linux-gnu", artifact_suffix: "linux" } - - { name: "linux-musl", os: "ubuntu-latest", target: "x86_64-unknown-linux-musl", artifact_suffix: "linux-musl", use-cross: true, } - - { name: "linux-aarch64-gnu", os: "ubuntu-latest", target: "aarch64-unknown-linux-gnu", artifact_suffix: "aarch64-gnu", use-cross: true, test-bin: "--bin gman" } - - { name: "linux-aarch64-musl", os: "ubuntu-latest", target: "aarch64-unknown-linux-musl", artifact_suffix: "aarch64-musl", use-cross: true, test-bin: "--bin gman" } - - { name: "linux-arm-gnu", os: "ubuntu-latest", target: "arm-unknown-linux-gnueabi", artifact_suffix: "armv6-gnu", use-cross: true, test-bin: "--bin gman" } - - { name: "linux-arm-musl", os: "ubuntu-latest", target: "arm-unknown-linux-musleabihf", artifact_suffix: "armv6-musl", use-cross: true, test-bin: "--bin gman" } - - { name: "linux-armv7-gnu", os: "ubuntu-latest", target: "armv7-unknown-linux-gnueabihf", artifact_suffix: "armv7-gnu", use-cross: true, test-bin: "--bin gman" } - - { name: "linux-armv7-musl", os: "ubuntu-latest", target: "armv7-unknown-linux-musleabihf", artifact_suffix: "armv7-musl", use-cross: true, test-bin: "--bin gman" } - rust: [stable] +# job: +# - { name: "macOS-arm64", os: "macOS-latest", target: "aarch64-apple-darwin", artifact_suffix: "macos-arm64", use-cross: true } +# - { name: "macOS-amd64", os: "macOS-latest", target: "x86_64-apple-darwin", artifact_suffix: "macos" } +# - { name: "windows-amd64", os: "windows-latest", target: "x86_64-pc-windows-msvc", artifact_suffix: "windows" } +# - { name: "windows-aarch64", os: "windows-latest", target: "aarch64-pc-windows-msvc", artifact_suffix: "windows-aarch64", use-cross: true } +# - { name: "linux-gnu", os: "ubuntu-latest", target: "x86_64-unknown-linux-gnu", artifact_suffix: "linux" } +# - { name: "linux-musl", os: "ubuntu-latest", target: "x86_64-unknown-linux-musl", artifact_suffix: "linux-musl", use-cross: true, } +# - { name: "linux-aarch64-gnu", os: "ubuntu-latest", target: "aarch64-unknown-linux-gnu", artifact_suffix: "aarch64-gnu", use-cross: true, test-bin: "--bin gman" } +# - { name: "linux-aarch64-musl", os: "ubuntu-latest", target: "aarch64-unknown-linux-musl", artifact_suffix: "aarch64-musl", use-cross: true, test-bin: "--bin gman" } +# - { name: "linux-arm-gnu", os: "ubuntu-latest", target: "arm-unknown-linux-gnueabi", artifact_suffix: "armv6-gnu", use-cross: true, test-bin: "--bin gman" } +# - { name: "linux-arm-musl", os: "ubuntu-latest", target: "arm-unknown-linux-musleabihf", artifact_suffix: "armv6-musl", use-cross: true, test-bin: "--bin gman" } +# - { name: "linux-armv7-gnu", os: "ubuntu-latest", target: "armv7-unknown-linux-gnueabihf", artifact_suffix: "armv7-gnu", use-cross: true, test-bin: "--bin gman" } +# - { name: "linux-armv7-musl", os: "ubuntu-latest", target: "armv7-unknown-linux-musleabihf", artifact_suffix: "armv7-musl", use-cross: true, test-bin: "--bin gman" } +# rust: [stable] steps: - name: Check if actor is repository owner @@ -194,445 +236,516 @@ jobs: git fetch --all git pull - - name: Get bumped Cargo files (Act) - if: env.ACT == 'true' - uses: actions/download-artifact@v4 - with: - name: bumped-cargo-files - path: ${{ github.workspace }} +## TODO Uncomment for sure +# - name: Get bumped Cargo files (Act) +# if: env.ACT == 'true' +# uses: actions/download-artifact@v4 +# with: +# name: bumped-cargo-files +# path: ${{ github.workspace }} - - uses: actions/cache@v3 - name: Cache Cargo registry - with: - path: ~/.cargo/registry - key: ${{ runner.os }}-cargo-registry-${{ hashFiles('Cargo.lock') }} +# - uses: actions/cache@v3 +# name: Cache Cargo registry +# with: +# path: ~/.cargo/registry +# key: ${{ runner.os }}-cargo-registry-${{ hashFiles('Cargo.lock') }} - - uses: actions/cache@v3 - if: startsWith(matrix.job.name, 'linux-') - with: - path: ~/.cargo/bin - key: ${{ runner.os }}-cargo-bin-${{ hashFiles('.github/workflows/release.yml') }} +# - uses: actions/cache@v3 +# if: startsWith(matrix.job.name, 'linux-') +# with: +# path: ~/.cargo/bin +# key: ${{ runner.os }}-cargo-bin-${{ hashFiles('.github/workflows/release.yml') }} - uses: dtolnay/rust-toolchain@stable name: Set Rust toolchain with: - targets: ${{ matrix.job.target }} + targets: ${{ matrix.target }} - - uses: taiki-e/setup-cross-toolchain-action@v1 - with: - # NB: sets CARGO_BUILD_TARGET evar - do not need --target flag in build - target: ${{ matrix.job.target }} +# - uses: taiki-e/setup-cross-toolchain-action@v1 +# with: +# NB: sets CARGO_BUILD_TARGET evar - do not need --target flag in build +# target: ${{ matrix.job.target }} - - uses: taiki-e/install-action@cross +# - uses: taiki-e/install-action@cross # if: ${{ matrix.job.use-cross }} - - name: Installing needed Ubuntu dependencies - if: matrix.job.os == 'ubuntu-latest' + - name: Install cross + if: matrix.use-cross + uses: taiki-e/install-action@v2 + with: + tool: cross + + - name: Overwrite build command env variable + if: matrix.use-cross + shell: bash + run: echo "BUILD_CMD=cross" >> $GITHUB_ENV + +# - name: Installing needed Ubuntu dependencies +# if: matrix.job.os == 'ubuntu-latest' +# shell: bash +# run: | +# sudo apt-get -y update +# case ${{ matrix.job.target }} in +# arm*-linux-*) sudo apt-get -y install gcc-arm-linux-gnueabihf ;; +# aarch64-*-linux-*) sudo apt-get -y install gcc-aarch64-linux-gnu ;; +# esac +# +# - name: Install clang + bindgen for musl targets +# if: matrix.job.os == 'ubuntu-latest' +# shell: bash +# run: | +# set -euxo pipefail +# sudo apt-get -y update +# sudo apt-get -y install clang llvm-dev libclang-dev pkg-config cmake make build-essential musl-tools +# # force install to avoid stale cache issues +# cargo install --force --locked bindgen-cli +# echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" +# # help bindgen find libclang +# echo "LIBCLANG_PATH=$(llvm-config --libdir)" >> "$GITHUB_ENV" +# # quick visibility checks (fail early if missing) +# which bindgen +# bindgen --version +# clang --version +# +# - name: Configure bindgen target flags for musl cross-compile +# if: matrix.job.os == 'ubuntu-latest' && contains(matrix.job.target, 'musl') +# shell: bash +# run: | +# set -euo pipefail +# triple='${{ matrix.job.target }}' +# # Bindgen needs explicit target to avoid host header confusion +# echo "BINDGEN_EXTRA_CLANG_ARGS_${triple//-/_}=--target=$triple" >> "$GITHUB_ENV" +# # CC hints help any C sub-builds in the tree +# case "$triple" in +# x86_64-unknown-linux-musl) +# echo "CC_x86_64_unknown_linux_musl=musl-gcc" >> "$GITHUB_ENV" +# ;; +# aarch64-unknown-linux-musl) +# echo "CC_aarch64_unknown_linux_musl=aarch64-linux-musl-gcc" >> "$GITHUB_ENV" +# ;; +# arm-unknown-linux-musleabihf) +# echo "CC_arm_unknown_linux_musleabihf=arm-linux-musleabihf-gcc" >> "$GITHUB_ENV" +# ;; +# armv7-unknown-linux-musleabihf) +# echo "CC_armv7_unknown_linux_musleabihf=armv7-linux-musleabihf-gcc" >> "$GITHUB_ENV" +# ;; +# esac +# echo "PKG_CONFIG_ALLOW_CROSS=1" >> "$GITHUB_ENV" +# +# - name: OpenSSL (vendored) toolchain for musl +# if: startsWith(matrix.job.name, 'linux-') && contains(matrix.job.target, 'musl') +# shell: bash +# run: | +# # Tools needed for building vendored OpenSSL +# sudo apt-get -y update +# sudo apt-get -y install musl-tools pkg-config perl make cmake +# +# # Let openssl-sys know we're cross-compiling and want static +# echo "OPENSSL_STATIC=1" >> $GITHUB_ENV +# echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV +# +# # Set the right C compiler per musl target (some provided by taiki-e/setup-cross-toolchain-action) +# case "${{ matrix.job.target }}" in +# x86_64-unknown-linux-musl) +# echo "CC_x86_64_unknown_linux_musl=musl-gcc" >> $GITHUB_ENV +# ;; +# aarch64-unknown-linux-musl) +# # If your toolchain action installs aarch64-linux-musl-gcc, use that: +# echo "CC_aarch64_unknown_linux_musl=aarch64-linux-musl-gcc" >> $GITHUB_ENV +# ;; +# arm-unknown-linux-musleabihf) +# echo "CC_arm_unknown_linux_musleabihf=arm-linux-musleabihf-gcc" >> $GITHUB_ENV +# ;; +# armv7-unknown-linux-musleabihf) +# echo "CC_armv7_unknown_linux_musleabihf=armv7-linux-musleabihf-gcc" >> $GITHUB_ENV +# ;; +# esac + - name: Show Version Information (Rust, cargo, GCC) shell: bash run: | - sudo apt-get -y update - case ${{ matrix.job.target }} in - arm*-linux-*) sudo apt-get -y install gcc-arm-linux-gnueabihf ;; - aarch64-*-linux-*) sudo apt-get -y install gcc-aarch64-linux-gnu ;; - esac + gcc --version || true + rustup -V + rustup toolchain list + rustup default + cargo -V + rustc -V - - name: Install clang + bindgen for musl targets - if: matrix.job.os == 'ubuntu-latest' - shell: bash - run: | - set -euxo pipefail - sudo apt-get -y update - sudo apt-get -y install clang llvm-dev libclang-dev pkg-config cmake make build-essential musl-tools - # force install to avoid stale cache issues - cargo install --force --locked bindgen-cli - echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - # help bindgen find libclang - echo "LIBCLANG_PATH=$(llvm-config --libdir)" >> "$GITHUB_ENV" - # quick visibility checks (fail early if missing) - which bindgen - bindgen --version - clang --version - - - name: Configure bindgen target flags for musl cross-compile - if: matrix.job.os == 'ubuntu-latest' && contains(matrix.job.target, 'musl') - shell: bash - run: | - set -euo pipefail - triple='${{ matrix.job.target }}' - # Bindgen needs explicit target to avoid host header confusion - echo "BINDGEN_EXTRA_CLANG_ARGS_${triple//-/_}=--target=$triple" >> "$GITHUB_ENV" - # CC hints help any C sub-builds in the tree - case "$triple" in - x86_64-unknown-linux-musl) - echo "CC_x86_64_unknown_linux_musl=musl-gcc" >> "$GITHUB_ENV" - ;; - aarch64-unknown-linux-musl) - echo "CC_aarch64_unknown_linux_musl=aarch64-linux-musl-gcc" >> "$GITHUB_ENV" - ;; - arm-unknown-linux-musleabihf) - echo "CC_arm_unknown_linux_musleabihf=arm-linux-musleabihf-gcc" >> "$GITHUB_ENV" - ;; - armv7-unknown-linux-musleabihf) - echo "CC_armv7_unknown_linux_musleabihf=armv7-linux-musleabihf-gcc" >> "$GITHUB_ENV" - ;; - esac - echo "PKG_CONFIG_ALLOW_CROSS=1" >> "$GITHUB_ENV" - - - name: OpenSSL (vendored) toolchain for musl - if: startsWith(matrix.job.name, 'linux-') && contains(matrix.job.target, 'musl') - shell: bash - run: | - # Tools needed for building vendored OpenSSL - sudo apt-get -y update - sudo apt-get -y install musl-tools pkg-config perl make cmake - - # Let openssl-sys know we're cross-compiling and want static - echo "OPENSSL_STATIC=1" >> $GITHUB_ENV - echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV - - # Set the right C compiler per musl target (some provided by taiki-e/setup-cross-toolchain-action) - case "${{ matrix.job.target }}" in - x86_64-unknown-linux-musl) - echo "CC_x86_64_unknown_linux_musl=musl-gcc" >> $GITHUB_ENV - ;; - aarch64-unknown-linux-musl) - # If your toolchain action installs aarch64-linux-musl-gcc, use that: - echo "CC_aarch64_unknown_linux_musl=aarch64-linux-musl-gcc" >> $GITHUB_ENV - ;; - arm-unknown-linux-musleabihf) - echo "CC_arm_unknown_linux_musleabihf=arm-linux-musleabihf-gcc" >> $GITHUB_ENV - ;; - armv7-unknown-linux-musleabihf) - echo "CC_armv7_unknown_linux_musleabihf=armv7-linux-musleabihf-gcc" >> $GITHUB_ENV - ;; - esac +# - name: Build +# shell: bash +# run: | +# set -euxo pipefail +# cross build --release --target=${{ matrix.job.target }} +# # if [[ "${{ matrix.job.use-cross || 'false' }}" == 'true' ]]; then +# # cross build --release --locked --target=${{ matrix.job.target }} --verbose +# # else +# # cargo build --release --locked --target=${{ matrix.job.target }} --verbose +# # fi +# +# - name: Verify file +# shell: bash +# run: | +# file target/${{ matrix.job.target }}/release/gman +# +# - name: Test +# if: matrix.job.target != 'aarch64-apple-darwin' && matrix.job.target != 'aarch64-pc-windows-msvc' +# shell: bash +# run: | +# set -euxo pipefail +# if [[ "${{ matrix.job.use-cross || 'false' }}" == 'true' ]]; then +# cross test --release --locked --target=${{ matrix.job.target }} --verbose ${{ matrix.job.test-bin }} +# else +# cargo test --release --locked --target=${{ matrix.job.target }} --verbose ${{ matrix.job.test-bin }} +# fi +# +# - name: Test +# if: matrix.job.target != 'aarch64-apple-darwin' && matrix.job.target != 'aarch64-pc-windows-msvc' +# run: cargo test --release --verbose --target=${{ matrix.job.target }} ${{ matrix.job.test-bin }} +# +# - name: Packaging final binary (Windows) +# if: matrix.job.os == 'windows-latest' +# shell: bash +# run: | +# cd target/${{ matrix.job.target }}/release +# BINARY_NAME=gman.exe +# if [ "${{ matrix.job.target }}" != "aarch64-pc-windows-msvc" ]; then +# # strip the binary +# strip $BINARY_NAME +# fi +# RELEASE_NAME=gman-${{ matrix.job.artifact_suffix }} +# mkdir -p artifacts +# tar czvf $RELEASE_NAME.tar.gz $BINARY_NAME +# # create sha checksum files +# certutil -hashfile $RELEASE_NAME.tar.gz sha256 | grep -E [A-Fa-f0-9]{64} > $RELEASE_NAME.sha256 +# echo "RELEASE_NAME=$RELEASE_NAME" >> $GITHUB_ENV +# +# - name: Packaging final binary (macOS and Linux) +# if: matrix.job.os != 'windows-latest' +# shell: bash +# run: | +# # set the right strip executable +# STRIP="strip"; +# case ${{ matrix.job.target }} in +# arm*-linux-*) STRIP="arm-linux-gnueabihf-strip" ;; +# aarch64-*-linux-*) STRIP="aarch64-linux-gnu-strip" ;; +# esac; +# cd target/${{ matrix.job.target }}/release +# BINARY_NAME=gman +# # strip the binary +# "$STRIP" "$BINARY_NAME" +# RELEASE_NAME=gman-${{ matrix.job.artifact_suffix }} +# tar czvf $RELEASE_NAME.tar.gz $BINARY_NAME +# # create sha checksum files +# shasum -a 256 $RELEASE_NAME.tar.gz > $RELEASE_NAME.sha256 +# echo "RELEASE_NAME=$RELEASE_NAME" >> $GITHUB_ENV - name: Build shell: bash + run: $BUILD_CMD build --locked --release --target=${{ matrix.target }} ${{ matrix.cargo-flags }} + + - name: Build Archive + shell: bash + id: package + env: + target: ${{ matrix.target }} + version: ${{ steps.check-tag.outputs.version }} run: | set -euxo pipefail - cross build --release --target=${{ matrix.job.target }} - # if [[ "${{ matrix.job.use-cross || 'false' }}" == 'true' ]]; then - # cross build --release --locked --target=${{ matrix.job.target }} --verbose - # else - # cargo build --release --locked --target=${{ matrix.job.target }} --verbose - # fi - - name: Verify file - shell: bash - run: | - file target/${{ matrix.job.target }}/release/gman + bin=${GITHUB_REPOSITORY##*/} + dist_dir=`pwd`/dist + name=$bin-$version-$target + executable=target/$target/release/$bin - - name: Test - if: matrix.job.target != 'aarch64-apple-darwin' && matrix.job.target != 'aarch64-pc-windows-msvc' - shell: bash - run: | - set -euxo pipefail - if [[ "${{ matrix.job.use-cross || 'false' }}" == 'true' ]]; then - cross test --release --locked --target=${{ matrix.job.target }} --verbose ${{ matrix.job.test-bin }} + if [[ "$RUNNER_OS" == "Windows" ]]; then + executable=$executable.exe + fi + + mkdir $dist_dir + cp $executable $dist_dir + cd $dist_dir + + if [[ "$RUNNER_OS" == "Windows" ]]; then + archive=$dist_dir/$name.zip + 7z a $archive * + echo "archive=dist/$name.zip" >> $GITHUB_OUTPUT else - cargo test --release --locked --target=${{ matrix.job.target }} --verbose ${{ matrix.job.test-bin }} + archive=$dist_dir/$name.tar.gz + tar -czf $archive * + echo "archive=dist/$name.tar.gz" >> $GITHUB_OUTPUT fi - - name: Test - if: matrix.job.target != 'aarch64-apple-darwin' && matrix.job.target != 'aarch64-pc-windows-msvc' - run: cargo test --release --verbose --target=${{ matrix.job.target }} ${{ matrix.job.test-bin }} +# - name: Publish Archive +# uses: softprops/action-gh-release@v2 +# if: ${{ startsWith(github.ref, 'refs/tags/') }} +# with: +# draft: false +# files: ${{ steps.package.outputs.archive }} +# prerelease: ${{ steps.check-tag.outputs.rc == 'true' }} - - name: Packaging final binary (Windows) - if: matrix.job.os == 'windows-latest' - shell: bash - run: | - cd target/${{ matrix.job.target }}/release - BINARY_NAME=gman.exe - if [ "${{ matrix.job.target }}" != "aarch64-pc-windows-msvc" ]; then - # strip the binary - strip $BINARY_NAME - fi - RELEASE_NAME=gman-${{ matrix.job.artifact_suffix }} - mkdir -p artifacts - tar czvf $RELEASE_NAME.tar.gz $BINARY_NAME - # create sha checksum files - certutil -hashfile $RELEASE_NAME.tar.gz sha256 | grep -E [A-Fa-f0-9]{64} > $RELEASE_NAME.sha256 - echo "RELEASE_NAME=$RELEASE_NAME" >> $GITHUB_ENV +# - name: Add artifacts +# run: | +# mkdir -p artifacts +# cp target/${{ matrix.job.target }}/release/${{ env.RELEASE_NAME }}.tar.gz artifacts/ +# cp target/${{ matrix.job.target }}/release/${{ env.RELEASE_NAME }}.sha256 artifacts/ +# +# - name: Upload artifacts +# uses: actions/upload-artifact@v4 +# with: +# name: artifacts-${{ env.RELEASE_NAME }} +# path: artifacts +# overwrite: true - - name: Packaging final binary (macOS and Linux) - if: matrix.job.os != 'windows-latest' - shell: bash - run: | - # set the right strip executable - STRIP="strip"; - case ${{ matrix.job.target }} in - arm*-linux-*) STRIP="arm-linux-gnueabihf-strip" ;; - aarch64-*-linux-*) STRIP="aarch64-linux-gnu-strip" ;; - esac; - cd target/${{ matrix.job.target }}/release - BINARY_NAME=gman - # strip the binary - "$STRIP" "$BINARY_NAME" - RELEASE_NAME=gman-${{ matrix.job.artifact_suffix }} - tar czvf $RELEASE_NAME.tar.gz $BINARY_NAME - # create sha checksum files - shasum -a 256 $RELEASE_NAME.tar.gz > $RELEASE_NAME.sha256 - echo "RELEASE_NAME=$RELEASE_NAME" >> $GITHUB_ENV - - name: Add artifacts - run: | - mkdir -p artifacts - cp target/${{ matrix.job.target }}/release/${{ env.RELEASE_NAME }}.tar.gz artifacts/ - cp target/${{ matrix.job.target }}/release/${{ env.RELEASE_NAME }}.sha256 artifacts/ +## TODO Uncomment for sure +####################### +## Post publish jobs ## +####################### - - name: Upload artifacts - uses: actions/upload-artifact@v4 - with: - name: artifacts-${{ env.RELEASE_NAME }} - path: artifacts - overwrite: true - - publish-github-release: - name: publish-github-release - needs: [build-release-artifacts] - runs-on: ubuntu-latest - steps: - - name: Check if actor is repository owner - if: ${{ github.actor != github.repository_owner && env.ACT != 'true' }} - run: | - echo "You are not authorized to run this workflow." - exit 1 - - - name: Checkout repository - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - - name: Download all artifacts - uses: actions/download-artifact@v4 - with: - path: artifacts - merge-multiple: true - - - name: Ensure repository is up-to-date - if: env.ACT != 'true' - run: | - git fetch --all - git pull - - - name: Set environment variables - run: | - release_version="$(cat ./artifacts/release-version)" - echo "RELEASE_VERSION=$release_version" >> $GITHUB_ENV - changelog_body="$(cat ./artifacts/changelog.md)" - echo "changelog_body=$(cat artifacts/changelog.md)" >> $GITHUB_ENV - - - name: Validate release environment variables - run: | - echo "Release version: ${{ env.RELEASE_VERSION }}" - echo "Changelog body: ${{ env.changelog_body }}" - - - name: Create a GitHub Release - if: env.ACT != 'true' - uses: softprops/action-gh-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - files: | - artifacts/gman-macos-arm64.tar.gz - artifacts/gman-macos-arm64.sha256 - artifacts/gman-macos.tar.gz - artifacts/gman-macos.sha256 - artifacts/gman-windows.tar.gz - artifacts/gman-windows.sha256 - artifacts/gman-windows-aarch64.tar.gz - artifacts/gman-windows-aarch64.sha256 - artifacts/gman-linux.tar.gz - artifacts/gman-linux.sha256 - artifacts/gman-linux-musl.tar.gz - artifacts/gman-linux-musl.sha256 - artifacts/gman-aarch64-gnu.tar.gz - artifacts/gman-aarch64-gnu.sha256 - artifacts/gman-aarch64-musl.tar.gz - artifacts/gman-aarch64-musl.sha256 - artifacts/gman-armv6-gnu.tar.gz - artifacts/gman-armv6-gnu.sha256 - artifacts/gman-armv6-musl.tar.gz - artifacts/gman-armv6-musl.sha256 - artifacts/gman-armv7-gnu.tar.gz - artifacts/gman-armv7-gnu.sha256 - artifacts/gman-armv7-musl.tar.gz - artifacts/gman-armv7-musl.sha256 - tag_name: v${{ env.RELEASE_VERSION }} - name: "v${{ env.RELEASE_VERSION }}" - body: ${{ env.changelog_body }} - draft: false - prerelease: false - - - name: Upload artifacts - uses: actions/upload-artifact@v4 - with: - path: artifacts - overwrite: true - - publish-chocolatey-package: - needs: [publish-github-release] - name: Publish Chocolatey Package - runs-on: windows-latest - steps: - - name: Check if actor is repository owner - if: ${{ github.actor != github.repository_owner && env.ACT != 'true' }} - run: | - echo "You are not authorized to run this workflow." - exit 1 - - - name: Checkout repository - uses: actions/checkout@v4 - with: - fetch-depth: 1 - - - name: Get release artifacts - uses: actions/download-artifact@v4 - with: - path: artifacts - merge-multiple: true - - - name: Set release assets and version - shell: pwsh - run: | - # Read the first column from the SHA256 file - $windows_sha = Get-Content ./artifacts/gman-windows.sha256 | ForEach-Object { $_.Split(' ')[0] } - Add-Content -Path $env:GITHUB_ENV -Value "WINDOWS_SHA=$windows_sha" - - # Read the release version from the release-version file - $release_version = Get-Content ./artifacts/release-version - Add-Content -Path $env:GITHUB_ENV -Value "RELEASE_VERSION=$release_version" - - - name: Validate release environment variables - run: | - echo "Release SHA windows: ${{ env.WINDOWS_SHA }}" - echo "Release version: ${{ env.RELEASE_VERSION }}" - - - name: Package and Publish package to Chocolatey - if: env.ACT != 'true' - run: | - mkdir ./deployment/chocolatey/tools - # Run packaging script - python "./deployment/chocolatey/packager.py" ${{ env.RELEASE_VERSION }} "./deployment/chocolatey/gman.nuspec.template" "./deployment/chocolatey/gman.nuspec" ${{ env.WINDOWS_SHA }} - python "./deployment/chocolatey/packager.py" ${{ env.RELEASE_VERSION }} "./deployment/chocolatey/chocolateyinstall.ps1.template" "./deployment/chocolatey/tools/chocolateyinstall.ps1" ${{ env.WINDOWS_SHA }} - - # Publish to Chocolatey - cd ./deployment/chocolatey - choco pack - echo y | choco install gman -dv -s . - $version = gman --version - $version = $version -replace " ", "." - choco push $version.nupkg -s https://push.chocolatey.org/ --api-key ${{ secrets.CHOCOLATEY_API_KEY }}; - - publish-homebrew-formula: - needs: [publish-github-release] - name: Update Homebrew formulas - runs-on: ubuntu-latest - steps: - - name: Check if actor is repository owner - if: ${{ github.actor != github.repository_owner && env.ACT != 'true' }} - run: | - echo "You are not authorized to run this workflow." - exit 1 - - - name: Checkout repository - uses: actions/checkout@v4 - with: - fetch-depth: 1 - - - name: Get release artifacts - uses: actions/download-artifact@v4 - with: - path: artifacts - merge-multiple: true - - - name: Set release assets and version - shell: bash - run: | - # Set environment variables - macos_sha="$(cat ./artifacts/gman-macos.sha256 | awk '{print $1}')" - echo "MACOS_SHA=$macos_sha" >> $GITHUB_ENV - macos_sha_arm="$(cat ./artifacts/gman-macos-arm64.sha256 | awk '{print $1}')" - echo "MACOS_SHA_ARM=$macos_sha_arm" >> $GITHUB_ENV - linux_sha="$(cat ./artifacts/gman-linux-musl.sha256 | awk '{print $1}')" - echo "LINUX_SHA=$linux_sha" >> $GITHUB_ENV - release_version="$(cat ./artifacts/release-version)" - echo "RELEASE_VERSION=$release_version" >> $GITHUB_ENV - - - name: Validate release environment variables - run: | - echo "Release SHA macos: ${{ env.MACOS_SHA }}" - echo "Release SHA macos-arm: ${{ env.MACOS_SHA_ARM }}" - echo "Release SHA linux musl: ${{ env.LINUX_SHA }}" - echo "Release version: ${{ env.RELEASE_VERSION }}" - - - name: Execute Homebrew packaging script - if: env.ACT != 'true' - run: | - # run packaging script - python "./deployment/homebrew/packager.py" ${{ env.RELEASE_VERSION }} "./deployment/homebrew/gman.rb.template" "./gman.rb" ${{ env.MACOS_SHA }} ${{ env.MACOS_SHA_ARM }} ${{ env.LINUX_SHA }} - - - name: Push changes to Homebrew tap - if: env.ACT != 'true' - env: - TOKEN: ${{ secrets.GMAN_GITHUB_TOKEN }} - run: | - # push to Git - git config --global user.name "Dark-Alex-17" - git config --global user.email "alex.j.tusa@gmail.com" - git clone https://Dark-Alex-17:${{ secrets.GMAN_GITHUB_TOKEN }}@github.com/Dark-Alex-17/homebrew-gman.git - rm homebrew-gman/Formula/gman.rb - cp gman.rb homebrew-gman/Formula - cd homebrew-gman - git add . - git diff-index --quiet HEAD || git commit -am "Update formula for G-Man release ${{ env.RELEASE_VERSION }}" - git push https://$TOKEN@github.com/Dark-Alex-17/homebrew-gman.git - - publish-crate: - needs: publish-github-release - name: Publish Crate - runs-on: ubuntu-latest - steps: - - name: Check if actor is repository owner - if: ${{ github.actor != github.repository_owner && env.ACT != 'true' }} - run: | - echo "You are not authorized to run this workflow." - exit 1 - - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Get bumped Cargo files (Act) - if: env.ACT == 'true' - uses: actions/download-artifact@v4 - with: - name: bumped-cargo-files - path: ${{ github.workspace }} - - - name: Ensure repository is up-to-date - if: env.ACT != 'true' - run: | - git fetch --all - git pull - - - uses: actions/cache@v3 - name: Cache Cargo registry - with: - path: ~/.cargo/registry - key: ${{ runner.os }}-cargo-registry-${{ hashFiles('Cargo.lock') }} - - - uses: actions/cache@v3 - with: - path: ~/.cargo/bin - key: ${{ runner.os }}-cargo-bin-${{ hashFiles('.github/workflows/release.yml') }} - - - name: Install Rust stable - uses: dtolnay/rust-toolchain@stable - - - uses: katyo/publish-crates@v2 - if: env.ACT != 'true' - with: - registry-token: ${{ secrets.CARGO_REGISTRY_TOKEN }} +# publish-github-release: +# name: publish-github-release +# needs: [build-release-artifacts] +# runs-on: ubuntu-latest +# steps: +# - name: Check if actor is repository owner +# if: ${{ github.actor != github.repository_owner && env.ACT != 'true' }} +# run: | +# echo "You are not authorized to run this workflow." +# exit 1 +# +# - name: Checkout repository +# uses: actions/checkout@v3 +# with: +# fetch-depth: 0 +# +# - name: Download all artifacts +# uses: actions/download-artifact@v4 +# with: +# path: artifacts +# merge-multiple: true +# +# - name: Ensure repository is up-to-date +# if: env.ACT != 'true' +# run: | +# git fetch --all +# git pull +# +# - name: Set environment variables +# run: | +# release_version="$(cat ./artifacts/release-version)" +# echo "RELEASE_VERSION=$release_version" >> $GITHUB_ENV +# changelog_body="$(cat ./artifacts/changelog.md)" +# echo "changelog_body=$(cat artifacts/changelog.md)" >> $GITHUB_ENV +# +# - name: Validate release environment variables +# run: | +# echo "Release version: ${{ env.RELEASE_VERSION }}" +# echo "Changelog body: ${{ env.changelog_body }}" +# +# - name: Create a GitHub Release +# if: env.ACT != 'true' +# uses: softprops/action-gh-release@v1 +# env: +# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} +# with: +# files: | +# artifacts/gman-macos-arm64.tar.gz +# artifacts/gman-macos-arm64.sha256 +# artifacts/gman-macos.tar.gz +# artifacts/gman-macos.sha256 +# artifacts/gman-windows.tar.gz +# artifacts/gman-windows.sha256 +# artifacts/gman-windows-aarch64.tar.gz +# artifacts/gman-windows-aarch64.sha256 +# artifacts/gman-linux.tar.gz +# artifacts/gman-linux.sha256 +# artifacts/gman-linux-musl.tar.gz +# artifacts/gman-linux-musl.sha256 +# artifacts/gman-aarch64-gnu.tar.gz +# artifacts/gman-aarch64-gnu.sha256 +# artifacts/gman-aarch64-musl.tar.gz +# artifacts/gman-aarch64-musl.sha256 +# artifacts/gman-armv6-gnu.tar.gz +# artifacts/gman-armv6-gnu.sha256 +# artifacts/gman-armv6-musl.tar.gz +# artifacts/gman-armv6-musl.sha256 +# artifacts/gman-armv7-gnu.tar.gz +# artifacts/gman-armv7-gnu.sha256 +# artifacts/gman-armv7-musl.tar.gz +# artifacts/gman-armv7-musl.sha256 +# tag_name: v${{ env.RELEASE_VERSION }} +# name: "v${{ env.RELEASE_VERSION }}" +# body: ${{ env.changelog_body }} +# draft: false +# prerelease: false +# +# - name: Upload artifacts +# uses: actions/upload-artifact@v4 +# with: +# path: artifacts +# overwrite: true +# +# publish-chocolatey-package: +# needs: [publish-github-release] +# name: Publish Chocolatey Package +# runs-on: windows-latest +# steps: +# - name: Check if actor is repository owner +# if: ${{ github.actor != github.repository_owner && env.ACT != 'true' }} +# run: | +# echo "You are not authorized to run this workflow." +# exit 1 +# +# - name: Checkout repository +# uses: actions/checkout@v4 +# with: +# fetch-depth: 1 +# +# - name: Get release artifacts +# uses: actions/download-artifact@v4 +# with: +# path: artifacts +# merge-multiple: true +# +# - name: Set release assets and version +# shell: pwsh +# run: | +# # Read the first column from the SHA256 file +# $windows_sha = Get-Content ./artifacts/gman-windows.sha256 | ForEach-Object { $_.Split(' ')[0] } +# Add-Content -Path $env:GITHUB_ENV -Value "WINDOWS_SHA=$windows_sha" +# +# # Read the release version from the release-version file +# $release_version = Get-Content ./artifacts/release-version +# Add-Content -Path $env:GITHUB_ENV -Value "RELEASE_VERSION=$release_version" +# +# - name: Validate release environment variables +# run: | +# echo "Release SHA windows: ${{ env.WINDOWS_SHA }}" +# echo "Release version: ${{ env.RELEASE_VERSION }}" +# +# - name: Package and Publish package to Chocolatey +# if: env.ACT != 'true' +# run: | +# mkdir ./deployment/chocolatey/tools +# # Run packaging script +# python "./deployment/chocolatey/packager.py" ${{ env.RELEASE_VERSION }} "./deployment/chocolatey/gman.nuspec.template" "./deployment/chocolatey/gman.nuspec" ${{ env.WINDOWS_SHA }} +# python "./deployment/chocolatey/packager.py" ${{ env.RELEASE_VERSION }} "./deployment/chocolatey/chocolateyinstall.ps1.template" "./deployment/chocolatey/tools/chocolateyinstall.ps1" ${{ env.WINDOWS_SHA }} +# +# # Publish to Chocolatey +# cd ./deployment/chocolatey +# choco pack +# echo y | choco install gman -dv -s . +# $version = gman --version +# $version = $version -replace " ", "." +# choco push $version.nupkg -s https://push.chocolatey.org/ --api-key ${{ secrets.CHOCOLATEY_API_KEY }}; +# +# publish-homebrew-formula: +# needs: [publish-github-release] +# name: Update Homebrew formulas +# runs-on: ubuntu-latest +# steps: +# - name: Check if actor is repository owner +# if: ${{ github.actor != github.repository_owner && env.ACT != 'true' }} +# run: | +# echo "You are not authorized to run this workflow." +# exit 1 +# +# - name: Checkout repository +# uses: actions/checkout@v4 +# with: +# fetch-depth: 1 +# +# - name: Get release artifacts +# uses: actions/download-artifact@v4 +# with: +# path: artifacts +# merge-multiple: true +# +# - name: Set release assets and version +# shell: bash +# run: | +# # Set environment variables +# macos_sha="$(cat ./artifacts/gman-macos.sha256 | awk '{print $1}')" +# echo "MACOS_SHA=$macos_sha" >> $GITHUB_ENV +# macos_sha_arm="$(cat ./artifacts/gman-macos-arm64.sha256 | awk '{print $1}')" +# echo "MACOS_SHA_ARM=$macos_sha_arm" >> $GITHUB_ENV +# linux_sha="$(cat ./artifacts/gman-linux-musl.sha256 | awk '{print $1}')" +# echo "LINUX_SHA=$linux_sha" >> $GITHUB_ENV +# release_version="$(cat ./artifacts/release-version)" +# echo "RELEASE_VERSION=$release_version" >> $GITHUB_ENV +# +# - name: Validate release environment variables +# run: | +# echo "Release SHA macos: ${{ env.MACOS_SHA }}" +# echo "Release SHA macos-arm: ${{ env.MACOS_SHA_ARM }}" +# echo "Release SHA linux musl: ${{ env.LINUX_SHA }}" +# echo "Release version: ${{ env.RELEASE_VERSION }}" +# +# - name: Execute Homebrew packaging script +# if: env.ACT != 'true' +# run: | +# # run packaging script +# python "./deployment/homebrew/packager.py" ${{ env.RELEASE_VERSION }} "./deployment/homebrew/gman.rb.template" "./gman.rb" ${{ env.MACOS_SHA }} ${{ env.MACOS_SHA_ARM }} ${{ env.LINUX_SHA }} +# +# - name: Push changes to Homebrew tap +# if: env.ACT != 'true' +# env: +# TOKEN: ${{ secrets.GMAN_GITHUB_TOKEN }} +# run: | +# # push to Git +# git config --global user.name "Dark-Alex-17" +# git config --global user.email "alex.j.tusa@gmail.com" +# git clone https://Dark-Alex-17:${{ secrets.GMAN_GITHUB_TOKEN }}@github.com/Dark-Alex-17/homebrew-gman.git +# rm homebrew-gman/Formula/gman.rb +# cp gman.rb homebrew-gman/Formula +# cd homebrew-gman +# git add . +# git diff-index --quiet HEAD || git commit -am "Update formula for G-Man release ${{ env.RELEASE_VERSION }}" +# git push https://$TOKEN@github.com/Dark-Alex-17/homebrew-gman.git +# +# publish-crate: +# needs: publish-github-release +# name: Publish Crate +# runs-on: ubuntu-latest +# steps: +# - name: Check if actor is repository owner +# if: ${{ github.actor != github.repository_owner && env.ACT != 'true' }} +# run: | +# echo "You are not authorized to run this workflow." +# exit 1 +# +# - name: Checkout +# uses: actions/checkout@v4 +# with: +# fetch-depth: 0 +# +# - name: Get bumped Cargo files (Act) +# if: env.ACT == 'true' +# uses: actions/download-artifact@v4 +# with: +# name: bumped-cargo-files +# path: ${{ github.workspace }} +# +# - name: Ensure repository is up-to-date +# if: env.ACT != 'true' +# run: | +# git fetch --all +# git pull +# +# - uses: actions/cache@v3 +# name: Cache Cargo registry +# with: +# path: ~/.cargo/registry +# key: ${{ runner.os }}-cargo-registry-${{ hashFiles('Cargo.lock') }} +# +# - uses: actions/cache@v3 +# with: +# path: ~/.cargo/bin +# key: ${{ runner.os }}-cargo-bin-${{ hashFiles('.github/workflows/release.yml') }} +# +# - name: Install Rust stable +# uses: dtolnay/rust-toolchain@stable +# +# - uses: katyo/publish-crates@v2 +# if: env.ACT != 'true' +# with: +# registry-token: ${{ secrets.CARGO_REGISTRY_TOKEN }} From b5ad6227986e87f80008059a7633d50934a8dbc9 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 14:40:54 -0600 Subject: [PATCH 11/67] ci: Test disabling aws-lc-sys crate --- Cargo.lock | 42 +++++++++++++++--------------------------- Cargo.toml | 6 +++--- 2 files changed, 18 insertions(+), 30 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d33722f..354f3e3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1501,9 +1501,9 @@ dependencies = [ [[package]] name = "gcloud-sdk" -version = "0.28.1" +version = "0.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41dcccf7c0cc0986cb5f476854a5c63b95bab4835f12884704f6aa33ac7d14bc" +checksum = "7fe603014c94ee883f514ea12a3df0ad99da67124472bd3c52ee7fed0ccd4ea1" dependencies = [ "async-trait", "bytes", @@ -1583,7 +1583,6 @@ dependencies = [ "assert_cmd", "async-trait", "aws-config", - "aws-lc-sys", "aws-sdk-secretsmanager", "azure_identity", "azure_security_keyvault_secrets", @@ -1604,8 +1603,6 @@ dependencies = [ "indoc", "log", "log4rs", - "openssl", - "openssl-sys", "predicates", "pretty_assertions", "proptest", @@ -2206,9 +2203,9 @@ dependencies = [ [[package]] name = "libredox" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" +checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ "bitflags", "libc", @@ -2473,15 +2470,6 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" -[[package]] -name = "openssl-src" -version = "300.5.2+3.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d270b79e2926f5150189d475bc7e9d2c69f9c4697b185fa917d5a32b792d21b4" -dependencies = [ - "cc", -] - [[package]] name = "openssl-sys" version = "0.9.109" @@ -2490,7 +2478,6 @@ checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" dependencies = [ "cc", "libc", - "openssl-src", "pkg-config", "vcpkg", ] @@ -3291,15 +3278,15 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" [[package]] name = "serde" -version = "1.0.220" +version = "1.0.223" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ceecad4c782e936ac90ecfd6b56532322e3262b14320abf30ce89a92ffdbfe22" +checksum = "a505d71960adde88e293da5cb5eda57093379f64e61cf77bf0e6a63af07a7bac" dependencies = [ "serde_core", "serde_derive", @@ -3317,18 +3304,18 @@ dependencies = [ [[package]] name = "serde_core" -version = "1.0.220" +version = "1.0.223" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddba47394f3b862d6ff6efdbd26ca4673e3566a307880a0ffb98f274bbe0ec32" +checksum = "20f57cbd357666aa7b3ac84a90b4ea328f1d4ddb6772b430caa5d9e1309bb9e9" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.220" +version = "1.0.223" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60e1f3b1761e96def5ec6d04a6e7421c0404fa3cf5c0155f1e2848fae3d8cc08" +checksum = "3d428d07faf17e306e699ec1e91996e5a165ba5d6bce5b5155173e91a8a01a56" dependencies = [ "proc-macro2", "quote", @@ -3337,14 +3324,15 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.143" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ "itoa", "memchr", "ryu", "serde", + "serde_core", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index fb795e7..ef43b5d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -58,9 +58,9 @@ gcloud-sdk = { version = "0.28.1", features = [ crc32c = "0.6.8" azure_identity = "0.27.0" azure_security_keyvault_secrets = "0.6.0" -openssl = { version = "0.10", features = ["vendored"] } -openssl-sys = { version = "0.9", features = ["vendored"] } -aws-lc-sys = { version = "0.31.0", features = ["bindgen"] } +#openssl = { version = "0.10", features = ["vendored"] } +#openssl-sys = { version = "0.9", features = ["vendored"] } +#aws-lc-sys = { version = "0.31.0", features = ["bindgen"] } [dev-dependencies] pretty_assertions = "1.4.1" From 8b3c9c822e6beb7fa47528d437a2a9fea042b8f1 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 15:03:56 -0600 Subject: [PATCH 12/67] ci: Testing manual install of bindgen --- .github/workflows/release.yml | 44 ++++++++++++++++++++++++++++++----- Cargo.lock | 12 ++++++++++ Cargo.toml | 5 ++-- 3 files changed, 52 insertions(+), 9 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3050c5f..1401881 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -280,12 +280,44 @@ jobs: shell: bash run: echo "BUILD_CMD=cross" >> $GITHUB_ENV -# - name: Installing needed Ubuntu dependencies -# if: matrix.job.os == 'ubuntu-latest' -# shell: bash -# run: | -# sudo apt-get -y update -# case ${{ matrix.job.target }} in + - name: Installing needed Ubuntu dependencies + if: matrix.os == 'ubuntu-latest' + shell: bash + run: | + sudo apt-get -y update + sudo apt install -y librust-bindgen+clap-dev \ + librust-bindgen+default-dev \ + librust-bindgen+env-logger-dev \ + librust-bindgen+log-dev \ + librust-bindgen+logging-dev \ + librust-bindgen+runtime-dev \ + librust-bindgen+static-dev \ + librust-bindgen+which-dev \ + librust-bindgen-dev \ + librust-cbindgen+clap-dev \ + librust-cbindgen-dev \ + librust-wasm-bindgen+default-dev \ + librust-wasm-bindgen+serde-dev \ + librust-wasm-bindgen+serde-json-dev \ + librust-wasm-bindgen+serde-serialize-dev \ + librust-wasm-bindgen+spans-dev \ + librust-wasm-bindgen+strict-macro-dev \ + librust-wasm-bindgen+xxx-debug-only-print-generated-code-dev \ + librust-wasm-bindgen-backend+extra-traits-dev \ + librust-wasm-bindgen-backend-dev \ + librust-wasm-bindgen-dev \ + librust-wasm-bindgen-macro+spans-dev \ + librust-wasm-bindgen-macro+strict-macro-dev \ + librust-wasm-bindgen-macro-dev \ + librust-wasm-bindgen-macro-support+extra-traits-dev \ + librust-wasm-bindgen-macro-support+spans-dev \ + librust-wasm-bindgen-macro-support-dev \ + librust-wasm-bindgen-shared-dev \ + librust-wasm-bindgen-webidl-dev \ + bindgen-0.56 \ + bindgen \ + cbindgen +# case ${{ matrix.target }} in # arm*-linux-*) sudo apt-get -y install gcc-arm-linux-gnueabihf ;; # aarch64-*-linux-*) sudo apt-get -y install gcc-aarch64-linux-gnu ;; # esac diff --git a/Cargo.lock b/Cargo.lock index 354f3e3..9b4adfa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1583,6 +1583,7 @@ dependencies = [ "assert_cmd", "async-trait", "aws-config", + "aws-lc-sys", "aws-sdk-secretsmanager", "azure_identity", "azure_security_keyvault_secrets", @@ -1603,6 +1604,7 @@ dependencies = [ "indoc", "log", "log4rs", + "openssl", "predicates", "pretty_assertions", "proptest", @@ -2470,6 +2472,15 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" +[[package]] +name = "openssl-src" +version = "300.5.2+3.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d270b79e2926f5150189d475bc7e9d2c69f9c4697b185fa917d5a32b792d21b4" +dependencies = [ + "cc", +] + [[package]] name = "openssl-sys" version = "0.9.109" @@ -2478,6 +2489,7 @@ checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" dependencies = [ "cc", "libc", + "openssl-src", "pkg-config", "vcpkg", ] diff --git a/Cargo.toml b/Cargo.toml index ef43b5d..ceeeaad 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -58,9 +58,8 @@ gcloud-sdk = { version = "0.28.1", features = [ crc32c = "0.6.8" azure_identity = "0.27.0" azure_security_keyvault_secrets = "0.6.0" -#openssl = { version = "0.10", features = ["vendored"] } -#openssl-sys = { version = "0.9", features = ["vendored"] } -#aws-lc-sys = { version = "0.31.0", features = ["bindgen"] } +openssl = { version = "0.10", features = ["vendored"] } +aws-lc-sys = { version = "0.31.0", features = ["bindgen"] } [dev-dependencies] pretty_assertions = "1.4.1" From f19153b19606e7cfbefe2701e7837162503cffc6 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 15:08:30 -0600 Subject: [PATCH 13/67] ci: enable the universe apt repository --- .github/workflows/release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1401881..12720cd 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -284,6 +284,7 @@ jobs: if: matrix.os == 'ubuntu-latest' shell: bash run: | + sudo add-apt-repository universe sudo apt-get -y update sudo apt install -y librust-bindgen+clap-dev \ librust-bindgen+default-dev \ From 25c428ddbd83ec7ab92dc8d5c5663d5a65fb60fb Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 15:21:52 -0600 Subject: [PATCH 14/67] ci: Attempt to use pre-built target binaries for aws-lc-sys --- .github/workflows/release.yml | 57 ++++------------------------------- 1 file changed, 6 insertions(+), 51 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 12720cd..99006a5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -171,10 +171,6 @@ jobs: os: macos-latest use-cross: true cargo-flags: "" - - target: aarch64-pc-windows-msvc - os: windows-latest - use-cross: true - cargo-flags: "" - target: x86_64-apple-darwin os: macos-latest cargo-flags: "" @@ -185,7 +181,7 @@ jobs: os: ubuntu-latest use-cross: true cargo-flags: "" - - target: i686-unknown-linux-musl + - target: i686-unknown-linux-gnu os: ubuntu-latest use-cross: true cargo-flags: "" @@ -193,14 +189,6 @@ jobs: os: windows-latest use-cross: true cargo-flags: "" - - target: armv7-unknown-linux-musleabihf - os: ubuntu-latest - use-cross: true - cargo-flags: "" - - target: arm-unknown-linux-musleabihf - os: ubuntu-latest - use-cross: true - cargo-flags: "" # prettier-ignore # job: @@ -280,44 +268,11 @@ jobs: shell: bash run: echo "BUILD_CMD=cross" >> $GITHUB_ENV - - name: Installing needed Ubuntu dependencies - if: matrix.os == 'ubuntu-latest' - shell: bash - run: | - sudo add-apt-repository universe - sudo apt-get -y update - sudo apt install -y librust-bindgen+clap-dev \ - librust-bindgen+default-dev \ - librust-bindgen+env-logger-dev \ - librust-bindgen+log-dev \ - librust-bindgen+logging-dev \ - librust-bindgen+runtime-dev \ - librust-bindgen+static-dev \ - librust-bindgen+which-dev \ - librust-bindgen-dev \ - librust-cbindgen+clap-dev \ - librust-cbindgen-dev \ - librust-wasm-bindgen+default-dev \ - librust-wasm-bindgen+serde-dev \ - librust-wasm-bindgen+serde-json-dev \ - librust-wasm-bindgen+serde-serialize-dev \ - librust-wasm-bindgen+spans-dev \ - librust-wasm-bindgen+strict-macro-dev \ - librust-wasm-bindgen+xxx-debug-only-print-generated-code-dev \ - librust-wasm-bindgen-backend+extra-traits-dev \ - librust-wasm-bindgen-backend-dev \ - librust-wasm-bindgen-dev \ - librust-wasm-bindgen-macro+spans-dev \ - librust-wasm-bindgen-macro+strict-macro-dev \ - librust-wasm-bindgen-macro-dev \ - librust-wasm-bindgen-macro-support+extra-traits-dev \ - librust-wasm-bindgen-macro-support+spans-dev \ - librust-wasm-bindgen-macro-support-dev \ - librust-wasm-bindgen-shared-dev \ - librust-wasm-bindgen-webidl-dev \ - bindgen-0.56 \ - bindgen \ - cbindgen +# - name: Installing needed Ubuntu dependencies +# if: matrix.os == 'ubuntu-latest' +# shell: bash +# run: | +# sudo apt-get -y update # case ${{ matrix.target }} in # arm*-linux-*) sudo apt-get -y install gcc-arm-linux-gnueabihf ;; # aarch64-*-linux-*) sudo apt-get -y install gcc-aarch64-linux-gnu ;; From 1e34429f52f1cfb11347b76a88bbb7776cc57f70 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 15:25:09 -0600 Subject: [PATCH 15/67] ci: Force install the latest libclang --- .github/workflows/release.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 99006a5..c14b231 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -268,11 +268,12 @@ jobs: shell: bash run: echo "BUILD_CMD=cross" >> $GITHUB_ENV -# - name: Installing needed Ubuntu dependencies -# if: matrix.os == 'ubuntu-latest' -# shell: bash -# run: | -# sudo apt-get -y update + - name: Installing needed Ubuntu dependencies + if: matrix.os == 'ubuntu-latest' + shell: bash + run: | + sudo apt-get -y update + sudo apt-get install -y libclang # case ${{ matrix.target }} in # arm*-linux-*) sudo apt-get -y install gcc-arm-linux-gnueabihf ;; # aarch64-*-linux-*) sudo apt-get -y install gcc-aarch64-linux-gnu ;; From e412f01c0aa3389408413da41830fa30382b5908 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 15:28:13 -0600 Subject: [PATCH 16/67] ci: add the universe repository for ubuntu --- .github/workflows/release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c14b231..d604e42 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -272,6 +272,7 @@ jobs: if: matrix.os == 'ubuntu-latest' shell: bash run: | + sudo add-apt-repository universe sudo apt-get -y update sudo apt-get install -y libclang # case ${{ matrix.target }} in From 9aea77661b02c8fe128f57b6d8816c1279a502b3 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 15:38:14 -0600 Subject: [PATCH 17/67] ci: Install libclang using the official llvm installation method --- .github/workflows/release.yml | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d604e42..0ce89c6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -268,13 +268,29 @@ jobs: shell: bash run: echo "BUILD_CMD=cross" >> $GITHUB_ENV - - name: Installing needed Ubuntu dependencies + - name: Install latest LLVM/Clang if: matrix.os == 'ubuntu-latest' - shell: bash run: | - sudo add-apt-repository universe - sudo apt-get -y update - sudo apt-get install -y libclang + wget https://apt.llvm.org/llvm.sh + chmod +x llvm.sh + # omit the version to get the latest stable for your Ubuntu (24.04 "noble" on ubuntu-latest) + sudo ./llvm.sh all + # ensure libclang dev package is present (adjust the "22" if a newer major exists) + sudo apt-get update + sudo apt-get install -y libclang-22-dev + + # Make libclang discoverable by bindgen/clang-sys + - name: Export LIBCLANG_PATH + if: matrix.os == 'ubuntu-latest' + run: | + echo "LIBCLANG_PATH=$(llvm-config-22 --libdir)" >> "$GITHUB_ENV" + ls -l "$LIBCLANG_PATH"/libclang*.so || true + +# - name: Installing needed Ubuntu dependencies +# if: matrix.os == 'ubuntu-latest' +# shell: bash +# run: | +# sudo apt-get -y update # case ${{ matrix.target }} in # arm*-linux-*) sudo apt-get -y install gcc-arm-linux-gnueabihf ;; # aarch64-*-linux-*) sudo apt-get -y install gcc-aarch64-linux-gnu ;; From 53ce30e0b162faed8ada54341696ecb005e2e3ac Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 15:40:27 -0600 Subject: [PATCH 18/67] ci: change llvm version --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0ce89c6..6201a9f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -277,13 +277,13 @@ jobs: sudo ./llvm.sh all # ensure libclang dev package is present (adjust the "22" if a newer major exists) sudo apt-get update - sudo apt-get install -y libclang-22-dev + sudo apt-get install -y libclang-20-dev # Make libclang discoverable by bindgen/clang-sys - name: Export LIBCLANG_PATH if: matrix.os == 'ubuntu-latest' run: | - echo "LIBCLANG_PATH=$(llvm-config-22 --libdir)" >> "$GITHUB_ENV" + echo "LIBCLANG_PATH=$(llvm-config-20 --libdir)" >> "$GITHUB_ENV" ls -l "$LIBCLANG_PATH"/libclang*.so || true # - name: Installing needed Ubuntu dependencies From ba64e8141db06f6f1fcf1019780f6a9755b90ecf Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 15:45:34 -0600 Subject: [PATCH 19/67] ci: try again without i686 windows --- .github/workflows/release.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6201a9f..51caace 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -185,10 +185,6 @@ jobs: os: ubuntu-latest use-cross: true cargo-flags: "" - - target: i686-pc-windows-msvc - os: windows-latest - use-cross: true - cargo-flags: "" # prettier-ignore # job: From 9963d9cd0b91b415371d1e7b482d6374dcd1272d Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 15:53:47 -0600 Subject: [PATCH 20/67] ci: install the generic libclang-dev --- .github/workflows/release.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 51caace..42f740d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -273,14 +273,14 @@ jobs: sudo ./llvm.sh all # ensure libclang dev package is present (adjust the "22" if a newer major exists) sudo apt-get update - sudo apt-get install -y libclang-20-dev + sudo apt-get install -y libclang-20-dev libclang-dev # Make libclang discoverable by bindgen/clang-sys - - name: Export LIBCLANG_PATH - if: matrix.os == 'ubuntu-latest' - run: | - echo "LIBCLANG_PATH=$(llvm-config-20 --libdir)" >> "$GITHUB_ENV" - ls -l "$LIBCLANG_PATH"/libclang*.so || true +# - name: Export LIBCLANG_PATH +# if: matrix.os == 'ubuntu-latest' +# run: | +# echo "LIBCLANG_PATH=$(llvm-config-20 --libdir)" >> "$GITHUB_ENV" +# ls -l "$LIBCLANG_PATH"/libclang*.so || true # - name: Installing needed Ubuntu dependencies # if: matrix.os == 'ubuntu-latest' From 396cb4c3e44b9d74604474de954384c0c5f9b819 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 16:01:17 -0600 Subject: [PATCH 21/67] ci: finalize the OS build choices --- .github/workflows/release.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 42f740d..91212b5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -171,6 +171,10 @@ jobs: os: macos-latest use-cross: true cargo-flags: "" + - target: aarch64_pc_windows_msvc + os: windows-latest + use-cross: true + cargo-flags: "" - target: x86_64-apple-darwin os: macos-latest cargo-flags: "" @@ -181,10 +185,6 @@ jobs: os: ubuntu-latest use-cross: true cargo-flags: "" - - target: i686-unknown-linux-gnu - os: ubuntu-latest - use-cross: true - cargo-flags: "" # prettier-ignore # job: From b326e7ed4c97fd5ef4766e5e4e5f2e1d4dd1d4f4 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 16:06:35 -0600 Subject: [PATCH 22/67] ci: Fix typo in windows ARM target name --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 91212b5..41ef26f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -171,7 +171,7 @@ jobs: os: macos-latest use-cross: true cargo-flags: "" - - target: aarch64_pc_windows_msvc + - target: aarch64-pc-windows-msvc os: windows-latest use-cross: true cargo-flags: "" From c6bf2e10dbb95d16952db6501b53d43c2b8af146 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 16:17:49 -0600 Subject: [PATCH 23/67] build: gated the openssl crate to linux and mac MUSL builds only to fix Windows --- Cargo.toml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index ceeeaad..aefd9ab 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -58,9 +58,14 @@ gcloud-sdk = { version = "0.28.1", features = [ crc32c = "0.6.8" azure_identity = "0.27.0" azure_security_keyvault_secrets = "0.6.0" -openssl = { version = "0.10", features = ["vendored"] } aws-lc-sys = { version = "0.31.0", features = ["bindgen"] } +[target.'cfg(all(target_os="linux", target_env="musl"))'.dependencies] +openssl = { version = "0.10", features = ["vendored"] } + +[target.'cfg(target_os="macos")'.dependencies] +openssl = { version = "0.10", features = ["vendored"] } + [dev-dependencies] pretty_assertions = "1.4.1" proptest = "1.5.0" From cc5d4cd45d85da94127a0c98fc8530c15c59b379 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 16:44:12 -0600 Subject: [PATCH 24/67] ci: Test full GH release --- .github/workflows/release.yml | 560 +++++++++++++--------------------- 1 file changed, 210 insertions(+), 350 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 41ef26f..efe308b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,143 +18,142 @@ on: - major jobs: - ################################################# TODO Uncomment job -# bump-version: -# name: bump-version -# runs-on: ubuntu-latest -# steps: -# - name: Configure SSH for Git -# if: env.ACT != 'true' -# run: | -# mkdir -p ~/.ssh -# echo "${{ secrets.RELEASE_BOT_SSH_KEY }}" > ~/.ssh/id_ed25519 -# chmod 600 ~/.ssh/id_ed25519 -# ssh-keyscan -H github.com >> ~/.ssh/known_hosts -# -# - name: Checkout repository -# if: env.ACT != 'true' -# uses: actions/checkout@v3 -# with: -# ssh-key: ${{ secrets.RELEASE_BOT_SSH_KEY }} -# fetch-depth: 0 -# -# - name: Checkout repository -# if: env.ACT == 'true' -# uses: actions/checkout@v3 -# with: -# fetch-depth: 0 -# -# - name: Set up Python -# uses: actions/setup-python@v4 -# with: -# python-version: "3.10" -# -# - name: Install Commitizen -# run: | -# python -m pip install --upgrade pip -# pip install commitizen -# npm install -g conventional-changelog-cli -# -# - name: Configure Git user -# run: | -# git config user.name "github-actions[bot]" -# git config user.email "github-actions[bot]@users.noreply.github.com" -# -# - name: Bump version with Commitizen -# run: | -# cz bump --yes --increment ${{ github.event.inputs.bump_type }} -# -# - name: Amend commit message to include '[skip ci]' -# run: | -# git commit --amend --no-edit -m "$(git log -1 --pretty=%B) [skip ci]" -# -# - name: Install Rust stable -# uses: dtolnay/rust-toolchain@stable -# -# - name: Get the new version tag -# id: version -# run: | -# mkdir -p artifacts -# NEW_TAG=$(cz version --project) -# echo "New version: $NEW_TAG" -# echo "version=$NEW_TAG" >> $GITHUB_ENV -# echo "$NEW_TAG" > artifacts/release-version -# -# - name: Get the previous version tag -# id: prev_version -# run: | -# PREV_TAG=$(git describe --tags --abbrev=0 ${GITHUB_SHA}^) -# echo "Previous tag: $PREV_TAG" -# echo "prev_version=$PREV_TAG" >> $GITHUB_ENV -# -# - name: Bump Cargo.toml version -# shell: bash -# working-directory: ${{ github.workspace }} -# env: -# VERSION: ${{ env.version }} -# run: | -# set -euo pipefail -# : "${VERSION:?env.version is empty}" -# -# # Ignore Act's local artifact dir noise -# echo artifacts/ >> .git/info/exclude || true -# -# # Edit the version line right after name="gman" -# sed -E -i ' -# /^[[:space:]]*name[[:space:]]*=[[:space:]]*"gman"[[:space:]]*$/ { -# n -# s|^[[:space:]]*version[[:space:]]*=[[:space:]]*"[^"]*"|version = "'"$VERSION"'"| -# } -# ' Cargo.toml -# -# cargo update || true -# -# # Git config that helps in Act -# git config user.name "github-actions[bot]" -# git config user.email "github-actions[bot]@users.noreply.github.com" -# git config --global --add safe.directory "$GITHUB_WORKSPACE" -# -# git status --porcelain -# git diff --name-only -- Cargo.toml Cargo.lock || true -# -# if ! git diff --quiet -- Cargo.toml Cargo.lock; then -# git add -u -- Cargo.toml Cargo.lock -# git commit -m "chore: bump Cargo.toml to $VERSION" -# else -# echo "No changes to commit (already at $VERSION)" -# fi -# -# - name: Generate changelog for the version bump -# id: changelog -# run: | -# changelog=$(conventional-changelog -p angular -i CHANGELOG.md -s --from ${{ env.prev_version }} --to ${{ env.version }}) -# echo "$changelog" > artifacts/changelog.md -# echo "changelog_body=$(cat artifacts/changelog.md)" >> $GITHUB_ENV -# -# - name: Push changes -# if: env.ACT != 'true' -# env: -# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -# run: | -# git push origin --follow-tags -# -# - name: Upload artifacts -# uses: actions/upload-artifact@v4 -# with: -# path: artifacts -# -# - name: Upload the changed Cargo files (Act) -# if: env.ACT == 'true' -# uses: actions/upload-artifact@v4 -# with: -# name: bumped-cargo-files -# path: | -# Cargo.toml -# Cargo.lock + bump-version: + name: bump-version + runs-on: ubuntu-latest + steps: + - name: Configure SSH for Git + if: env.ACT != 'true' + run: | + mkdir -p ~/.ssh + echo "${{ secrets.RELEASE_BOT_SSH_KEY }}" > ~/.ssh/id_ed25519 + chmod 600 ~/.ssh/id_ed25519 + ssh-keyscan -H github.com >> ~/.ssh/known_hosts + + - name: Checkout repository + if: env.ACT != 'true' + uses: actions/checkout@v3 + with: + ssh-key: ${{ secrets.RELEASE_BOT_SSH_KEY }} + fetch-depth: 0 + + - name: Checkout repository + if: env.ACT == 'true' + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "3.10" + + - name: Install Commitizen + run: | + python -m pip install --upgrade pip + pip install commitizen + npm install -g conventional-changelog-cli + + - name: Configure Git user + run: | + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + + - name: Bump version with Commitizen + run: | + cz bump --yes --increment ${{ github.event.inputs.bump_type }} + + - name: Amend commit message to include '[skip ci]' + run: | + git commit --amend --no-edit -m "$(git log -1 --pretty=%B) [skip ci]" + + - name: Install Rust stable + uses: dtolnay/rust-toolchain@stable + + - name: Get the new version tag + id: version + run: | + mkdir -p artifacts + NEW_TAG=$(cz version --project) + echo "New version: $NEW_TAG" + echo "version=$NEW_TAG" >> $GITHUB_ENV + echo "$NEW_TAG" > artifacts/release-version + + - name: Get the previous version tag + id: prev_version + run: | + PREV_TAG=$(git describe --tags --abbrev=0 ${GITHUB_SHA}^) + echo "Previous tag: $PREV_TAG" + echo "prev_version=$PREV_TAG" >> $GITHUB_ENV + + - name: Bump Cargo.toml version + shell: bash + working-directory: ${{ github.workspace }} + env: + VERSION: ${{ env.version }} + run: | + set -euo pipefail + : "${VERSION:?env.version is empty}" + + # Ignore Act's local artifact dir noise + echo artifacts/ >> .git/info/exclude || true + + # Edit the version line right after name="gman" + sed -E -i ' + /^[[:space:]]*name[[:space:]]*=[[:space:]]*"gman"[[:space:]]*$/ { + n + s|^[[:space:]]*version[[:space:]]*=[[:space:]]*"[^"]*"|version = "'"$VERSION"'"| + } + ' Cargo.toml + + cargo update || true + + # Git config that helps in Act + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + git config --global --add safe.directory "$GITHUB_WORKSPACE" + + git status --porcelain + git diff --name-only -- Cargo.toml Cargo.lock || true + + if ! git diff --quiet -- Cargo.toml Cargo.lock; then + git add -u -- Cargo.toml Cargo.lock + git commit -m "chore: bump Cargo.toml to $VERSION" + else + echo "No changes to commit (already at $VERSION)" + fi + + - name: Generate changelog for the version bump + id: changelog + run: | + changelog=$(conventional-changelog -p angular -i CHANGELOG.md -s --from ${{ env.prev_version }} --to ${{ env.version }}) + echo "$changelog" > artifacts/changelog.md + echo "changelog_body=$(cat artifacts/changelog.md)" >> $GITHUB_ENV + + - name: Push changes + if: env.ACT != 'true' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + git push origin --follow-tags + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + path: artifacts + + - name: Upload the changed Cargo files (Act) + if: env.ACT == 'true' + uses: actions/upload-artifact@v4 + with: + name: bumped-cargo-files + path: | + Cargo.toml + Cargo.lock build-release-artifacts: name: build-release -# needs: [bump-version] ## TODO uncomment + needs: [bump-version] runs-on: ${{ matrix.os }} env: RUST_BACKTRACE: 1 @@ -166,42 +165,32 @@ jobs: - target: aarch64-unknown-linux-musl os: ubuntu-latest use-cross: true + artifact-suffix: aarch64-musl cargo-flags: "" - target: aarch64-apple-darwin os: macos-latest use-cross: true + artifact-suffix: macos-arm64 cargo-flags: "" - target: aarch64-pc-windows-msvc os: windows-latest use-cross: true + artifact-suffix: windows-aarch64 cargo-flags: "" - target: x86_64-apple-darwin os: macos-latest + artifact-suffix: macos cargo-flags: "" - target: x86_64-pc-windows-msvc os: windows-latest + artifact-suffix: windows cargo-flags: "" - target: x86_64-unknown-linux-musl os: ubuntu-latest + artifact-suffix: linux-musl use-cross: true cargo-flags: "" - # prettier-ignore -# job: -# - { name: "macOS-arm64", os: "macOS-latest", target: "aarch64-apple-darwin", artifact_suffix: "macos-arm64", use-cross: true } -# - { name: "macOS-amd64", os: "macOS-latest", target: "x86_64-apple-darwin", artifact_suffix: "macos" } -# - { name: "windows-amd64", os: "windows-latest", target: "x86_64-pc-windows-msvc", artifact_suffix: "windows" } -# - { name: "windows-aarch64", os: "windows-latest", target: "aarch64-pc-windows-msvc", artifact_suffix: "windows-aarch64", use-cross: true } -# - { name: "linux-gnu", os: "ubuntu-latest", target: "x86_64-unknown-linux-gnu", artifact_suffix: "linux" } -# - { name: "linux-musl", os: "ubuntu-latest", target: "x86_64-unknown-linux-musl", artifact_suffix: "linux-musl", use-cross: true, } -# - { name: "linux-aarch64-gnu", os: "ubuntu-latest", target: "aarch64-unknown-linux-gnu", artifact_suffix: "aarch64-gnu", use-cross: true, test-bin: "--bin gman" } -# - { name: "linux-aarch64-musl", os: "ubuntu-latest", target: "aarch64-unknown-linux-musl", artifact_suffix: "aarch64-musl", use-cross: true, test-bin: "--bin gman" } -# - { name: "linux-arm-gnu", os: "ubuntu-latest", target: "arm-unknown-linux-gnueabi", artifact_suffix: "armv6-gnu", use-cross: true, test-bin: "--bin gman" } -# - { name: "linux-arm-musl", os: "ubuntu-latest", target: "arm-unknown-linux-musleabihf", artifact_suffix: "armv6-musl", use-cross: true, test-bin: "--bin gman" } -# - { name: "linux-armv7-gnu", os: "ubuntu-latest", target: "armv7-unknown-linux-gnueabihf", artifact_suffix: "armv7-gnu", use-cross: true, test-bin: "--bin gman" } -# - { name: "linux-armv7-musl", os: "ubuntu-latest", target: "armv7-unknown-linux-musleabihf", artifact_suffix: "armv7-musl", use-cross: true, test-bin: "--bin gman" } -# rust: [stable] - steps: - name: Check if actor is repository owner if: ${{ github.actor != github.repository_owner && env.ACT != 'true' }} @@ -220,39 +209,42 @@ jobs: git fetch --all git pull -## TODO Uncomment for sure -# - name: Get bumped Cargo files (Act) -# if: env.ACT == 'true' -# uses: actions/download-artifact@v4 -# with: -# name: bumped-cargo-files -# path: ${{ github.workspace }} + - name: Download all artifacts + uses: actions/download-artifact@v4 + with: + path: artifacts + merge-multiple: true -# - uses: actions/cache@v3 -# name: Cache Cargo registry -# with: -# path: ~/.cargo/registry -# key: ${{ runner.os }}-cargo-registry-${{ hashFiles('Cargo.lock') }} + - name: Ensure repository is up-to-date + if: env.ACT != 'true' + run: | + git fetch --all + git pull -# - uses: actions/cache@v3 -# if: startsWith(matrix.job.name, 'linux-') -# with: -# path: ~/.cargo/bin -# key: ${{ runner.os }}-cargo-bin-${{ hashFiles('.github/workflows/release.yml') }} + - name: Set environment variables + run: | + release_version="$(cat ./artifacts/release-version)" + echo "RELEASE_VERSION=$release_version" >> $GITHUB_ENV + changelog_body="$(cat ./artifacts/changelog.md)" + echo "changelog_body=$(cat artifacts/changelog.md)" >> $GITHUB_ENV + + - name: Validate release environment variables + run: | + echo "Release version: ${{ env.RELEASE_VERSION }}" + echo "Changelog body: ${{ env.changelog_body }}" + + - name: Get bumped Cargo files (Act) + if: env.ACT == 'true' + uses: actions/download-artifact@v4 + with: + name: bumped-cargo-files + path: ${{ github.workspace }} - uses: dtolnay/rust-toolchain@stable name: Set Rust toolchain with: targets: ${{ matrix.target }} -# - uses: taiki-e/setup-cross-toolchain-action@v1 -# with: -# NB: sets CARGO_BUILD_TARGET evar - do not need --target flag in build -# target: ${{ matrix.job.target }} - -# - uses: taiki-e/install-action@cross - # if: ${{ matrix.job.use-cross }} - - name: Install cross if: matrix.use-cross uses: taiki-e/install-action@v2 @@ -275,93 +267,6 @@ jobs: sudo apt-get update sudo apt-get install -y libclang-20-dev libclang-dev - # Make libclang discoverable by bindgen/clang-sys -# - name: Export LIBCLANG_PATH -# if: matrix.os == 'ubuntu-latest' -# run: | -# echo "LIBCLANG_PATH=$(llvm-config-20 --libdir)" >> "$GITHUB_ENV" -# ls -l "$LIBCLANG_PATH"/libclang*.so || true - -# - name: Installing needed Ubuntu dependencies -# if: matrix.os == 'ubuntu-latest' -# shell: bash -# run: | -# sudo apt-get -y update -# case ${{ matrix.target }} in -# arm*-linux-*) sudo apt-get -y install gcc-arm-linux-gnueabihf ;; -# aarch64-*-linux-*) sudo apt-get -y install gcc-aarch64-linux-gnu ;; -# esac -# -# - name: Install clang + bindgen for musl targets -# if: matrix.job.os == 'ubuntu-latest' -# shell: bash -# run: | -# set -euxo pipefail -# sudo apt-get -y update -# sudo apt-get -y install clang llvm-dev libclang-dev pkg-config cmake make build-essential musl-tools -# # force install to avoid stale cache issues -# cargo install --force --locked bindgen-cli -# echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" -# # help bindgen find libclang -# echo "LIBCLANG_PATH=$(llvm-config --libdir)" >> "$GITHUB_ENV" -# # quick visibility checks (fail early if missing) -# which bindgen -# bindgen --version -# clang --version -# -# - name: Configure bindgen target flags for musl cross-compile -# if: matrix.job.os == 'ubuntu-latest' && contains(matrix.job.target, 'musl') -# shell: bash -# run: | -# set -euo pipefail -# triple='${{ matrix.job.target }}' -# # Bindgen needs explicit target to avoid host header confusion -# echo "BINDGEN_EXTRA_CLANG_ARGS_${triple//-/_}=--target=$triple" >> "$GITHUB_ENV" -# # CC hints help any C sub-builds in the tree -# case "$triple" in -# x86_64-unknown-linux-musl) -# echo "CC_x86_64_unknown_linux_musl=musl-gcc" >> "$GITHUB_ENV" -# ;; -# aarch64-unknown-linux-musl) -# echo "CC_aarch64_unknown_linux_musl=aarch64-linux-musl-gcc" >> "$GITHUB_ENV" -# ;; -# arm-unknown-linux-musleabihf) -# echo "CC_arm_unknown_linux_musleabihf=arm-linux-musleabihf-gcc" >> "$GITHUB_ENV" -# ;; -# armv7-unknown-linux-musleabihf) -# echo "CC_armv7_unknown_linux_musleabihf=armv7-linux-musleabihf-gcc" >> "$GITHUB_ENV" -# ;; -# esac -# echo "PKG_CONFIG_ALLOW_CROSS=1" >> "$GITHUB_ENV" -# -# - name: OpenSSL (vendored) toolchain for musl -# if: startsWith(matrix.job.name, 'linux-') && contains(matrix.job.target, 'musl') -# shell: bash -# run: | -# # Tools needed for building vendored OpenSSL -# sudo apt-get -y update -# sudo apt-get -y install musl-tools pkg-config perl make cmake -# -# # Let openssl-sys know we're cross-compiling and want static -# echo "OPENSSL_STATIC=1" >> $GITHUB_ENV -# echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV -# -# # Set the right C compiler per musl target (some provided by taiki-e/setup-cross-toolchain-action) -# case "${{ matrix.job.target }}" in -# x86_64-unknown-linux-musl) -# echo "CC_x86_64_unknown_linux_musl=musl-gcc" >> $GITHUB_ENV -# ;; -# aarch64-unknown-linux-musl) -# # If your toolchain action installs aarch64-linux-musl-gcc, use that: -# echo "CC_aarch64_unknown_linux_musl=aarch64-linux-musl-gcc" >> $GITHUB_ENV -# ;; -# arm-unknown-linux-musleabihf) -# echo "CC_arm_unknown_linux_musleabihf=arm-linux-musleabihf-gcc" >> $GITHUB_ENV -# ;; -# armv7-unknown-linux-musleabihf) -# echo "CC_armv7_unknown_linux_musleabihf=armv7-linux-musleabihf-gcc" >> $GITHUB_ENV -# ;; -# esac - name: Show Version Information (Rust, cargo, GCC) shell: bash run: | @@ -372,74 +277,6 @@ jobs: cargo -V rustc -V -# - name: Build -# shell: bash -# run: | -# set -euxo pipefail -# cross build --release --target=${{ matrix.job.target }} -# # if [[ "${{ matrix.job.use-cross || 'false' }}" == 'true' ]]; then -# # cross build --release --locked --target=${{ matrix.job.target }} --verbose -# # else -# # cargo build --release --locked --target=${{ matrix.job.target }} --verbose -# # fi -# -# - name: Verify file -# shell: bash -# run: | -# file target/${{ matrix.job.target }}/release/gman -# -# - name: Test -# if: matrix.job.target != 'aarch64-apple-darwin' && matrix.job.target != 'aarch64-pc-windows-msvc' -# shell: bash -# run: | -# set -euxo pipefail -# if [[ "${{ matrix.job.use-cross || 'false' }}" == 'true' ]]; then -# cross test --release --locked --target=${{ matrix.job.target }} --verbose ${{ matrix.job.test-bin }} -# else -# cargo test --release --locked --target=${{ matrix.job.target }} --verbose ${{ matrix.job.test-bin }} -# fi -# -# - name: Test -# if: matrix.job.target != 'aarch64-apple-darwin' && matrix.job.target != 'aarch64-pc-windows-msvc' -# run: cargo test --release --verbose --target=${{ matrix.job.target }} ${{ matrix.job.test-bin }} -# -# - name: Packaging final binary (Windows) -# if: matrix.job.os == 'windows-latest' -# shell: bash -# run: | -# cd target/${{ matrix.job.target }}/release -# BINARY_NAME=gman.exe -# if [ "${{ matrix.job.target }}" != "aarch64-pc-windows-msvc" ]; then -# # strip the binary -# strip $BINARY_NAME -# fi -# RELEASE_NAME=gman-${{ matrix.job.artifact_suffix }} -# mkdir -p artifacts -# tar czvf $RELEASE_NAME.tar.gz $BINARY_NAME -# # create sha checksum files -# certutil -hashfile $RELEASE_NAME.tar.gz sha256 | grep -E [A-Fa-f0-9]{64} > $RELEASE_NAME.sha256 -# echo "RELEASE_NAME=$RELEASE_NAME" >> $GITHUB_ENV -# -# - name: Packaging final binary (macOS and Linux) -# if: matrix.job.os != 'windows-latest' -# shell: bash -# run: | -# # set the right strip executable -# STRIP="strip"; -# case ${{ matrix.job.target }} in -# arm*-linux-*) STRIP="arm-linux-gnueabihf-strip" ;; -# aarch64-*-linux-*) STRIP="aarch64-linux-gnu-strip" ;; -# esac; -# cd target/${{ matrix.job.target }}/release -# BINARY_NAME=gman -# # strip the binary -# "$STRIP" "$BINARY_NAME" -# RELEASE_NAME=gman-${{ matrix.job.artifact_suffix }} -# tar czvf $RELEASE_NAME.tar.gz $BINARY_NAME -# # create sha checksum files -# shasum -a 256 $RELEASE_NAME.tar.gz > $RELEASE_NAME.sha256 -# echo "RELEASE_NAME=$RELEASE_NAME" >> $GITHUB_ENV - - name: Build shell: bash run: $BUILD_CMD build --locked --release --target=${{ matrix.target }} ${{ matrix.cargo-flags }} @@ -449,7 +286,7 @@ jobs: id: package env: target: ${{ matrix.target }} - version: ${{ steps.check-tag.outputs.version }} + version: ${{ env.RELEASE_VERSION }} run: | set -euxo pipefail @@ -468,34 +305,57 @@ jobs: if [[ "$RUNNER_OS" == "Windows" ]]; then archive=$dist_dir/$name.zip + sha=$dist_dir/$name.sha256 7z a $archive * + certutil -hashfile $archive sha256 | grep -E [A-Fa-f0-9]{64} > $sha echo "archive=dist/$name.zip" >> $GITHUB_OUTPUT + echo "sha=dist/$name.sha256" >> $GITHUB_OUTPUT else archive=$dist_dir/$name.tar.gz + sha=$dist_dir/$name.sha256 tar -czf $archive * + shasum -a 256 $archive > $sha echo "archive=dist/$name.tar.gz" >> $GITHUB_OUTPUT + echo "sha=dist/$name.sha256" >> $GITHUB_OUTPUT fi -# - name: Publish Archive -# uses: softprops/action-gh-release@v2 -# if: ${{ startsWith(github.ref, 'refs/tags/') }} -# with: -# draft: false -# files: ${{ steps.package.outputs.archive }} -# prerelease: ${{ steps.check-tag.outputs.rc == 'true' }} - -# - name: Add artifacts +# - name: Test +# if: matrix.target != 'aarch64-apple-darwin' && matrix.target != 'aarch64-pc-windows-msvc' +# shell: bash # run: | -# mkdir -p artifacts -# cp target/${{ matrix.job.target }}/release/${{ env.RELEASE_NAME }}.tar.gz artifacts/ -# cp target/${{ matrix.job.target }}/release/${{ env.RELEASE_NAME }}.sha256 artifacts/ -# -# - name: Upload artifacts -# uses: actions/upload-artifact@v4 -# with: -# name: artifacts-${{ env.RELEASE_NAME }} -# path: artifacts -# overwrite: true +# set -euxo pipefail +# if [[ "${{ matrix.use-cross || 'false' }}" == 'true' ]]; then +# cross test --release --locked --target=${{ matrix.target }} --verbose +# else +# cargo test --release --locked --target=${{ matrix.target }} --verbose +# fi + + - name: Publish Archive + if: env.ACT != 'true' + uses: softprops/action-gh-release@v2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + draft: false + files: ${{ steps.package.outputs.archive }} ${{ steps.package.outputs.sha }} + tag_name: v${{ env.RELEASE_VERSION }} + name: "v${{ env.RELEASE_VERSION }}" + body: ${{ env.changelog_body }} + draft: false + prerelease: false + + - name: Add artifacts + run: | + mkdir -p artifacts + cp ${{ steps.package.outputs.archive }} artifacts/ + cp ${{ steps.package.outputs.sha }} artifacts/ + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: artifacts-${{ env.RELEASE_NAME }} + path: artifacts + overwrite: true ## TODO Uncomment for sure From 2a74aa35885cc384d34b972949c77aa4bfe728dd Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 16:45:25 -0600 Subject: [PATCH 25/67] ci: Fix typo in GH release draft status --- .github/workflows/release.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index efe308b..6aaae4b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -341,7 +341,6 @@ jobs: tag_name: v${{ env.RELEASE_VERSION }} name: "v${{ env.RELEASE_VERSION }}" body: ${{ env.changelog_body }} - draft: false prerelease: false - name: Add artifacts From 54bc914554e40d4ba908964dd83caed7cd53bfa6 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 16:47:13 -0600 Subject: [PATCH 26/67] build: Set up test release --- CHANGELOG.md | 32 -------------------------------- Cargo.toml | 2 +- 2 files changed, 1 insertion(+), 33 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1302fde..da43d4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,35 +8,3 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [0.0.1] - 2025-09-10 ### Other - -## v0.0.2 (2025-09-13) - -### Fix - -- Revert back hacky stuff so I can test with act now -- Attempting to use pre-generated bindgens for the aws-lc-sys library -- Install openSSL differently to make this work -- Address edge case for unknown_musl targets -- Install LLVM prereqs for release flow -- Updated the release flow to install the external bindgen-cli - -## v0.0.1 (2025-09-12) - -### Feat - -- Azure Key Vault support -- GCP Secret Manager support -- Full AWS SecretsManager support -- AWS Secrets Manager support -- Added two new flags to output where gman writes logs to and where it expects the config file to live - -### Fix - -- Made the vault file location more fault tolerant -- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests - -### Refactor - -- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions -- Made the creation of the log directories a bit more fault tolerant -- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky diff --git a/Cargo.toml b/Cargo.toml index aefd9ab..46c4d95 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gman" -version = "0.0.2" +version = "0.0.1" edition = "2024" authors = ["Alex Clarke "] description = "Universal secret management and injection tool" From 35183f0e34edf2b37562522c58122f20eb34ef1c Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 16:47:35 -0600 Subject: [PATCH 27/67] build: Set up test release --- Cargo.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 9b4adfa..2cc613c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gman" -version = "0.0.2" +version = "0.0.1" dependencies = [ "anyhow", "argon2", From f8b78a1325411c8509e74ac12b67335f34ae1ce9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 14 Sep 2025 22:49:42 +0000 Subject: [PATCH 28/67] =?UTF-8?q?bump:=20version=200.0.1=20=E2=86=92=200.0?= =?UTF-8?q?.2=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 32 ++++++++++++++++++++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index da43d4e..c1e2912 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,3 +8,35 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [0.0.1] - 2025-09-10 ### Other + +## v0.0.2 (2025-09-14) + +### Fix + +- Revert back hacky stuff so I can test with act now +- Attempting to use pre-generated bindgens for the aws-lc-sys library +- Install openSSL differently to make this work +- Address edge case for unknown_musl targets +- Install LLVM prereqs for release flow +- Updated the release flow to install the external bindgen-cli + +## v0.0.1 (2025-09-12) + +### Feat + +- Azure Key Vault support +- GCP Secret Manager support +- Full AWS SecretsManager support +- AWS Secrets Manager support +- Added two new flags to output where gman writes logs to and where it expects the config file to live + +### Fix + +- Made the vault file location more fault tolerant +- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests + +### Refactor + +- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions +- Made the creation of the log directories a bit more fault tolerant +- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky diff --git a/Cargo.lock b/Cargo.lock index 2cc613c..9b4adfa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gman" -version = "0.0.1" +version = "0.0.2" dependencies = [ "anyhow", "argon2", diff --git a/Cargo.toml b/Cargo.toml index 46c4d95..aefd9ab 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gman" -version = "0.0.1" +version = "0.0.2" edition = "2024" authors = ["Alex Clarke "] description = "Universal secret management and injection tool" From d0278bfa653d92e5c185b215bc52165c29b2fb8b Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 16:52:17 -0600 Subject: [PATCH 29/67] ci: Fixed bug in the setting of environment variables --- .github/workflows/release.yml | 1 + CHANGELOG.md | 32 -------------------------------- 2 files changed, 1 insertion(+), 32 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6aaae4b..500601b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -222,6 +222,7 @@ jobs: git pull - name: Set environment variables + shell: bash run: | release_version="$(cat ./artifacts/release-version)" echo "RELEASE_VERSION=$release_version" >> $GITHUB_ENV diff --git a/CHANGELOG.md b/CHANGELOG.md index c1e2912..da43d4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,35 +8,3 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [0.0.1] - 2025-09-10 ### Other - -## v0.0.2 (2025-09-14) - -### Fix - -- Revert back hacky stuff so I can test with act now -- Attempting to use pre-generated bindgens for the aws-lc-sys library -- Install openSSL differently to make this work -- Address edge case for unknown_musl targets -- Install LLVM prereqs for release flow -- Updated the release flow to install the external bindgen-cli - -## v0.0.1 (2025-09-12) - -### Feat - -- Azure Key Vault support -- GCP Secret Manager support -- Full AWS SecretsManager support -- AWS Secrets Manager support -- Added two new flags to output where gman writes logs to and where it expects the config file to live - -### Fix - -- Made the vault file location more fault tolerant -- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests - -### Refactor - -- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions -- Made the creation of the log directories a bit more fault tolerant -- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky From ef0a6870316bebbaecd27ee82f42c778bbdebde0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 14 Sep 2025 22:56:11 +0000 Subject: [PATCH 30/67] =?UTF-8?q?bump:=20version=200.0.2=20=E2=86=92=200.0?= =?UTF-8?q?.3=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 32 ++++++++++++++++++++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index da43d4e..c918e1b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,3 +8,35 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [0.0.1] - 2025-09-10 ### Other + +## v0.0.3 (2025-09-14) + +### Fix + +- Revert back hacky stuff so I can test with act now +- Attempting to use pre-generated bindgens for the aws-lc-sys library +- Install openSSL differently to make this work +- Address edge case for unknown_musl targets +- Install LLVM prereqs for release flow +- Updated the release flow to install the external bindgen-cli + +## v0.0.1 (2025-09-12) + +### Feat + +- Azure Key Vault support +- GCP Secret Manager support +- Full AWS SecretsManager support +- AWS Secrets Manager support +- Added two new flags to output where gman writes logs to and where it expects the config file to live + +### Fix + +- Made the vault file location more fault tolerant +- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests + +### Refactor + +- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions +- Made the creation of the log directories a bit more fault tolerant +- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky diff --git a/Cargo.lock b/Cargo.lock index 9b4adfa..0870a38 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gman" -version = "0.0.2" +version = "0.0.3" dependencies = [ "anyhow", "argon2", diff --git a/Cargo.toml b/Cargo.toml index aefd9ab..8e106bf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gman" -version = "0.0.2" +version = "0.0.3" edition = "2024" authors = ["Alex Clarke "] description = "Universal secret management and injection tool" From 68bc150d30901bf397372e09d96156bbd0ea4d5e Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 17:06:59 -0600 Subject: [PATCH 31/67] ci: Added additional targets and fixed typo in artifact upload --- .github/workflows/release.yml | 43 ++++++++++++++++++++--------------- CHANGELOG.md | 32 -------------------------- 2 files changed, 25 insertions(+), 50 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 500601b..abc425b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -165,29 +165,31 @@ jobs: - target: aarch64-unknown-linux-musl os: ubuntu-latest use-cross: true - artifact-suffix: aarch64-musl + cargo-flags: "" + - target: aarch64-unknown-linux-gnu + os: ubuntu-latest + use-cross: true cargo-flags: "" - target: aarch64-apple-darwin os: macos-latest use-cross: true - artifact-suffix: macos-arm64 cargo-flags: "" - target: aarch64-pc-windows-msvc os: windows-latest use-cross: true - artifact-suffix: windows-aarch64 cargo-flags: "" - target: x86_64-apple-darwin os: macos-latest - artifact-suffix: macos cargo-flags: "" - target: x86_64-pc-windows-msvc os: windows-latest - artifact-suffix: windows cargo-flags: "" - target: x86_64-unknown-linux-musl os: ubuntu-latest - artifact-suffix: linux-musl + use-cross: true + cargo-flags: "" + - target: x86_64-unknown-linux-gnu + os: ubuntu-latest use-cross: true cargo-flags: "" @@ -282,6 +284,22 @@ jobs: shell: bash run: $BUILD_CMD build --locked --release --target=${{ matrix.target }} ${{ matrix.cargo-flags }} + - name: Verify file + shell: bash + run: | + file target/${{ matrix.target }}/release/gman + + - name: Test + if: matrix.target != 'aarch64-apple-darwin' && matrix.target != 'aarch64-pc-windows-msvc' + shell: bash + run: | + set -euxo pipefail + if [[ "${{ matrix.use-cross || 'false' }}" == 'true' ]]; then + cross test --release --locked --target=${{ matrix.target }} --verbose + else + cargo test --release --locked --target=${{ matrix.target }} --verbose + fi + - name: Build Archive shell: bash id: package @@ -320,17 +338,6 @@ jobs: echo "sha=dist/$name.sha256" >> $GITHUB_OUTPUT fi -# - name: Test -# if: matrix.target != 'aarch64-apple-darwin' && matrix.target != 'aarch64-pc-windows-msvc' -# shell: bash -# run: | -# set -euxo pipefail -# if [[ "${{ matrix.use-cross || 'false' }}" == 'true' ]]; then -# cross test --release --locked --target=${{ matrix.target }} --verbose -# else -# cargo test --release --locked --target=${{ matrix.target }} --verbose -# fi - - name: Publish Archive if: env.ACT != 'true' uses: softprops/action-gh-release@v2 @@ -346,7 +353,7 @@ jobs: - name: Add artifacts run: | - mkdir -p artifacts + [[ -d artifacts ]] || mkdir -p artifacts cp ${{ steps.package.outputs.archive }} artifacts/ cp ${{ steps.package.outputs.sha }} artifacts/ diff --git a/CHANGELOG.md b/CHANGELOG.md index c918e1b..da43d4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,35 +8,3 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [0.0.1] - 2025-09-10 ### Other - -## v0.0.3 (2025-09-14) - -### Fix - -- Revert back hacky stuff so I can test with act now -- Attempting to use pre-generated bindgens for the aws-lc-sys library -- Install openSSL differently to make this work -- Address edge case for unknown_musl targets -- Install LLVM prereqs for release flow -- Updated the release flow to install the external bindgen-cli - -## v0.0.1 (2025-09-12) - -### Feat - -- Azure Key Vault support -- GCP Secret Manager support -- Full AWS SecretsManager support -- AWS Secrets Manager support -- Added two new flags to output where gman writes logs to and where it expects the config file to live - -### Fix - -- Made the vault file location more fault tolerant -- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests - -### Refactor - -- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions -- Made the creation of the log directories a bit more fault tolerant -- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky From 8e2d2a9b61db4bf4c6a29f6d22c21f89b4845e4b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 14 Sep 2025 23:07:39 +0000 Subject: [PATCH 32/67] =?UTF-8?q?bump:=20version=200.0.3=20=E2=86=92=200.0?= =?UTF-8?q?.4=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 34 ++++++++++++++++++++++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index da43d4e..3cfbd7a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,3 +8,37 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [0.0.1] - 2025-09-10 ### Other + +## v0.0.4 (2025-09-14) + +## v0.0.3 (2025-09-14) + +### Fix + +- Revert back hacky stuff so I can test with act now +- Attempting to use pre-generated bindgens for the aws-lc-sys library +- Install openSSL differently to make this work +- Address edge case for unknown_musl targets +- Install LLVM prereqs for release flow +- Updated the release flow to install the external bindgen-cli + +## v0.0.1 (2025-09-12) + +### Feat + +- Azure Key Vault support +- GCP Secret Manager support +- Full AWS SecretsManager support +- AWS Secrets Manager support +- Added two new flags to output where gman writes logs to and where it expects the config file to live + +### Fix + +- Made the vault file location more fault tolerant +- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests + +### Refactor + +- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions +- Made the creation of the log directories a bit more fault tolerant +- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky diff --git a/Cargo.lock b/Cargo.lock index 0870a38..4334dcc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gman" -version = "0.0.3" +version = "0.0.4" dependencies = [ "anyhow", "argon2", diff --git a/Cargo.toml b/Cargo.toml index 8e106bf..88f78e1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gman" -version = "0.0.3" +version = "0.0.4" edition = "2024" authors = ["Alex Clarke "] description = "Universal secret management and injection tool" From 18ee7e4a9f6c3c866c5c8c32948a2a537cba8480 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 17:08:09 -0600 Subject: [PATCH 33/67] ci: Fix potential typo in publishing of archives --- .github/workflows/release.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index abc425b..456562e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -338,14 +338,15 @@ jobs: echo "sha=dist/$name.sha256" >> $GITHUB_OUTPUT fi - - name: Publish Archive + - name: Publish Archive and SHA if: env.ACT != 'true' uses: softprops/action-gh-release@v2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - draft: false - files: ${{ steps.package.outputs.archive }} ${{ steps.package.outputs.sha }} + files: | + ${{ steps.package.outputs.archive }} + ${{ steps.package.outputs.sha }} tag_name: v${{ env.RELEASE_VERSION }} name: "v${{ env.RELEASE_VERSION }}" body: ${{ env.changelog_body }} From 2b971602c384f7bef7b2e85112a32f562a7cf696 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 17:08:32 -0600 Subject: [PATCH 34/67] docs: Updated changelog --- CHANGELOG.md | 34 ---------------------------------- 1 file changed, 34 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3cfbd7a..da43d4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,37 +8,3 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [0.0.1] - 2025-09-10 ### Other - -## v0.0.4 (2025-09-14) - -## v0.0.3 (2025-09-14) - -### Fix - -- Revert back hacky stuff so I can test with act now -- Attempting to use pre-generated bindgens for the aws-lc-sys library -- Install openSSL differently to make this work -- Address edge case for unknown_musl targets -- Install LLVM prereqs for release flow -- Updated the release flow to install the external bindgen-cli - -## v0.0.1 (2025-09-12) - -### Feat - -- Azure Key Vault support -- GCP Secret Manager support -- Full AWS SecretsManager support -- AWS Secrets Manager support -- Added two new flags to output where gman writes logs to and where it expects the config file to live - -### Fix - -- Made the vault file location more fault tolerant -- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests - -### Refactor - -- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions -- Made the creation of the log directories a bit more fault tolerant -- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky From befd414bfea7cd5e2a2ce6edf987214db6b270a2 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 17:11:36 -0600 Subject: [PATCH 35/67] ci: Don't use cross to build linux-gnu --- .github/workflows/release.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 456562e..2c7aa00 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -190,7 +190,6 @@ jobs: cargo-flags: "" - target: x86_64-unknown-linux-gnu os: ubuntu-latest - use-cross: true cargo-flags: "" steps: From 419077b1a5136a2a7d536867a1d76482e008868f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 14 Sep 2025 23:14:46 +0000 Subject: [PATCH 36/67] =?UTF-8?q?bump:=20version=200.0.4=20=E2=86=92=200.0?= =?UTF-8?q?.5=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 34 ++++++++++++++++++++++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index da43d4e..92f44dd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,3 +8,37 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [0.0.1] - 2025-09-10 ### Other + +## v0.0.5 (2025-09-14) + +## v0.0.3 (2025-09-14) + +### Fix + +- Revert back hacky stuff so I can test with act now +- Attempting to use pre-generated bindgens for the aws-lc-sys library +- Install openSSL differently to make this work +- Address edge case for unknown_musl targets +- Install LLVM prereqs for release flow +- Updated the release flow to install the external bindgen-cli + +## v0.0.1 (2025-09-12) + +### Feat + +- Azure Key Vault support +- GCP Secret Manager support +- Full AWS SecretsManager support +- AWS Secrets Manager support +- Added two new flags to output where gman writes logs to and where it expects the config file to live + +### Fix + +- Made the vault file location more fault tolerant +- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests + +### Refactor + +- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions +- Made the creation of the log directories a bit more fault tolerant +- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky diff --git a/Cargo.lock b/Cargo.lock index 4334dcc..99816ca 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gman" -version = "0.0.4" +version = "0.0.5" dependencies = [ "anyhow", "argon2", diff --git a/Cargo.toml b/Cargo.toml index 88f78e1..37c01d3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gman" -version = "0.0.4" +version = "0.0.5" edition = "2024" authors = ["Alex Clarke "] description = "Universal secret management and injection tool" From 7dc4995c9b16ac53de78b7e021fbc6eeac07d49a Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 17:21:44 -0600 Subject: [PATCH 37/67] ci: Don't use cross to compile ARM linux GNU --- .github/workflows/release.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2c7aa00..83b49cb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -168,7 +168,6 @@ jobs: cargo-flags: "" - target: aarch64-unknown-linux-gnu os: ubuntu-latest - use-cross: true cargo-flags: "" - target: aarch64-apple-darwin os: macos-latest From d6a2606b7d13e1eb36a191b615257ac5f63e6151 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 17:23:27 -0600 Subject: [PATCH 38/67] build: Reverted to previous build --- CHANGELOG.md | 34 ---------------------------------- Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 2 insertions(+), 36 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 92f44dd..da43d4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,37 +8,3 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [0.0.1] - 2025-09-10 ### Other - -## v0.0.5 (2025-09-14) - -## v0.0.3 (2025-09-14) - -### Fix - -- Revert back hacky stuff so I can test with act now -- Attempting to use pre-generated bindgens for the aws-lc-sys library -- Install openSSL differently to make this work -- Address edge case for unknown_musl targets -- Install LLVM prereqs for release flow -- Updated the release flow to install the external bindgen-cli - -## v0.0.1 (2025-09-12) - -### Feat - -- Azure Key Vault support -- GCP Secret Manager support -- Full AWS SecretsManager support -- AWS Secrets Manager support -- Added two new flags to output where gman writes logs to and where it expects the config file to live - -### Fix - -- Made the vault file location more fault tolerant -- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests - -### Refactor - -- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions -- Made the creation of the log directories a bit more fault tolerant -- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky diff --git a/Cargo.lock b/Cargo.lock index 99816ca..2cc613c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gman" -version = "0.0.5" +version = "0.0.1" dependencies = [ "anyhow", "argon2", diff --git a/Cargo.toml b/Cargo.toml index 37c01d3..46c4d95 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gman" -version = "0.0.5" +version = "0.0.1" edition = "2024" authors = ["Alex Clarke "] description = "Universal secret management and injection tool" From c48301dead637bdda593d14bec0a5b186c07df88 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 14 Sep 2025 23:24:13 +0000 Subject: [PATCH 39/67] =?UTF-8?q?bump:=20version=200.0.1=20=E2=86=92=200.0?= =?UTF-8?q?.2=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 32 ++++++++++++++++++++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index da43d4e..c1e2912 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,3 +8,35 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [0.0.1] - 2025-09-10 ### Other + +## v0.0.2 (2025-09-14) + +### Fix + +- Revert back hacky stuff so I can test with act now +- Attempting to use pre-generated bindgens for the aws-lc-sys library +- Install openSSL differently to make this work +- Address edge case for unknown_musl targets +- Install LLVM prereqs for release flow +- Updated the release flow to install the external bindgen-cli + +## v0.0.1 (2025-09-12) + +### Feat + +- Azure Key Vault support +- GCP Secret Manager support +- Full AWS SecretsManager support +- AWS Secrets Manager support +- Added two new flags to output where gman writes logs to and where it expects the config file to live + +### Fix + +- Made the vault file location more fault tolerant +- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests + +### Refactor + +- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions +- Made the creation of the log directories a bit more fault tolerant +- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky diff --git a/Cargo.lock b/Cargo.lock index 2cc613c..9b4adfa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gman" -version = "0.0.1" +version = "0.0.2" dependencies = [ "anyhow", "argon2", diff --git a/Cargo.toml b/Cargo.toml index 46c4d95..aefd9ab 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gman" -version = "0.0.1" +version = "0.0.2" edition = "2024" authors = ["Alex Clarke "] description = "Universal secret management and injection tool" From ec115d470ab865023377ba20a42ce592cdaa6e44 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 17:28:49 -0600 Subject: [PATCH 40/67] ci: Fixed linux-gnu target build --- .github/workflows/release.yml | 3 --- CHANGELOG.md | 32 -------------------------------- Cargo.lock | 2 +- Cargo.toml | 2 +- 4 files changed, 2 insertions(+), 37 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 83b49cb..8bbe4e8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -166,9 +166,6 @@ jobs: os: ubuntu-latest use-cross: true cargo-flags: "" - - target: aarch64-unknown-linux-gnu - os: ubuntu-latest - cargo-flags: "" - target: aarch64-apple-darwin os: macos-latest use-cross: true diff --git a/CHANGELOG.md b/CHANGELOG.md index c1e2912..da43d4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,35 +8,3 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [0.0.1] - 2025-09-10 ### Other - -## v0.0.2 (2025-09-14) - -### Fix - -- Revert back hacky stuff so I can test with act now -- Attempting to use pre-generated bindgens for the aws-lc-sys library -- Install openSSL differently to make this work -- Address edge case for unknown_musl targets -- Install LLVM prereqs for release flow -- Updated the release flow to install the external bindgen-cli - -## v0.0.1 (2025-09-12) - -### Feat - -- Azure Key Vault support -- GCP Secret Manager support -- Full AWS SecretsManager support -- AWS Secrets Manager support -- Added two new flags to output where gman writes logs to and where it expects the config file to live - -### Fix - -- Made the vault file location more fault tolerant -- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests - -### Refactor - -- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions -- Made the creation of the log directories a bit more fault tolerant -- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky diff --git a/Cargo.lock b/Cargo.lock index 9b4adfa..2cc613c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gman" -version = "0.0.2" +version = "0.0.1" dependencies = [ "anyhow", "argon2", diff --git a/Cargo.toml b/Cargo.toml index aefd9ab..46c4d95 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gman" -version = "0.0.2" +version = "0.0.1" edition = "2024" authors = ["Alex Clarke "] description = "Universal secret management and injection tool" From 47d5159fd3f9d47a89606be7eae9959694c70fa9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 14 Sep 2025 23:29:34 +0000 Subject: [PATCH 41/67] =?UTF-8?q?bump:=20version=200.0.1=20=E2=86=92=200.0?= =?UTF-8?q?.2=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 32 ++++++++++++++++++++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index da43d4e..c1e2912 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,3 +8,35 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [0.0.1] - 2025-09-10 ### Other + +## v0.0.2 (2025-09-14) + +### Fix + +- Revert back hacky stuff so I can test with act now +- Attempting to use pre-generated bindgens for the aws-lc-sys library +- Install openSSL differently to make this work +- Address edge case for unknown_musl targets +- Install LLVM prereqs for release flow +- Updated the release flow to install the external bindgen-cli + +## v0.0.1 (2025-09-12) + +### Feat + +- Azure Key Vault support +- GCP Secret Manager support +- Full AWS SecretsManager support +- AWS Secrets Manager support +- Added two new flags to output where gman writes logs to and where it expects the config file to live + +### Fix + +- Made the vault file location more fault tolerant +- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests + +### Refactor + +- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions +- Made the creation of the log directories a bit more fault tolerant +- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky diff --git a/Cargo.lock b/Cargo.lock index 2cc613c..9b4adfa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gman" -version = "0.0.1" +version = "0.0.2" dependencies = [ "anyhow", "argon2", diff --git a/Cargo.toml b/Cargo.toml index 46c4d95..aefd9ab 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gman" -version = "0.0.1" +version = "0.0.2" edition = "2024" authors = ["Alex Clarke "] description = "Universal secret management and injection tool" From cfc296dd758e9ae6bc4f0fe9e43740c66bad29d6 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 17:40:20 -0600 Subject: [PATCH 42/67] ci: Fixed typo in shell commands for Windows and Mac builds --- .github/workflows/release.yml | 4 +-- CHANGELOG.md | 32 ------------------- Cargo.lock | 2 +- Cargo.toml | 2 +- .../chocolatey/chocolateyinstall.ps1.template | 2 +- deployment/chocolatey/gman.nuspec.template | 4 +-- 6 files changed, 7 insertions(+), 39 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8bbe4e8..13c5722 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -300,13 +300,12 @@ jobs: id: package env: target: ${{ matrix.target }} - version: ${{ env.RELEASE_VERSION }} run: | set -euxo pipefail bin=${GITHUB_REPOSITORY##*/} dist_dir=`pwd`/dist - name=$bin-$version-$target + name=$bin-$target executable=target/$target/release/$bin if [[ "$RUNNER_OS" == "Windows" ]]; then @@ -348,6 +347,7 @@ jobs: prerelease: false - name: Add artifacts + shell: bash run: | [[ -d artifacts ]] || mkdir -p artifacts cp ${{ steps.package.outputs.archive }} artifacts/ diff --git a/CHANGELOG.md b/CHANGELOG.md index c1e2912..da43d4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,35 +8,3 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [0.0.1] - 2025-09-10 ### Other - -## v0.0.2 (2025-09-14) - -### Fix - -- Revert back hacky stuff so I can test with act now -- Attempting to use pre-generated bindgens for the aws-lc-sys library -- Install openSSL differently to make this work -- Address edge case for unknown_musl targets -- Install LLVM prereqs for release flow -- Updated the release flow to install the external bindgen-cli - -## v0.0.1 (2025-09-12) - -### Feat - -- Azure Key Vault support -- GCP Secret Manager support -- Full AWS SecretsManager support -- AWS Secrets Manager support -- Added two new flags to output where gman writes logs to and where it expects the config file to live - -### Fix - -- Made the vault file location more fault tolerant -- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests - -### Refactor - -- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions -- Made the creation of the log directories a bit more fault tolerant -- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky diff --git a/Cargo.lock b/Cargo.lock index 9b4adfa..2cc613c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gman" -version = "0.0.2" +version = "0.0.1" dependencies = [ "anyhow", "argon2", diff --git a/Cargo.toml b/Cargo.toml index aefd9ab..46c4d95 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gman" -version = "0.0.2" +version = "0.0.1" edition = "2024" authors = ["Alex Clarke "] description = "Universal secret management and injection tool" diff --git a/deployment/chocolatey/chocolateyinstall.ps1.template b/deployment/chocolatey/chocolateyinstall.ps1.template index 3bd79c3..1262403 100644 --- a/deployment/chocolatey/chocolateyinstall.ps1.template +++ b/deployment/chocolatey/chocolateyinstall.ps1.template @@ -2,7 +2,7 @@ $ErrorActionPreference = 'Stop'; $PackageName = 'gman' $toolsDir = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)" -$url64 = 'https://github.com/Dark-Alex-17/gman/releases/download/v$version/gman-windows.tar.gz' +$url64 = 'https://github.com/Dark-Alex-17/gman/releases/download/v$version/gman-windows.zip' $checksum64 = '$hash_64' $packageArgs = @{ diff --git a/deployment/chocolatey/gman.nuspec.template b/deployment/chocolatey/gman.nuspec.template index 755a8c7..a64e13f 100644 --- a/deployment/chocolatey/gman.nuspec.template +++ b/deployment/chocolatey/gman.nuspec.template @@ -33,9 +33,9 @@ This is a nuspec. It mostly adheres to https://docs.nuget.org/create/Nuspec-Refe https://github.com/Dark-Alex-17/gman/blob/main/README.md https://github.com/Dark-Alex-17/gman/issues cli cross-platform terminal credential-management secret-management rust - Universal command line credential management and injection tool + Universal CLI credential management and injection tool - Universal command line credential management and injection tool. + Universal CLI credential management and injection tool. **Usage** To get started, run `gman --help` in a terminal. From 77676efffa97c732cf42770a54e65fba23e79dc9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 14 Sep 2025 23:43:36 +0000 Subject: [PATCH 43/67] =?UTF-8?q?bump:=20version=200.0.1=20=E2=86=92=200.0?= =?UTF-8?q?.2=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 32 ++++++++++++++++++++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index da43d4e..c1e2912 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,3 +8,35 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [0.0.1] - 2025-09-10 ### Other + +## v0.0.2 (2025-09-14) + +### Fix + +- Revert back hacky stuff so I can test with act now +- Attempting to use pre-generated bindgens for the aws-lc-sys library +- Install openSSL differently to make this work +- Address edge case for unknown_musl targets +- Install LLVM prereqs for release flow +- Updated the release flow to install the external bindgen-cli + +## v0.0.1 (2025-09-12) + +### Feat + +- Azure Key Vault support +- GCP Secret Manager support +- Full AWS SecretsManager support +- AWS Secrets Manager support +- Added two new flags to output where gman writes logs to and where it expects the config file to live + +### Fix + +- Made the vault file location more fault tolerant +- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests + +### Refactor + +- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions +- Made the creation of the log directories a bit more fault tolerant +- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky diff --git a/Cargo.lock b/Cargo.lock index 2cc613c..9b4adfa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gman" -version = "0.0.1" +version = "0.0.2" dependencies = [ "anyhow", "argon2", diff --git a/Cargo.toml b/Cargo.toml index 46c4d95..aefd9ab 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gman" -version = "0.0.1" +version = "0.0.2" edition = "2024" authors = ["Alex Clarke "] description = "Universal secret management and injection tool" From a1e0a97b84c4ee14df2ece31df967b9271ba6dcb Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 17:46:04 -0600 Subject: [PATCH 44/67] ci: Updated the archive names for homebrew and chocolatey --- deployment/chocolatey/chocolateyinstall.ps1.template | 4 ++-- deployment/homebrew/gman.rb.template | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/deployment/chocolatey/chocolateyinstall.ps1.template b/deployment/chocolatey/chocolateyinstall.ps1.template index 1262403..57457bf 100644 --- a/deployment/chocolatey/chocolateyinstall.ps1.template +++ b/deployment/chocolatey/chocolateyinstall.ps1.template @@ -2,7 +2,7 @@ $ErrorActionPreference = 'Stop'; $PackageName = 'gman' $toolsDir = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)" -$url64 = 'https://github.com/Dark-Alex-17/gman/releases/download/v$version/gman-windows.zip' +$url64 = 'https://github.com/Dark-Alex-17/gman/releases/download/v$version/gman-x86_64-pc-windows-msvc.zip' $checksum64 = '$hash_64' $packageArgs = @{ @@ -16,5 +16,5 @@ $packageArgs = @{ } Install-ChocolateyZipPackage @packageArgs -$File = Get-ChildItem -File -Path $env:ChocolateyInstall\lib\$packageName\tools\ -Filter *.tar +$File = Get-ChildItem -File -Path $env:ChocolateyInstall\lib\$packageName\tools\ -Filter *.zip Get-ChocolateyUnzip -fileFullPath $File.FullName -destination $env:ChocolateyInstall\lib\$packageName\tools\ diff --git a/deployment/homebrew/gman.rb.template b/deployment/homebrew/gman.rb.template index 65d36cb..1fbe370 100644 --- a/deployment/homebrew/gman.rb.template +++ b/deployment/homebrew/gman.rb.template @@ -4,13 +4,13 @@ class GMan < Formula desc "Universal command line credential management and injection tool" homepage "https://github.com/Dark-Alex-17/gman" if OS.mac? and Hardware::CPU.arm? - url "https://github.com/Dark-Alex-17/gman/releases/download/v$version/gman-macos-arm64.tar.gz" + url "https://github.com/Dark-Alex-17/gman/releases/download/v$version/gman-aarch64-apple-darwin.tar.gz" sha256 "$hash_mac_arm" elsif OS.mac? and Hardware::CPU.intel? - url "https://github.com/Dark-Alex-17/gman/releases/download/v$version/gman-macos.tar.gz" + url "https://github.com/Dark-Alex-17/gman/releases/download/v$version/gman-x86_64-apple-darwin.tar.gz" sha256 "$hash_mac" else - url "https://github.com/Dark-Alex-17/gman/releases/download/v$version/gman-linux-musl.tar.gz" + url "https://github.com/Dark-Alex-17/gman/releases/download/v$version/gman-x86_64-unknown-linux-musl.tar.gz" sha256 "$hash_linux" end version "$version" From 477c87aea92fbe5ab0a34bd89aa259034fa59ce7 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 18:00:38 -0600 Subject: [PATCH 45/67] ci: Full release attempt (GitHub, Choco, Homebrew, and Crates) --- .github/workflows/release.yml | 407 +++++++++++++--------------------- CHANGELOG.md | 32 --- Cargo.lock | 2 +- Cargo.toml | 2 +- 4 files changed, 156 insertions(+), 287 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 13c5722..3bd78e7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -151,7 +151,7 @@ jobs: Cargo.toml Cargo.lock - build-release-artifacts: + publish-github-release: name: build-release needs: [bump-version] runs-on: ${{ matrix.os }} @@ -361,256 +361,157 @@ jobs: overwrite: true -## TODO Uncomment for sure -####################### -## Post publish jobs ## -####################### + publish-chocolatey-package: + needs: [publish-github-release] + name: Publish Chocolatey Package + runs-on: windows-latest + steps: + - name: Check if actor is repository owner + if: ${{ github.actor != github.repository_owner && env.ACT != 'true' }} + run: | + echo "You are not authorized to run this workflow." + exit 1 -# publish-github-release: -# name: publish-github-release -# needs: [build-release-artifacts] -# runs-on: ubuntu-latest -# steps: -# - name: Check if actor is repository owner -# if: ${{ github.actor != github.repository_owner && env.ACT != 'true' }} -# run: | -# echo "You are not authorized to run this workflow." -# exit 1 -# -# - name: Checkout repository -# uses: actions/checkout@v3 -# with: -# fetch-depth: 0 -# -# - name: Download all artifacts -# uses: actions/download-artifact@v4 -# with: -# path: artifacts -# merge-multiple: true -# -# - name: Ensure repository is up-to-date -# if: env.ACT != 'true' -# run: | -# git fetch --all -# git pull -# -# - name: Set environment variables -# run: | -# release_version="$(cat ./artifacts/release-version)" -# echo "RELEASE_VERSION=$release_version" >> $GITHUB_ENV -# changelog_body="$(cat ./artifacts/changelog.md)" -# echo "changelog_body=$(cat artifacts/changelog.md)" >> $GITHUB_ENV -# -# - name: Validate release environment variables -# run: | -# echo "Release version: ${{ env.RELEASE_VERSION }}" -# echo "Changelog body: ${{ env.changelog_body }}" -# -# - name: Create a GitHub Release -# if: env.ACT != 'true' -# uses: softprops/action-gh-release@v1 -# env: -# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -# with: -# files: | -# artifacts/gman-macos-arm64.tar.gz -# artifacts/gman-macos-arm64.sha256 -# artifacts/gman-macos.tar.gz -# artifacts/gman-macos.sha256 -# artifacts/gman-windows.tar.gz -# artifacts/gman-windows.sha256 -# artifacts/gman-windows-aarch64.tar.gz -# artifacts/gman-windows-aarch64.sha256 -# artifacts/gman-linux.tar.gz -# artifacts/gman-linux.sha256 -# artifacts/gman-linux-musl.tar.gz -# artifacts/gman-linux-musl.sha256 -# artifacts/gman-aarch64-gnu.tar.gz -# artifacts/gman-aarch64-gnu.sha256 -# artifacts/gman-aarch64-musl.tar.gz -# artifacts/gman-aarch64-musl.sha256 -# artifacts/gman-armv6-gnu.tar.gz -# artifacts/gman-armv6-gnu.sha256 -# artifacts/gman-armv6-musl.tar.gz -# artifacts/gman-armv6-musl.sha256 -# artifacts/gman-armv7-gnu.tar.gz -# artifacts/gman-armv7-gnu.sha256 -# artifacts/gman-armv7-musl.tar.gz -# artifacts/gman-armv7-musl.sha256 -# tag_name: v${{ env.RELEASE_VERSION }} -# name: "v${{ env.RELEASE_VERSION }}" -# body: ${{ env.changelog_body }} -# draft: false -# prerelease: false -# -# - name: Upload artifacts -# uses: actions/upload-artifact@v4 -# with: -# path: artifacts -# overwrite: true -# -# publish-chocolatey-package: -# needs: [publish-github-release] -# name: Publish Chocolatey Package -# runs-on: windows-latest -# steps: -# - name: Check if actor is repository owner -# if: ${{ github.actor != github.repository_owner && env.ACT != 'true' }} -# run: | -# echo "You are not authorized to run this workflow." -# exit 1 -# -# - name: Checkout repository -# uses: actions/checkout@v4 -# with: -# fetch-depth: 1 -# -# - name: Get release artifacts -# uses: actions/download-artifact@v4 -# with: -# path: artifacts -# merge-multiple: true -# -# - name: Set release assets and version -# shell: pwsh -# run: | -# # Read the first column from the SHA256 file -# $windows_sha = Get-Content ./artifacts/gman-windows.sha256 | ForEach-Object { $_.Split(' ')[0] } -# Add-Content -Path $env:GITHUB_ENV -Value "WINDOWS_SHA=$windows_sha" -# -# # Read the release version from the release-version file -# $release_version = Get-Content ./artifacts/release-version -# Add-Content -Path $env:GITHUB_ENV -Value "RELEASE_VERSION=$release_version" -# -# - name: Validate release environment variables -# run: | -# echo "Release SHA windows: ${{ env.WINDOWS_SHA }}" -# echo "Release version: ${{ env.RELEASE_VERSION }}" -# -# - name: Package and Publish package to Chocolatey -# if: env.ACT != 'true' -# run: | -# mkdir ./deployment/chocolatey/tools -# # Run packaging script -# python "./deployment/chocolatey/packager.py" ${{ env.RELEASE_VERSION }} "./deployment/chocolatey/gman.nuspec.template" "./deployment/chocolatey/gman.nuspec" ${{ env.WINDOWS_SHA }} -# python "./deployment/chocolatey/packager.py" ${{ env.RELEASE_VERSION }} "./deployment/chocolatey/chocolateyinstall.ps1.template" "./deployment/chocolatey/tools/chocolateyinstall.ps1" ${{ env.WINDOWS_SHA }} -# -# # Publish to Chocolatey -# cd ./deployment/chocolatey -# choco pack -# echo y | choco install gman -dv -s . -# $version = gman --version -# $version = $version -replace " ", "." -# choco push $version.nupkg -s https://push.chocolatey.org/ --api-key ${{ secrets.CHOCOLATEY_API_KEY }}; -# -# publish-homebrew-formula: -# needs: [publish-github-release] -# name: Update Homebrew formulas -# runs-on: ubuntu-latest -# steps: -# - name: Check if actor is repository owner -# if: ${{ github.actor != github.repository_owner && env.ACT != 'true' }} -# run: | -# echo "You are not authorized to run this workflow." -# exit 1 -# -# - name: Checkout repository -# uses: actions/checkout@v4 -# with: -# fetch-depth: 1 -# -# - name: Get release artifacts -# uses: actions/download-artifact@v4 -# with: -# path: artifacts -# merge-multiple: true -# -# - name: Set release assets and version -# shell: bash -# run: | -# # Set environment variables -# macos_sha="$(cat ./artifacts/gman-macos.sha256 | awk '{print $1}')" -# echo "MACOS_SHA=$macos_sha" >> $GITHUB_ENV -# macos_sha_arm="$(cat ./artifacts/gman-macos-arm64.sha256 | awk '{print $1}')" -# echo "MACOS_SHA_ARM=$macos_sha_arm" >> $GITHUB_ENV -# linux_sha="$(cat ./artifacts/gman-linux-musl.sha256 | awk '{print $1}')" -# echo "LINUX_SHA=$linux_sha" >> $GITHUB_ENV -# release_version="$(cat ./artifacts/release-version)" -# echo "RELEASE_VERSION=$release_version" >> $GITHUB_ENV -# -# - name: Validate release environment variables -# run: | -# echo "Release SHA macos: ${{ env.MACOS_SHA }}" -# echo "Release SHA macos-arm: ${{ env.MACOS_SHA_ARM }}" -# echo "Release SHA linux musl: ${{ env.LINUX_SHA }}" -# echo "Release version: ${{ env.RELEASE_VERSION }}" -# -# - name: Execute Homebrew packaging script -# if: env.ACT != 'true' -# run: | -# # run packaging script -# python "./deployment/homebrew/packager.py" ${{ env.RELEASE_VERSION }} "./deployment/homebrew/gman.rb.template" "./gman.rb" ${{ env.MACOS_SHA }} ${{ env.MACOS_SHA_ARM }} ${{ env.LINUX_SHA }} -# -# - name: Push changes to Homebrew tap -# if: env.ACT != 'true' -# env: -# TOKEN: ${{ secrets.GMAN_GITHUB_TOKEN }} -# run: | -# # push to Git -# git config --global user.name "Dark-Alex-17" -# git config --global user.email "alex.j.tusa@gmail.com" -# git clone https://Dark-Alex-17:${{ secrets.GMAN_GITHUB_TOKEN }}@github.com/Dark-Alex-17/homebrew-gman.git -# rm homebrew-gman/Formula/gman.rb -# cp gman.rb homebrew-gman/Formula -# cd homebrew-gman -# git add . -# git diff-index --quiet HEAD || git commit -am "Update formula for G-Man release ${{ env.RELEASE_VERSION }}" -# git push https://$TOKEN@github.com/Dark-Alex-17/homebrew-gman.git -# -# publish-crate: -# needs: publish-github-release -# name: Publish Crate -# runs-on: ubuntu-latest -# steps: -# - name: Check if actor is repository owner -# if: ${{ github.actor != github.repository_owner && env.ACT != 'true' }} -# run: | -# echo "You are not authorized to run this workflow." -# exit 1 -# -# - name: Checkout -# uses: actions/checkout@v4 -# with: -# fetch-depth: 0 -# -# - name: Get bumped Cargo files (Act) -# if: env.ACT == 'true' -# uses: actions/download-artifact@v4 -# with: -# name: bumped-cargo-files -# path: ${{ github.workspace }} -# -# - name: Ensure repository is up-to-date -# if: env.ACT != 'true' -# run: | -# git fetch --all -# git pull -# -# - uses: actions/cache@v3 -# name: Cache Cargo registry -# with: -# path: ~/.cargo/registry -# key: ${{ runner.os }}-cargo-registry-${{ hashFiles('Cargo.lock') }} -# -# - uses: actions/cache@v3 -# with: -# path: ~/.cargo/bin -# key: ${{ runner.os }}-cargo-bin-${{ hashFiles('.github/workflows/release.yml') }} -# -# - name: Install Rust stable -# uses: dtolnay/rust-toolchain@stable -# -# - uses: katyo/publish-crates@v2 -# if: env.ACT != 'true' -# with: -# registry-token: ${{ secrets.CARGO_REGISTRY_TOKEN }} + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 1 + + - name: Get release artifacts + uses: actions/download-artifact@v4 + with: + path: artifacts + merge-multiple: true + + - name: Set release assets and version + shell: pwsh + run: | + # Read the first column from the SHA256 file + $windows_sha = Get-Content ./artifacts/gman-x86_64-pc-windows-msvc.sha256 | ForEach-Object { $_.Split(' ')[0] } + Add-Content -Path $env:GITHUB_ENV -Value "WINDOWS_SHA=$windows_sha" + + # Read the release version from the release-version file + $release_version = Get-Content ./artifacts/release-version + Add-Content -Path $env:GITHUB_ENV -Value "RELEASE_VERSION=$release_version" + + - name: Validate release environment variables + run: | + echo "Release SHA windows: ${{ env.WINDOWS_SHA }}" + echo "Release version: ${{ env.RELEASE_VERSION }}" + + - name: Package and Publish package to Chocolatey + if: env.ACT != 'true' + run: | + mkdir ./deployment/chocolatey/tools + # Run packaging script + python "./deployment/chocolatey/packager.py" ${{ env.RELEASE_VERSION }} "./deployment/chocolatey/gman.nuspec.template" "./deployment/chocolatey/gman.nuspec" ${{ env.WINDOWS_SHA }} + python "./deployment/chocolatey/packager.py" ${{ env.RELEASE_VERSION }} "./deployment/chocolatey/chocolateyinstall.ps1.template" "./deployment/chocolatey/tools/chocolateyinstall.ps1" ${{ env.WINDOWS_SHA }} + + # Publish to Chocolatey + cd ./deployment/chocolatey + choco pack + echo y | choco install gman -dv -s . + $version = gman --version + $version = $version -replace " ", "." + choco push $version.nupkg -s https://push.chocolatey.org/ --api-key ${{ secrets.CHOCOLATEY_API_KEY }}; + + publish-homebrew-formula: + needs: [publish-github-release] + name: Update Homebrew formulas + runs-on: ubuntu-latest + steps: + - name: Check if actor is repository owner + if: ${{ github.actor != github.repository_owner && env.ACT != 'true' }} + run: | + echo "You are not authorized to run this workflow." + exit 1 + + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 1 + + - name: Get release artifacts + uses: actions/download-artifact@v4 + with: + path: artifacts + merge-multiple: true + + - name: Set release assets and version + shell: bash + run: | + # Set environment variables + macos_sha="$(cat ./artifacts/gman-x86_64-apple-darwin.sha256 | awk '{print $1}')" + echo "MACOS_SHA=$macos_sha" >> $GITHUB_ENV + macos_sha_arm="$(cat ./artifacts/gman-aarch64-apple-darwin.sha256 | awk '{print $1}')" + echo "MACOS_SHA_ARM=$macos_sha_arm" >> $GITHUB_ENV + linux_sha="$(cat ./artifacts/gman-x86_64-unknown-linux-musl.sha256 | awk '{print $1}')" + echo "LINUX_SHA=$linux_sha" >> $GITHUB_ENV + release_version="$(cat ./artifacts/release-version)" + echo "RELEASE_VERSION=$release_version" >> $GITHUB_ENV + + - name: Validate release environment variables + run: | + echo "Release SHA macos: ${{ env.MACOS_SHA }}" + echo "Release SHA macos-arm: ${{ env.MACOS_SHA_ARM }}" + echo "Release SHA linux musl: ${{ env.LINUX_SHA }}" + echo "Release version: ${{ env.RELEASE_VERSION }}" + + - name: Execute Homebrew packaging script + if: env.ACT != 'true' + run: | + # run packaging script + python "./deployment/homebrew/packager.py" ${{ env.RELEASE_VERSION }} "./deployment/homebrew/gman.rb.template" "./gman.rb" ${{ env.MACOS_SHA }} ${{ env.MACOS_SHA_ARM }} ${{ env.LINUX_SHA }} + + - name: Push changes to Homebrew tap + if: env.ACT != 'true' + env: + TOKEN: ${{ secrets.GMAN_GITHUB_TOKEN }} + run: | + # push to Git + git config --global user.name "Dark-Alex-17" + git config --global user.email "alex.j.tusa@gmail.com" + git clone https://Dark-Alex-17:${{ secrets.GMAN_GITHUB_TOKEN }}@github.com/Dark-Alex-17/homebrew-gman.git + rm homebrew-gman/Formula/gman.rb + cp gman.rb homebrew-gman/Formula + cd homebrew-gman + git add . + git diff-index --quiet HEAD || git commit -am "Update formula for G-Man release ${{ env.RELEASE_VERSION }}" + git push https://$TOKEN@github.com/Dark-Alex-17/homebrew-gman.git + + publish-crate: + needs: publish-github-release + name: Publish Crate + runs-on: ubuntu-latest + steps: + - name: Check if actor is repository owner + if: ${{ github.actor != github.repository_owner && env.ACT != 'true' }} + run: | + echo "You are not authorized to run this workflow." + exit 1 + + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Get bumped Cargo files (Act) + if: env.ACT == 'true' + uses: actions/download-artifact@v4 + with: + name: bumped-cargo-files + path: ${{ github.workspace }} + + - name: Ensure repository is up-to-date + if: env.ACT != 'true' + run: | + git fetch --all + git pull + + - name: Install Rust stable + uses: dtolnay/rust-toolchain@stable + + - uses: katyo/publish-crates@v2 + if: env.ACT != 'true' + with: + registry-token: ${{ secrets.CARGO_REGISTRY_TOKEN }} diff --git a/CHANGELOG.md b/CHANGELOG.md index c1e2912..da43d4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,35 +8,3 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [0.0.1] - 2025-09-10 ### Other - -## v0.0.2 (2025-09-14) - -### Fix - -- Revert back hacky stuff so I can test with act now -- Attempting to use pre-generated bindgens for the aws-lc-sys library -- Install openSSL differently to make this work -- Address edge case for unknown_musl targets -- Install LLVM prereqs for release flow -- Updated the release flow to install the external bindgen-cli - -## v0.0.1 (2025-09-12) - -### Feat - -- Azure Key Vault support -- GCP Secret Manager support -- Full AWS SecretsManager support -- AWS Secrets Manager support -- Added two new flags to output where gman writes logs to and where it expects the config file to live - -### Fix - -- Made the vault file location more fault tolerant -- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests - -### Refactor - -- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions -- Made the creation of the log directories a bit more fault tolerant -- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky diff --git a/Cargo.lock b/Cargo.lock index 9b4adfa..2cc613c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gman" -version = "0.0.2" +version = "0.0.1" dependencies = [ "anyhow", "argon2", diff --git a/Cargo.toml b/Cargo.toml index aefd9ab..46c4d95 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gman" -version = "0.0.2" +version = "0.0.1" edition = "2024" authors = ["Alex Clarke "] description = "Universal secret management and injection tool" From c0c0ae0b99447b4fcd7d65d3dd06c59fbd2460df Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 15 Sep 2025 00:01:26 +0000 Subject: [PATCH 46/67] =?UTF-8?q?bump:=20version=200.0.1=20=E2=86=92=200.1?= =?UTF-8?q?.0=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 32 ++++++++++++++++++++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index da43d4e..da0ffc2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,3 +8,35 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [0.0.1] - 2025-09-10 ### Other + +## v0.1.0 (2025-09-15) + +### Fix + +- Revert back hacky stuff so I can test with act now +- Attempting to use pre-generated bindgens for the aws-lc-sys library +- Install openSSL differently to make this work +- Address edge case for unknown_musl targets +- Install LLVM prereqs for release flow +- Updated the release flow to install the external bindgen-cli + +## v0.0.1 (2025-09-12) + +### Feat + +- Azure Key Vault support +- GCP Secret Manager support +- Full AWS SecretsManager support +- AWS Secrets Manager support +- Added two new flags to output where gman writes logs to and where it expects the config file to live + +### Fix + +- Made the vault file location more fault tolerant +- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests + +### Refactor + +- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions +- Made the creation of the log directories a bit more fault tolerant +- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky diff --git a/Cargo.lock b/Cargo.lock index 2cc613c..544da2b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gman" -version = "0.0.1" +version = "0.1.0" dependencies = [ "anyhow", "argon2", diff --git a/Cargo.toml b/Cargo.toml index 46c4d95..61a597d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gman" -version = "0.0.1" +version = "0.1.0" edition = "2024" authors = ["Alex Clarke "] description = "Universal secret management and injection tool" From 595917bb2b7645d4b85d62f49e761c052053a49c Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 18:22:51 -0600 Subject: [PATCH 47/67] ci: Fix bug in artifact directory name to be unique per release --- .github/workflows/release.yml | 4 ++-- CHANGELOG.md | 32 -------------------------------- Cargo.lock | 2 +- Cargo.toml | 2 +- 4 files changed, 4 insertions(+), 36 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3bd78e7..50b04f0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -126,7 +126,7 @@ jobs: - name: Generate changelog for the version bump id: changelog run: | - changelog=$(conventional-changelog -p angular -i CHANGELOG.md -s --from ${{ env.prev_version }} --to ${{ env.version }}) + changelog=$(conventional-changelog -p angular -i CHANGELOG.md --from ${{ env.prev_version }} --to ${{ env.version }}) echo "$changelog" > artifacts/changelog.md echo "changelog_body=$(cat artifacts/changelog.md)" >> $GITHUB_ENV @@ -356,7 +356,7 @@ jobs: - name: Upload artifacts uses: actions/upload-artifact@v4 with: - name: artifacts-${{ env.RELEASE_NAME }} + name: artifacts-v${{ env.RELEASE_VERSION }} path: artifacts overwrite: true diff --git a/CHANGELOG.md b/CHANGELOG.md index da0ffc2..da43d4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,35 +8,3 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [0.0.1] - 2025-09-10 ### Other - -## v0.1.0 (2025-09-15) - -### Fix - -- Revert back hacky stuff so I can test with act now -- Attempting to use pre-generated bindgens for the aws-lc-sys library -- Install openSSL differently to make this work -- Address edge case for unknown_musl targets -- Install LLVM prereqs for release flow -- Updated the release flow to install the external bindgen-cli - -## v0.0.1 (2025-09-12) - -### Feat - -- Azure Key Vault support -- GCP Secret Manager support -- Full AWS SecretsManager support -- AWS Secrets Manager support -- Added two new flags to output where gman writes logs to and where it expects the config file to live - -### Fix - -- Made the vault file location more fault tolerant -- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests - -### Refactor - -- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions -- Made the creation of the log directories a bit more fault tolerant -- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky diff --git a/Cargo.lock b/Cargo.lock index 544da2b..2cc613c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gman" -version = "0.1.0" +version = "0.0.1" dependencies = [ "anyhow", "argon2", diff --git a/Cargo.toml b/Cargo.toml index 61a597d..46c4d95 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gman" -version = "0.1.0" +version = "0.0.1" edition = "2024" authors = ["Alex Clarke "] description = "Universal secret management and injection tool" From 1c02106bdcaebf5b7ef0950311898ba67248c03e Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 18:27:56 -0600 Subject: [PATCH 48/67] ci: Fix bug in changelog generation --- .github/workflows/release.yml | 2 +- CHANGELOG.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 50b04f0..ded1535 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -126,7 +126,7 @@ jobs: - name: Generate changelog for the version bump id: changelog run: | - changelog=$(conventional-changelog -p angular -i CHANGELOG.md --from ${{ env.prev_version }} --to ${{ env.version }}) + changelog=$(conventional-changelog -p angular -i CHANGELOG.md --from ${{ env.prev_version }} --to v${{ env.version }}) echo "$changelog" > artifacts/changelog.md echo "changelog_body=$(cat artifacts/changelog.md)" >> $GITHUB_ENV diff --git a/CHANGELOG.md b/CHANGELOG.md index da43d4e..e790568 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,6 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [0.0.1] - 2025-09-10 +## v0.0.1 (2025-09-10) ### Other From 00080543bdf16a504b10a67f03d7a862006ec538 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 18:30:30 -0600 Subject: [PATCH 49/67] ci: Migrated conventional-changelog to conventionalcommits --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ded1535..fb54302 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -126,7 +126,7 @@ jobs: - name: Generate changelog for the version bump id: changelog run: | - changelog=$(conventional-changelog -p angular -i CHANGELOG.md --from ${{ env.prev_version }} --to v${{ env.version }}) + changelog=$(conventional-changelog -p conventionalcommits -i CHANGELOG.md --from ${{ env.prev_version }} --to v${{ env.version }}) echo "$changelog" > artifacts/changelog.md echo "changelog_body=$(cat artifacts/changelog.md)" >> $GITHUB_ENV From fbd2503136bba23aa1bce238a7ee669764150221 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 18:33:30 -0600 Subject: [PATCH 50/67] fix: Potential bug in changelog variable generation --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index fb54302..263e1e9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -126,7 +126,7 @@ jobs: - name: Generate changelog for the version bump id: changelog run: | - changelog=$(conventional-changelog -p conventionalcommits -i CHANGELOG.md --from ${{ env.prev_version }} --to v${{ env.version }}) + changelog="$(conventional-changelog -p conventionalcommits -i CHANGELOG.md --from ${{ env.prev_version }} --to v${{ env.version }})" echo "$changelog" > artifacts/changelog.md echo "changelog_body=$(cat artifacts/changelog.md)" >> $GITHUB_ENV From 71f4781780fefe86ccff0792a1efe8def8e8df4d Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 18:38:18 -0600 Subject: [PATCH 51/67] fix: Pass the changelog to the GHA properly using a file --- .github/workflows/release.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 263e1e9..d5a2b85 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -126,9 +126,7 @@ jobs: - name: Generate changelog for the version bump id: changelog run: | - changelog="$(conventional-changelog -p conventionalcommits -i CHANGELOG.md --from ${{ env.prev_version }} --to v${{ env.version }})" - echo "$changelog" > artifacts/changelog.md - echo "changelog_body=$(cat artifacts/changelog.md)" >> $GITHUB_ENV + conventional-changelog -p conventionalcommits -i CHANGELOG.md --from ${{ env.prev_version }} --to v${{ env.version }} > artifacts/changelog.md - name: Push changes if: env.ACT != 'true' @@ -343,7 +341,7 @@ jobs: ${{ steps.package.outputs.sha }} tag_name: v${{ env.RELEASE_VERSION }} name: "v${{ env.RELEASE_VERSION }}" - body: ${{ env.changelog_body }} + body_path: artifacts/changelog.md prerelease: false - name: Add artifacts From 966b69b43baf2b0f45bb331dac4a137c0e6b050f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 15 Sep 2025 00:39:08 +0000 Subject: [PATCH 52/67] =?UTF-8?q?bump:=20version=200.0.1=20=E2=86=92=200.1?= =?UTF-8?q?.0=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 13 +++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e790568..14cf494 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,19 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## v0.1.0 (2025-09-15) + +### Fix + +- Pass the changelog to the GHA properly using a file +- Potential bug in changelog variable generation +- Revert back hacky stuff so I can test with act now +- Attempting to use pre-generated bindgens for the aws-lc-sys library +- Install openSSL differently to make this work +- Address edge case for unknown_musl targets +- Install LLVM prereqs for release flow +- Updated the release flow to install the external bindgen-cli + ## v0.0.1 (2025-09-10) ### Other diff --git a/Cargo.lock b/Cargo.lock index 2cc613c..544da2b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gman" -version = "0.0.1" +version = "0.1.0" dependencies = [ "anyhow", "argon2", diff --git a/Cargo.toml b/Cargo.toml index 46c4d95..61a597d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gman" -version = "0.0.1" +version = "0.1.0" edition = "2024" authors = ["Alex Clarke "] description = "Universal secret management and injection tool" From 9116d1ed5319b4d78edbf7ea2a7c3664d0f5572c Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 18:43:55 -0600 Subject: [PATCH 53/67] ci: Modify changelog generation and output --- .github/workflows/release.yml | 4 +--- CHANGELOG.md | 15 +-------------- Cargo.lock | 2 +- Cargo.toml | 2 +- 4 files changed, 4 insertions(+), 19 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d5a2b85..e1cf8b0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -221,13 +221,11 @@ jobs: run: | release_version="$(cat ./artifacts/release-version)" echo "RELEASE_VERSION=$release_version" >> $GITHUB_ENV - changelog_body="$(cat ./artifacts/changelog.md)" - echo "changelog_body=$(cat artifacts/changelog.md)" >> $GITHUB_ENV - name: Validate release environment variables run: | echo "Release version: ${{ env.RELEASE_VERSION }}" - echo "Changelog body: ${{ env.changelog_body }}" + echo "Changelog body: $(cat artifacts/changelog.md)" - name: Get bumped Cargo files (Act) if: env.ACT == 'true' diff --git a/CHANGELOG.md b/CHANGELOG.md index 14cf494..da43d4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,19 +5,6 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## v0.1.0 (2025-09-15) - -### Fix - -- Pass the changelog to the GHA properly using a file -- Potential bug in changelog variable generation -- Revert back hacky stuff so I can test with act now -- Attempting to use pre-generated bindgens for the aws-lc-sys library -- Install openSSL differently to make this work -- Address edge case for unknown_musl targets -- Install LLVM prereqs for release flow -- Updated the release flow to install the external bindgen-cli - -## v0.0.1 (2025-09-10) +## [0.0.1] - 2025-09-10 ### Other diff --git a/Cargo.lock b/Cargo.lock index 544da2b..2cc613c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gman" -version = "0.1.0" +version = "0.0.1" dependencies = [ "anyhow", "argon2", diff --git a/Cargo.toml b/Cargo.toml index 61a597d..46c4d95 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gman" -version = "0.1.0" +version = "0.0.1" edition = "2024" authors = ["Alex Clarke "] description = "Universal secret management and injection tool" From 8a79de2fc87bb448f8f2ea2b078ac626f016c787 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 15 Sep 2025 00:45:15 +0000 Subject: [PATCH 54/67] =?UTF-8?q?bump:=20version=200.0.1=20=E2=86=92=200.1?= =?UTF-8?q?.0=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 34 ++++++++++++++++++++++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index da43d4e..168d794 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,3 +8,37 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [0.0.1] - 2025-09-10 ### Other + +## v0.1.0 (2025-09-15) + +### Fix + +- Pass the changelog to the GHA properly using a file +- Potential bug in changelog variable generation +- Revert back hacky stuff so I can test with act now +- Attempting to use pre-generated bindgens for the aws-lc-sys library +- Install openSSL differently to make this work +- Address edge case for unknown_musl targets +- Install LLVM prereqs for release flow +- Updated the release flow to install the external bindgen-cli + +## v0.0.1 (2025-09-12) + +### Feat + +- Azure Key Vault support +- GCP Secret Manager support +- Full AWS SecretsManager support +- AWS Secrets Manager support +- Added two new flags to output where gman writes logs to and where it expects the config file to live + +### Fix + +- Made the vault file location more fault tolerant +- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests + +### Refactor + +- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions +- Made the creation of the log directories a bit more fault tolerant +- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky diff --git a/Cargo.lock b/Cargo.lock index 2cc613c..544da2b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gman" -version = "0.0.1" +version = "0.1.0" dependencies = [ "anyhow", "argon2", diff --git a/Cargo.toml b/Cargo.toml index 46c4d95..61a597d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gman" -version = "0.0.1" +version = "0.1.0" edition = "2024" authors = ["Alex Clarke "] description = "Universal secret management and injection tool" From 81f7e86adc0cbb58613299e383f648b1211f3b25 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 19:02:18 -0600 Subject: [PATCH 55/67] ci: Fixed typo in artifact upload --- .github/workflows/release.yml | 2 +- CHANGELOG.md | 36 ----------------------------------- Cargo.lock | 2 +- Cargo.toml | 2 +- 4 files changed, 3 insertions(+), 39 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e1cf8b0..564373b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -352,7 +352,7 @@ jobs: - name: Upload artifacts uses: actions/upload-artifact@v4 with: - name: artifacts-v${{ env.RELEASE_VERSION }} + name: artifacts-v${{ env.RELEASE_VERSION }}-${{ matrix.target }} path: artifacts overwrite: true diff --git a/CHANGELOG.md b/CHANGELOG.md index 168d794..6327d89 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,39 +6,3 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [0.0.1] - 2025-09-10 - -### Other - -## v0.1.0 (2025-09-15) - -### Fix - -- Pass the changelog to the GHA properly using a file -- Potential bug in changelog variable generation -- Revert back hacky stuff so I can test with act now -- Attempting to use pre-generated bindgens for the aws-lc-sys library -- Install openSSL differently to make this work -- Address edge case for unknown_musl targets -- Install LLVM prereqs for release flow -- Updated the release flow to install the external bindgen-cli - -## v0.0.1 (2025-09-12) - -### Feat - -- Azure Key Vault support -- GCP Secret Manager support -- Full AWS SecretsManager support -- AWS Secrets Manager support -- Added two new flags to output where gman writes logs to and where it expects the config file to live - -### Fix - -- Made the vault file location more fault tolerant -- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests - -### Refactor - -- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions -- Made the creation of the log directories a bit more fault tolerant -- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky diff --git a/Cargo.lock b/Cargo.lock index 544da2b..2cc613c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gman" -version = "0.1.0" +version = "0.0.1" dependencies = [ "anyhow", "argon2", diff --git a/Cargo.toml b/Cargo.toml index 61a597d..46c4d95 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gman" -version = "0.1.0" +version = "0.0.1" edition = "2024" authors = ["Alex Clarke "] description = "Universal secret management and injection tool" From 9e740ec550f27c0823f1996128c89c381ad57e75 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 15 Sep 2025 01:03:26 +0000 Subject: [PATCH 56/67] =?UTF-8?q?bump:=20version=200.0.1=20=E2=86=92=200.1?= =?UTF-8?q?.0=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 34 ++++++++++++++++++++++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6327d89..59a509c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,3 +6,37 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [0.0.1] - 2025-09-10 + +## v0.1.0 (2025-09-15) + +### Fix + +- Pass the changelog to the GHA properly using a file +- Potential bug in changelog variable generation +- Revert back hacky stuff so I can test with act now +- Attempting to use pre-generated bindgens for the aws-lc-sys library +- Install openSSL differently to make this work +- Address edge case for unknown_musl targets +- Install LLVM prereqs for release flow +- Updated the release flow to install the external bindgen-cli + +## v0.0.1 (2025-09-12) + +### Feat + +- Azure Key Vault support +- GCP Secret Manager support +- Full AWS SecretsManager support +- AWS Secrets Manager support +- Added two new flags to output where gman writes logs to and where it expects the config file to live + +### Fix + +- Made the vault file location more fault tolerant +- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests + +### Refactor + +- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions +- Made the creation of the log directories a bit more fault tolerant +- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky diff --git a/Cargo.lock b/Cargo.lock index 2cc613c..544da2b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gman" -version = "0.0.1" +version = "0.1.0" dependencies = [ "anyhow", "argon2", diff --git a/Cargo.toml b/Cargo.toml index 46c4d95..61a597d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gman" -version = "0.0.1" +version = "0.1.0" edition = "2024" authors = ["Alex Clarke "] description = "Universal secret management and injection tool" From 6adc4ce228d2172eed38010c1c90083cebf72419 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 19:30:28 -0600 Subject: [PATCH 57/67] ci: Potential typo in chocolatey package deploy --- .github/workflows/release.yml | 2 +- CHANGELOG.md | 34 ---------------------------------- Cargo.lock | 2 +- Cargo.toml | 2 +- 4 files changed, 3 insertions(+), 37 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 564373b..c6daa33 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -407,7 +407,7 @@ jobs: cd ./deployment/chocolatey choco pack echo y | choco install gman -dv -s . - $version = gman --version + $version = gman.exe --version $version = $version -replace " ", "." choco push $version.nupkg -s https://push.chocolatey.org/ --api-key ${{ secrets.CHOCOLATEY_API_KEY }}; diff --git a/CHANGELOG.md b/CHANGELOG.md index 59a509c..6327d89 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,37 +6,3 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [0.0.1] - 2025-09-10 - -## v0.1.0 (2025-09-15) - -### Fix - -- Pass the changelog to the GHA properly using a file -- Potential bug in changelog variable generation -- Revert back hacky stuff so I can test with act now -- Attempting to use pre-generated bindgens for the aws-lc-sys library -- Install openSSL differently to make this work -- Address edge case for unknown_musl targets -- Install LLVM prereqs for release flow -- Updated the release flow to install the external bindgen-cli - -## v0.0.1 (2025-09-12) - -### Feat - -- Azure Key Vault support -- GCP Secret Manager support -- Full AWS SecretsManager support -- AWS Secrets Manager support -- Added two new flags to output where gman writes logs to and where it expects the config file to live - -### Fix - -- Made the vault file location more fault tolerant -- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests - -### Refactor - -- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions -- Made the creation of the log directories a bit more fault tolerant -- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky diff --git a/Cargo.lock b/Cargo.lock index 544da2b..2cc613c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gman" -version = "0.1.0" +version = "0.0.1" dependencies = [ "anyhow", "argon2", diff --git a/Cargo.toml b/Cargo.toml index 61a597d..46c4d95 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gman" -version = "0.1.0" +version = "0.0.1" edition = "2024" authors = ["Alex Clarke "] description = "Universal secret management and injection tool" From 21127f3ec3b95a38c0ef5505559908612904acc2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 15 Sep 2025 01:32:17 +0000 Subject: [PATCH 58/67] =?UTF-8?q?bump:=20version=200.0.1=20=E2=86=92=200.1?= =?UTF-8?q?.0=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 34 ++++++++++++++++++++++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6327d89..59a509c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,3 +6,37 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [0.0.1] - 2025-09-10 + +## v0.1.0 (2025-09-15) + +### Fix + +- Pass the changelog to the GHA properly using a file +- Potential bug in changelog variable generation +- Revert back hacky stuff so I can test with act now +- Attempting to use pre-generated bindgens for the aws-lc-sys library +- Install openSSL differently to make this work +- Address edge case for unknown_musl targets +- Install LLVM prereqs for release flow +- Updated the release flow to install the external bindgen-cli + +## v0.0.1 (2025-09-12) + +### Feat + +- Azure Key Vault support +- GCP Secret Manager support +- Full AWS SecretsManager support +- AWS Secrets Manager support +- Added two new flags to output where gman writes logs to and where it expects the config file to live + +### Fix + +- Made the vault file location more fault tolerant +- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests + +### Refactor + +- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions +- Made the creation of the log directories a bit more fault tolerant +- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky diff --git a/Cargo.lock b/Cargo.lock index 2cc613c..544da2b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gman" -version = "0.0.1" +version = "0.1.0" dependencies = [ "anyhow", "argon2", diff --git a/Cargo.toml b/Cargo.toml index 46c4d95..61a597d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gman" -version = "0.0.1" +version = "0.1.0" edition = "2024" authors = ["Alex Clarke "] description = "Universal secret management and injection tool" From 4c30bc7e7d6d796fbe07baab13b822cc0954ff5f Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 20:00:03 -0600 Subject: [PATCH 59/67] ci: Attempting to fix path errors in chocolatey install --- .github/workflows/release.yml | 5 ++-- CHANGELOG.md | 34 ---------------------------- Cargo.lock | 2 +- Cargo.toml | 2 +- deployment/homebrew/gman.rb.template | 2 +- 5 files changed, 6 insertions(+), 39 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c6daa33..a718dbc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -406,8 +406,9 @@ jobs: # Publish to Chocolatey cd ./deployment/chocolatey choco pack - echo y | choco install gman -dv -s . - $version = gman.exe --version + choco install gman --yes -dv -s . + $exe = Get-ChildItem "$env:ChocolateyInstall\lib\gman\tools\gman*.exe" -ErrorAction Stop | Select-Object -First 1 -Expand FullName + $version = & $exe --version $version = $version -replace " ", "." choco push $version.nupkg -s https://push.chocolatey.org/ --api-key ${{ secrets.CHOCOLATEY_API_KEY }}; diff --git a/CHANGELOG.md b/CHANGELOG.md index 59a509c..6327d89 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,37 +6,3 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [0.0.1] - 2025-09-10 - -## v0.1.0 (2025-09-15) - -### Fix - -- Pass the changelog to the GHA properly using a file -- Potential bug in changelog variable generation -- Revert back hacky stuff so I can test with act now -- Attempting to use pre-generated bindgens for the aws-lc-sys library -- Install openSSL differently to make this work -- Address edge case for unknown_musl targets -- Install LLVM prereqs for release flow -- Updated the release flow to install the external bindgen-cli - -## v0.0.1 (2025-09-12) - -### Feat - -- Azure Key Vault support -- GCP Secret Manager support -- Full AWS SecretsManager support -- AWS Secrets Manager support -- Added two new flags to output where gman writes logs to and where it expects the config file to live - -### Fix - -- Made the vault file location more fault tolerant -- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests - -### Refactor - -- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions -- Made the creation of the log directories a bit more fault tolerant -- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky diff --git a/Cargo.lock b/Cargo.lock index 544da2b..2cc613c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gman" -version = "0.1.0" +version = "0.0.1" dependencies = [ "anyhow", "argon2", diff --git a/Cargo.toml b/Cargo.toml index 61a597d..46c4d95 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gman" -version = "0.1.0" +version = "0.0.1" edition = "2024" authors = ["Alex Clarke "] description = "Universal secret management and injection tool" diff --git a/deployment/homebrew/gman.rb.template b/deployment/homebrew/gman.rb.template index 1fbe370..4ed310b 100644 --- a/deployment/homebrew/gman.rb.template +++ b/deployment/homebrew/gman.rb.template @@ -1,6 +1,6 @@ # Documentation: https://docs.brew.sh/Formula-Cookbook # https://rubydoc.brew.sh/Formula -class GMan < Formula +class Gman < Formula desc "Universal command line credential management and injection tool" homepage "https://github.com/Dark-Alex-17/gman" if OS.mac? and Hardware::CPU.arm? From f0d763c26977281ce39a1c0e54d52d63aaa2ab9d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 15 Sep 2025 02:01:03 +0000 Subject: [PATCH 60/67] =?UTF-8?q?bump:=20version=200.0.1=20=E2=86=92=200.1?= =?UTF-8?q?.0=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 34 ++++++++++++++++++++++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6327d89..59a509c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,3 +6,37 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [0.0.1] - 2025-09-10 + +## v0.1.0 (2025-09-15) + +### Fix + +- Pass the changelog to the GHA properly using a file +- Potential bug in changelog variable generation +- Revert back hacky stuff so I can test with act now +- Attempting to use pre-generated bindgens for the aws-lc-sys library +- Install openSSL differently to make this work +- Address edge case for unknown_musl targets +- Install LLVM prereqs for release flow +- Updated the release flow to install the external bindgen-cli + +## v0.0.1 (2025-09-12) + +### Feat + +- Azure Key Vault support +- GCP Secret Manager support +- Full AWS SecretsManager support +- AWS Secrets Manager support +- Added two new flags to output where gman writes logs to and where it expects the config file to live + +### Fix + +- Made the vault file location more fault tolerant +- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests + +### Refactor + +- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions +- Made the creation of the log directories a bit more fault tolerant +- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky diff --git a/Cargo.lock b/Cargo.lock index 2cc613c..544da2b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gman" -version = "0.0.1" +version = "0.1.0" dependencies = [ "anyhow", "argon2", diff --git a/Cargo.toml b/Cargo.toml index 46c4d95..61a597d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gman" -version = "0.0.1" +version = "0.1.0" edition = "2024" authors = ["Alex Clarke "] description = "Universal secret management and injection tool" From a2106a06a10ba9dadf9495b56cc4dd9c82961aa4 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 20:32:35 -0600 Subject: [PATCH 61/67] ci: Fix chocolatey install --- .github/workflows/release.yml | 12 +++++++++--- CHANGELOG.md | 34 ---------------------------------- Cargo.lock | 2 +- Cargo.toml | 2 +- 4 files changed, 11 insertions(+), 39 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a718dbc..e7986f0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -407,12 +407,18 @@ jobs: cd ./deployment/chocolatey choco pack choco install gman --yes -dv -s . - $exe = Get-ChildItem "$env:ChocolateyInstall\lib\gman\tools\gman*.exe" -ErrorAction Stop | Select-Object -First 1 -Expand FullName + # Verify install succeeded + choco list --local-only | Select-String '^gman ' | Out-Null + + # Run the EXE directly from the installed package folder + $exe = Get-ChildItem "$env:ChocolateyInstall\lib\gman\tools\gman*.exe" -ErrorAction Stop | + Select-Object -First 1 -ExpandProperty FullName + $version = & $exe --version $version = $version -replace " ", "." - choco push $version.nupkg -s https://push.chocolatey.org/ --api-key ${{ secrets.CHOCOLATEY_API_KEY }}; + choco push "$version.nupkg" -s https://push.chocolatey.org/ --api-key ${{ secrets.CHOCOLATEY_API_KEY }} - publish-homebrew-formula: +publish-homebrew-formula: needs: [publish-github-release] name: Update Homebrew formulas runs-on: ubuntu-latest diff --git a/CHANGELOG.md b/CHANGELOG.md index 59a509c..6327d89 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,37 +6,3 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [0.0.1] - 2025-09-10 - -## v0.1.0 (2025-09-15) - -### Fix - -- Pass the changelog to the GHA properly using a file -- Potential bug in changelog variable generation -- Revert back hacky stuff so I can test with act now -- Attempting to use pre-generated bindgens for the aws-lc-sys library -- Install openSSL differently to make this work -- Address edge case for unknown_musl targets -- Install LLVM prereqs for release flow -- Updated the release flow to install the external bindgen-cli - -## v0.0.1 (2025-09-12) - -### Feat - -- Azure Key Vault support -- GCP Secret Manager support -- Full AWS SecretsManager support -- AWS Secrets Manager support -- Added two new flags to output where gman writes logs to and where it expects the config file to live - -### Fix - -- Made the vault file location more fault tolerant -- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests - -### Refactor - -- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions -- Made the creation of the log directories a bit more fault tolerant -- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky diff --git a/Cargo.lock b/Cargo.lock index 544da2b..2cc613c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gman" -version = "0.1.0" +version = "0.0.1" dependencies = [ "anyhow", "argon2", diff --git a/Cargo.toml b/Cargo.toml index 61a597d..46c4d95 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gman" -version = "0.1.0" +version = "0.0.1" edition = "2024" authors = ["Alex Clarke "] description = "Universal secret management and injection tool" From 1385aacc62195c32e21650323f2783389cb40a16 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 20:42:31 -0600 Subject: [PATCH 62/67] ci: fix bug after config refactor for persisting user prompted local sync changes to config file --- src/config.rs | 1 + src/providers/local.rs | 155 +++++++++++++++++++++++++++++++-- tests/providers/local_tests.rs | 2 + 3 files changed, 153 insertions(+), 5 deletions(-) diff --git a/src/config.rs b/src/config.rs index 1d3c7ce..2b086ea 100644 --- a/src/config.rs +++ b/src/config.rs @@ -144,6 +144,7 @@ impl ProviderConfig { match &mut self.provider_type { SupportedProvider::Local { provider_def } => { debug!("Using local secret provider"); + provider_def.runtime_provider_name = self.name.clone(); provider_def } SupportedProvider::AwsSecretsManager { provider_def } => { diff --git a/src/providers/local.rs b/src/providers/local.rs index 298e799..e57b9e5 100644 --- a/src/providers/local.rs +++ b/src/providers/local.rs @@ -5,9 +5,9 @@ use std::path::{Path, PathBuf}; use std::{env, fs}; use zeroize::Zeroize; -use crate::config::Config; -use crate::providers::SecretProvider; +use crate::config::{Config, get_config_file_path, load_config}; use crate::providers::git_sync::{SyncOpts, repo_name_from_url, sync_and_push}; +use crate::providers::{SecretProvider, SupportedProvider}; use crate::{ ARGON_M_COST_KIB, ARGON_P, ARGON_T_COST, HEADER, KDF, KEY_LEN, NONCE_LEN, SALT_LEN, VERSION, }; @@ -54,6 +54,8 @@ pub struct LocalProvider { #[validate(email)] pub git_user_email: Option, pub git_executable: Option, + #[serde(skip)] + pub runtime_provider_name: Option, } impl Default for LocalProvider { @@ -65,6 +67,7 @@ impl Default for LocalProvider { git_user_name: None, git_user_email: None, git_executable: None, + runtime_provider_name: None, } } } @@ -185,9 +188,7 @@ impl SecretProvider for LocalProvider { } if config_changed { - debug!("Saving updated config"); - confy::store("gman", "config", &self) - .with_context(|| "failed to save updated config")?; + self.persist_git_settings_to_config()?; } let sync_opts = SyncOpts { @@ -203,6 +204,53 @@ impl SecretProvider for LocalProvider { } impl LocalProvider { + fn persist_git_settings_to_config(&self) -> Result<()> { + debug!("Saving updated config (only current local provider)"); + + let mut cfg = load_config().with_context(|| "failed to load existing config")?; + + let target_name = self.runtime_provider_name.clone(); + let mut updated = false; + for pc in cfg.providers.iter_mut() { + if let SupportedProvider::Local { provider_def } = &mut pc.provider_type { + let matches_name = match (&pc.name, &target_name) { + (Some(n), Some(t)) => n == t, + (Some(_), None) => false, + _ => false, + }; + if matches_name || target_name.is_none() { + provider_def.git_branch = self.git_branch.clone(); + provider_def.git_remote_url = self.git_remote_url.clone(); + provider_def.git_user_name = self.git_user_name.clone(); + provider_def.git_user_email = self.git_user_email.clone(); + provider_def.git_executable = self.git_executable.clone(); + updated = true; + if matches_name { + break; + } + } + } + } + + if !updated { + bail!("unable to find matching local provider in config to update"); + } + + let path = get_config_file_path()?; + let ext = path.extension().and_then(|s| s.to_str()).unwrap_or(""); + if ext.eq_ignore_ascii_case("yml") || ext.eq_ignore_ascii_case("yaml") { + if let Some(parent) = path.parent() { + fs::create_dir_all(parent)?; + } + let s = serde_yaml::to_string(&cfg)?; + fs::write(&path, s).with_context(|| format!("failed to write {}", path.display()))?; + } else { + confy::store("gman", "config", &cfg) + .with_context(|| "failed to save updated config via confy")?; + } + + Ok(()) + } fn repo_dir_for_config(&self) -> Result> { if let Some(remote) = &self.git_remote_url { let name = repo_name_from_url(remote); @@ -424,6 +472,7 @@ mod tests { use super::*; use pretty_assertions::assert_eq; use secrecy::{ExposeSecret, SecretString}; + use std::env as std_env; use tempfile::tempdir; #[test] @@ -458,9 +507,105 @@ mod tests { fs::write(&file, "secretpw\n").unwrap(); let provider = LocalProvider { password_file: Some(file), + runtime_provider_name: None, ..LocalProvider::default() }; let pw = provider.get_password().unwrap(); assert_eq!(pw.expose_secret(), "secretpw"); } + + #[test] + fn persist_only_target_local_provider_git_settings() { + let td = tempdir().unwrap(); + let xdg = td.path().join("xdg"); + let app_dir = xdg.join("gman"); + fs::create_dir_all(&app_dir).unwrap(); + unsafe { + std_env::set_var("XDG_CONFIG_HOME", &xdg); + } + + let initial_yaml = indoc::indoc! { + "--- + default_provider: local + providers: + - name: local + type: local + password_file: /tmp/.gman_pass + git_branch: main + git_remote_url: null + git_user_name: null + git_user_email: null + git_executable: null + - name: other + type: local + git_branch: main + git_remote_url: git@github.com:someone/else.git + run_configs: + - name: echo + secrets: [API_KEY] + " + }; + let cfg_path = app_dir.join("config.yml"); + fs::write(&cfg_path, initial_yaml).unwrap(); + + let provider = LocalProvider { + password_file: None, + git_branch: Some("dev".into()), + git_remote_url: Some("git@github.com:user/repo.git".into()), + git_user_name: Some("Test User".into()), + git_user_email: Some("test@example.com".into()), + git_executable: Some(PathBuf::from("/usr/bin/git")), + runtime_provider_name: Some("local".into()), + }; + + provider + .persist_git_settings_to_config() + .expect("persist ok"); + + let content = fs::read_to_string(&cfg_path).unwrap(); + let cfg: crate::config::Config = serde_yaml::from_str(&content).unwrap(); + + assert_eq!(cfg.default_provider.as_deref(), Some("local")); + assert!(cfg.run_configs.is_some()); + assert_eq!(cfg.run_configs.as_ref().unwrap().len(), 1); + + let p0 = &cfg.providers[0]; + assert_eq!(p0.name.as_deref(), Some("local")); + match &p0.provider_type { + SupportedProvider::Local { provider_def } => { + assert_eq!(provider_def.git_branch.as_deref(), Some("dev")); + assert_eq!( + provider_def.git_remote_url.as_deref(), + Some("git@github.com:user/repo.git") + ); + assert_eq!(provider_def.git_user_name.as_deref(), Some("Test User")); + assert_eq!( + provider_def.git_user_email.as_deref(), + Some("test@example.com") + ); + assert_eq!( + provider_def.git_executable.as_ref(), + Some(&PathBuf::from("/usr/bin/git")) + ); + } + _ => panic!("expected local provider"), + } + + let p1 = &cfg.providers[1]; + assert_eq!(p1.name.as_deref(), Some("other")); + match &p1.provider_type { + SupportedProvider::Local { provider_def } => { + assert_eq!(provider_def.git_branch.as_deref(), Some("main")); + assert_eq!( + provider_def.git_remote_url.as_deref(), + Some("git@github.com:someone/else.git") + ); + } + _ => panic!("expected local provider"), + } + + unsafe { + std_env::remove_var("XDG_CONFIG_HOME"); + } + } } diff --git a/tests/providers/local_tests.rs b/tests/providers/local_tests.rs index 96685c3..8ca0d7e 100644 --- a/tests/providers/local_tests.rs +++ b/tests/providers/local_tests.rs @@ -34,6 +34,7 @@ fn test_local_provider_valid() { git_user_name: None, git_user_email: Some("test@example.com".to_string()), git_executable: None, + runtime_provider_name: None, }; assert!(provider.validate().is_ok()); @@ -48,6 +49,7 @@ fn test_local_provider_invalid_email() { git_user_name: None, git_user_email: Some("test".to_string()), git_executable: None, + runtime_provider_name: None, }; assert!(config.validate().is_err()); From 2098aa65c1564715b5798a73fe4ca2dfb3cfa911 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 20:44:21 -0600 Subject: [PATCH 63/67] ci: fixed copy/paste typo --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e7986f0..ebdf44f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -418,7 +418,7 @@ jobs: $version = $version -replace " ", "." choco push "$version.nupkg" -s https://push.chocolatey.org/ --api-key ${{ secrets.CHOCOLATEY_API_KEY }} -publish-homebrew-formula: + publish-homebrew-formula: needs: [publish-github-release] name: Update Homebrew formulas runs-on: ubuntu-latest From 353ce1678244872f4a2de2b7132d420129e722c7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 15 Sep 2025 02:52:29 +0000 Subject: [PATCH 64/67] =?UTF-8?q?bump:=20version=200.0.1=20=E2=86=92=200.1?= =?UTF-8?q?.0=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 34 ++++++++++++++++++++++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6327d89..59a509c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,3 +6,37 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [0.0.1] - 2025-09-10 + +## v0.1.0 (2025-09-15) + +### Fix + +- Pass the changelog to the GHA properly using a file +- Potential bug in changelog variable generation +- Revert back hacky stuff so I can test with act now +- Attempting to use pre-generated bindgens for the aws-lc-sys library +- Install openSSL differently to make this work +- Address edge case for unknown_musl targets +- Install LLVM prereqs for release flow +- Updated the release flow to install the external bindgen-cli + +## v0.0.1 (2025-09-12) + +### Feat + +- Azure Key Vault support +- GCP Secret Manager support +- Full AWS SecretsManager support +- AWS Secrets Manager support +- Added two new flags to output where gman writes logs to and where it expects the config file to live + +### Fix + +- Made the vault file location more fault tolerant +- Attempting to maybe be a bit more explicit about config file handling to fix MacOS tests + +### Refactor + +- Refactor configuration structs directly into the provider definition to simplify validation, structs, and future extensions +- Made the creation of the log directories a bit more fault tolerant +- Renamed the provider field in a config file to type to make things a little easier to understand; also removed husky diff --git a/Cargo.lock b/Cargo.lock index 2cc613c..544da2b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gman" -version = "0.0.1" +version = "0.1.0" dependencies = [ "anyhow", "argon2", diff --git a/Cargo.toml b/Cargo.toml index 46c4d95..61a597d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gman" -version = "0.0.1" +version = "0.1.0" edition = "2024" authors = ["Alex Clarke "] description = "Universal secret management and injection tool" From 2885decede2f5584895a87438cef08c8016f681a Mon Sep 17 00:00:00 2001 From: Alex Clarke <39523942+Dark-Alex-17@users.noreply.github.com> Date: Sun, 14 Sep 2025 21:38:02 -0600 Subject: [PATCH 65/67] fix: improved user messages for local provider sync set up --- src/providers/local.rs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/providers/local.rs b/src/providers/local.rs index e57b9e5..038bf7c 100644 --- a/src/providers/local.rs +++ b/src/providers/local.rs @@ -172,7 +172,7 @@ impl SecretProvider for LocalProvider { config_changed = true; debug!("Prompting user to set git_remote in config for sync"); let remote: String = Input::with_theme(&ColorfulTheme::default()) - .with_prompt("Enter remote git URL to sync with") + .with_prompt("Enter remote git URL to sync with (e.g. 'git@github.com:user/repo.git')") .validate_with(|s: &String| { LocalProvider { git_remote_url: Some(s.clone()), @@ -221,9 +221,7 @@ impl LocalProvider { if matches_name || target_name.is_none() { provider_def.git_branch = self.git_branch.clone(); provider_def.git_remote_url = self.git_remote_url.clone(); - provider_def.git_user_name = self.git_user_name.clone(); - provider_def.git_user_email = self.git_user_email.clone(); - provider_def.git_executable = self.git_executable.clone(); + updated = true; if matches_name { break; @@ -251,6 +249,7 @@ impl LocalProvider { Ok(()) } + fn repo_dir_for_config(&self) -> Result> { if let Some(remote) = &self.git_remote_url { let name = repo_name_from_url(remote); From 76df717fea9912bd1ff6c5fc442344bf2ae4d422 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 21:42:44 -0600 Subject: [PATCH 66/67] style: improved formatting in l9cal provider --- src/providers/local.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/providers/local.rs b/src/providers/local.rs index 038bf7c..36a8d02 100644 --- a/src/providers/local.rs +++ b/src/providers/local.rs @@ -172,7 +172,9 @@ impl SecretProvider for LocalProvider { config_changed = true; debug!("Prompting user to set git_remote in config for sync"); let remote: String = Input::with_theme(&ColorfulTheme::default()) - .with_prompt("Enter remote git URL to sync with (e.g. 'git@github.com:user/repo.git')") + .with_prompt( + "Enter remote git URL to sync with (e.g. 'git@github.com:user/repo.git')", + ) .validate_with(|s: &String| { LocalProvider { git_remote_url: Some(s.clone()), From ae6fe8be445ed54ee49d13e20231dd561590a126 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sun, 14 Sep 2025 21:45:39 -0600 Subject: [PATCH 67/67] test: fixed local provider user test --- src/providers/local.rs | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/providers/local.rs b/src/providers/local.rs index 36a8d02..eea7c38 100644 --- a/src/providers/local.rs +++ b/src/providers/local.rs @@ -579,15 +579,6 @@ mod tests { provider_def.git_remote_url.as_deref(), Some("git@github.com:user/repo.git") ); - assert_eq!(provider_def.git_user_name.as_deref(), Some("Test User")); - assert_eq!( - provider_def.git_user_email.as_deref(), - Some("test@example.com") - ); - assert_eq!( - provider_def.git_executable.as_ref(), - Some(&PathBuf::from("/usr/bin/git")) - ); } _ => panic!("expected local provider"), }