diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml new file mode 100644 index 0000000..5ace460 --- /dev/null +++ b/.github/dependabot.yaml @@ -0,0 +1,6 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..3103004 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,109 @@ +name: soar release + +on: + push: + tags: + - "v*.*.*" +permissions: + contents: write + +jobs: + generate-changelog: + name: Generate changelog + runs-on: ubuntu-22.04 + outputs: + release_body: ${{ steps.git-cliff.outputs.content }} + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Generate a changelog + uses: orhun/git-cliff-action@main + id: git-cliff + with: + config: cliff.toml + args: -vv --latest --no-exec --github-repo ${{ github.repository }} + publish-binaries: + name: Publish binaries + needs: generate-changelog + runs-on: ${{ matrix.build.os }} + strategy: + fail-fast: false + matrix: + build: + - { + NAME: x86_64-linux, + OS: ubuntu-22.04, + TOOLCHAIN: stable, + TARGET: x86_64-unknown-linux-musl, + } + - { + NAME: aarch64-linux, + OS: ubuntu-22.04, + TOOLCHAIN: stable, + TARGET: aarch64-unknown-linux-musl, + } + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Set the release version + shell: bash + run: echo "RELEASE_VERSION=${GITHUB_REF:11}" >> $GITHUB_ENV + - name: Install dependencies + shell: bash + run: | + sudo apt-get update + sudo apt-get install -y --no-install-recommends \ + --allow-unauthenticated musl-tools b3sum + - name: Install Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: ${{ matrix.build.TOOLCHAIN }} + target: ${{ matrix.build.TARGET }} + override: true + - name: Build + uses: actions-rs/cargo@v1 + with: + use-cross: true + command: build + args: --release --locked --target ${{ matrix.build.TARGET }} + - name: Prepare release assets + shell: bash + run: | + mkdir -p release + cp {LICENSE,README.md,CHANGELOG.md} release/ + cp "target/${{ matrix.build.TARGET }}/release/soar" release/ + mv release/ soar-${{ env.RELEASE_VERSION }}/ + - name: Create release artifacts + shell: bash + run: | + cp soar-${{ env.RELEASE_VERSION }}/soar soar-${{ env.RELEASE_VERSION }}-${{ matrix.build.NAME }} + b3sum soar-${{ env.RELEASE_VERSION }}-${{ matrix.build.NAME }} \ + > soar-${{ env.RELEASE_VERSION }}-${{ matrix.build.NAME }}.b3sum + tar -czvf soar-${{ env.RELEASE_VERSION }}-${{ matrix.build.NAME }}.tar.gz \ + soar-${{ env.RELEASE_VERSION }}/ + b3sum soar-${{ env.RELEASE_VERSION }}-${{ matrix.build.NAME }}.tar.gz \ + > soar-${{ env.RELEASE_VERSION }}-${{ matrix.build.NAME }}.tar.gz.b3sum + - name: Publish to GitHub + if: ${{ !contains(github.ref, '-') }} + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: soar-${{ env.RELEASE_VERSION }}-${{ matrix.build.NAME }}* + file_glob: true + overwrite: true + tag: ${{ github.ref }} + release_name: "Release v${{ env.RELEASE_VERSION }}" + body: "${{ needs.generate-changelog.outputs.release_body }}" + - name: Publish to GitHub (pre-release) + if: ${{ contains(github.ref, '-') }} + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: soar-${{ env.RELEASE_VERSION }}-${{ matrix.build.NAME }}* + file_glob: true + overwrite: true + tag: ${{ github.ref }} + release_name: "Pre-release v${{ env.RELEASE_VERSION }}" + prerelease: true diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..9b8cf6c --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,45 @@ + +## [0.1.0] - 2024-10-10 + +### ⛰️ Features + +- *(cli)* Implement CLI commands structure - ([11f6214](https://github.com/QaidVoid/soar/commit/11f62145740ca7cdf8aa94b58aa48fa3b498e9f0)) +- *(config)* Implement config loading - ([abbaaf6](https://github.com/QaidVoid/soar/commit/abbaaf66f2325641415487db1b4705e052300131)) +- *(info)* Implement display installed package info - ([a79e9dd](https://github.com/QaidVoid/soar/commit/a79e9dd9709ebbcdd74349f02f0be2ae160d02e6)) +- *(inspect)* Add command to inspect CI logs - ([50d6b60](https://github.com/QaidVoid/soar/commit/50d6b609abe37b421a353496be69637b1a022818)) +- *(install)* Track and implement installed packages list - ([51e2f96](https://github.com/QaidVoid/soar/commit/51e2f968b4d9306154e61e2ebb44ea6df4483f1a)) +- *(install)* Implement package install - ([aaf1c89](https://github.com/QaidVoid/soar/commit/aaf1c894f9c0caf5292afe9e7b4b1de2d5550d5e)) +- *(list)* List available packages - ([17a50b7](https://github.com/QaidVoid/soar/commit/17a50b76cb921a026940ff8f8451a30e86dbb3cb)) +- *(query)* Query detailed package info - ([0f6facd](https://github.com/QaidVoid/soar/commit/0f6facd18041485ce8ac6b56ad8b07f5e79afdf0)) +- *(remove)* Implement packages removal - ([e676064](https://github.com/QaidVoid/soar/commit/e6760645621eea1119e48b073bb14f11c24b4b15)) +- *(run)* Run packages without installing them - ([16e820a](https://github.com/QaidVoid/soar/commit/16e820a2145f7c2fa32d9deaf7621e813b2e1bb7)) +- *(search)* Implement package search feature - ([313c2a5](https://github.com/QaidVoid/soar/commit/313c2a54c4149f948cb78b544299029f646a70e1)) +- *(symlink)* Implement ownership check for binary symlinks - ([6575072](https://github.com/QaidVoid/soar/commit/65750728261d769d953ec9426d27ec53d5a8ed1a)) +- *(update)* Implement update package - ([c58269b](https://github.com/QaidVoid/soar/commit/c58269b9a1a5668c68bb3ea93142c56f7a558276)) +- *(use)* Add ability to switch package variants - ([de2264d](https://github.com/QaidVoid/soar/commit/de2264db461d85beab921179f1761abf49fe20cf)) + +### 🐛 Bug Fixes + +- *(install)* Use case-sensitive package name - ([1abd650](https://github.com/QaidVoid/soar/commit/1abd6500073614e4adc245a1d97887bfa418df8e)) +- *(parse)* Fix remote registry parser - ([b8175c5](https://github.com/QaidVoid/soar/commit/b8175c513c7bd4f4827ccf9a2df3defb5bdbbbd8)) +- *(update)* Resolve update deadlock - ([e8c56bc](https://github.com/QaidVoid/soar/commit/e8c56bcf1ba913b832a4307f0329bf6564d61cff)) + +### 🚜 Refactor + +- *(command)* Update commands and cleanup on sync - ([555737c](https://github.com/QaidVoid/soar/commit/555737c044f3cd0c4e5750808941f14621fe03d5)) +- *(package)* Use binary checksum in install path - ([4a6e3c4](https://github.com/QaidVoid/soar/commit/4a6e3c406904df96a039860c83940ed7c66f6192)) +- *(project)* Re-organize whole codebase - ([2705168](https://github.com/QaidVoid/soar/commit/270516888e8cff65b078f15bc91217ef5ee6b7d2)) +- *(project)* Update data types and improve readability - ([ac4a93a](https://github.com/QaidVoid/soar/commit/ac4a93a01c7460331c98d844874020781cd5f074)) +- *(project)* Reduce complexity - ([cfc5962](https://github.com/QaidVoid/soar/commit/cfc59628235d4600f4462357c3bbe48f4b3445e9)) + +### ⚙️ Miscellaneous Tasks + +- *(README)* Add readme - ([9531d23](https://github.com/QaidVoid/soar/commit/9531d23049553fc9b04befe9ad939fd17a3ac02c)) +- *(hooks)* Add cliff & git commit hooks - ([6757cf7](https://github.com/QaidVoid/soar/commit/6757cf75aa08e7b966503a142bbc4f1a44634902)) +- *(workflow)* Add github release workflow - ([7a37b12](https://github.com/QaidVoid/soar/commit/7a37b12c3d54e94231e7b0e1dfd45e8aa9cd1bbd)) + +## New Contributors ❤️ + +* @QaidVoid made their first contribution + + diff --git a/Cargo.lock b/Cargo.lock index e749962..fac7702 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -780,6 +780,15 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +[[package]] +name = "openssl-src" +version = "300.3.2+3.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a211a18d945ef7e648cc6e0058f4c548ee46aab922ea203e0d30e966ea23647b" +dependencies = [ + "cc", +] + [[package]] name = "openssl-sys" version = "0.9.103" @@ -788,6 +797,7 @@ checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" dependencies = [ "cc", "libc", + "openssl-src", "pkg-config", "vcpkg", ] @@ -1099,6 +1109,7 @@ dependencies = [ "chrono", "clap", "futures", + "openssl", "reqwest", "rmp-serde", "serde", diff --git a/Cargo.toml b/Cargo.toml index fcffc38..1c01552 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,6 +16,7 @@ blake3 = "1.5.4" chrono = { version = "0.4.38", features = ["serde"] } clap = { version = "4.5.19", features = ["derive"] } futures = "0.3.30" +openssl = { version = "0.10.66", features = ["vendored"] } reqwest = { version = "0.12.8", features = ["blocking", "stream"] } rmp-serde = "1.3.0" serde = { version = "1.0.210", features = ["derive"] }