From 05d60eaf3cdcb62a74d88ca1c1f63cf79db824cf Mon Sep 17 00:00:00 2001 From: kz6fittycent Date: Fri, 10 Nov 2023 09:21:38 -0600 Subject: [PATCH 01/18] Snap and GH Actions for snap build testing --- .github/workflows/test-snap-can-build.yml | 25 ++++++++++++++++ snap/snapcraft.yaml | 36 +++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 .github/workflows/test-snap-can-build.yml create mode 100644 snap/snapcraft.yaml diff --git a/.github/workflows/test-snap-can-build.yml b/.github/workflows/test-snap-can-build.yml new file mode 100644 index 00000000000..64e48729f72 --- /dev/null +++ b/.github/workflows/test-snap-can-build.yml @@ -0,0 +1,25 @@ +name: 🧪 Test snap can be built on x86_64 + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - uses: snapcore/action-build@v1 + id: build + + - uses: diddlesnaps/snapcraft-review-action@v1 + with: + snap: ${{ steps.build.outputs.snap }} + isClassic: 'false' + # Plugs and Slots declarations to override default denial (requires store assertion to publish) + # plugs: ./plug-declaration.json + # slots: ./slot-declaration.json diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml new file mode 100644 index 00000000000..939e3e8be98 --- /dev/null +++ b/snap/snapcraft.yaml @@ -0,0 +1,36 @@ +name: gitoxide +adopt-info: gitoxide +summary: gitoxide is an implementation of git written in Rust +description: | + gitoxide is an implementation of git written in Rust for developing future-proof applications + which strive for correctness and performance while providing a pleasant and unsurprising + developer experience. + gitoxide provides the gix and ein binaries for use on the command-line to allow experimentation + with key features like fetch and clone, and to validate the usability and control of the API + offered by the gix crate. + gitoxide aspires to be a production-grade server implementation and the ein binary aspires to + become the default way to interact with git repositories. + +license: Apache-2.0 + +base: core20 +grade: stable +confinement: strict +compression: lzo + +apps: + gitoxide: + command: gitoxide + plugs: + - network + - home + +parts: + gitoxide: + source: https://github.com/Byron/gitoxide + source-type: git + plugin: rust + + override-pull: | + snapcraftctl pull + snapcraftctl set-version "$(git describe --tags | sed 's/^v//' | cut -d "-" -f1)" From ac0176ce4fc23b4873fd9435c1a04530aef9dfd3 Mon Sep 17 00:00:00 2001 From: kz6fittycent Date: Fri, 10 Nov 2023 09:33:01 -0600 Subject: [PATCH 02/18] switch to cmake plugin If this doesn't work, I'll just override-build --- snap/snapcraft.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 939e3e8be98..1f081c6a284 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -20,7 +20,7 @@ compression: lzo apps: gitoxide: - command: gitoxide + command: usr/bin/gitoxide plugs: - network - home @@ -29,7 +29,9 @@ parts: gitoxide: source: https://github.com/Byron/gitoxide source-type: git - plugin: rust + plugin: cmake + cmake-parameters: + - -DCMAKE_INSTALL_PREFIX=/usr override-pull: | snapcraftctl pull From fffef2e077002ad2006d6cd8197c313ad9e71f0d Mon Sep 17 00:00:00 2001 From: kz6fittycent Date: Fri, 10 Nov 2023 09:43:28 -0600 Subject: [PATCH 03/18] override-build cargo install! --- snap/snapcraft.yaml | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 1f081c6a284..333dc281c1e 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -13,7 +13,7 @@ description: | license: Apache-2.0 -base: core20 +base: core22 grade: stable confinement: strict compression: lzo @@ -32,7 +32,27 @@ parts: plugin: cmake cmake-parameters: - -DCMAKE_INSTALL_PREFIX=/usr + after: [cargo] override-pull: | snapcraftctl pull - snapcraftctl set-version "$(git describe --tags | sed 's/^v//' | cut -d "-" -f1)" + snapcraftctl set-version "$(git describe --tags | sed 's/^v//')" + + build-packages: + - rustc + - cargo + + cargo: + source: https://github.com/rust-lang/cargo + source-type: git + plugin: rust + + override-pull: | + snapcraftctl pull + snapcraftctl set-version "$(git describe --tags | sed 's/^v//' | cut -d "-" -f2)" + + build-packages: + - cargo + - rustc + - pkg-config + - librust-openssl-sys-dev From 6828270cfa072e6ebc888a69be5ac5acf72f0826 Mon Sep 17 00:00:00 2001 From: kz6fittycent Date: Fri, 10 Nov 2023 12:35:52 -0600 Subject: [PATCH 04/18] core20 and cargo compiled from source --- snap/snapcraft.yaml | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 333dc281c1e..b8b0eb13f37 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -13,14 +13,14 @@ description: | license: Apache-2.0 -base: core22 +base: core20 grade: stable confinement: strict compression: lzo apps: gitoxide: - command: usr/bin/gitoxide + command: bin/gitoxide plugs: - network - home @@ -29,18 +29,15 @@ parts: gitoxide: source: https://github.com/Byron/gitoxide source-type: git - plugin: cmake - cmake-parameters: - - -DCMAKE_INSTALL_PREFIX=/usr + plugin: rust after: [cargo] + override-build: | + cargo install --git https://github.com/Byron/gitoxide gitoxide + override-pull: | snapcraftctl pull snapcraftctl set-version "$(git describe --tags | sed 's/^v//')" - - build-packages: - - rustc - - cargo cargo: source: https://github.com/rust-lang/cargo From d2245ded0aa529d109c128af20f48a74fe2e87a1 Mon Sep 17 00:00:00 2001 From: kz6fittycent Date: Fri, 10 Nov 2023 12:58:38 -0600 Subject: [PATCH 05/18] cmake needed --- snap/snapcraft.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index b8b0eb13f37..8401afad50b 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -38,6 +38,9 @@ parts: override-pull: | snapcraftctl pull snapcraftctl set-version "$(git describe --tags | sed 's/^v//')" + + build-packages: + - cmake cargo: source: https://github.com/rust-lang/cargo From 57884967b29eb675778b31bbc6dba09f1736760a Mon Sep 17 00:00:00 2001 From: kz6fittycent Date: Fri, 10 Nov 2023 13:22:29 -0600 Subject: [PATCH 06/18] set env path --- snap/snapcraft.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 8401afad50b..00f67933d75 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -20,7 +20,9 @@ compression: lzo apps: gitoxide: - command: bin/gitoxide + command: usr/local/bin/gitoxide + environment: + PATH: $SNAP/usr/bin:$SNAP/usr/local/bin/:$PATH:$SNAP/bin/:$PATH plugs: - network - home From 282208d345809d85e7682b82b109d91117c2572d Mon Sep 17 00:00:00 2001 From: kz6fittycent Date: Fri, 10 Nov 2023 13:48:20 -0600 Subject: [PATCH 07/18] wrong binary 'gix' not 'gitoxide' --- snap/snapcraft.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 00f67933d75..dd97504b25f 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -20,7 +20,7 @@ compression: lzo apps: gitoxide: - command: usr/local/bin/gitoxide + command: bin/gix environment: PATH: $SNAP/usr/bin:$SNAP/usr/local/bin/:$PATH:$SNAP/bin/:$PATH plugs: From 2a74c82424cf4c7c426646f18e88e8aea678b4fe Mon Sep 17 00:00:00 2001 From: kz6fittycent Date: Fri, 10 Nov 2023 14:29:52 -0600 Subject: [PATCH 08/18] trying to fix path issues in snap --- snap/snapcraft.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index dd97504b25f..e34fc9a80d1 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -22,7 +22,7 @@ apps: gitoxide: command: bin/gix environment: - PATH: $SNAP/usr/bin:$SNAP/usr/local/bin/:$PATH:$SNAP/bin/:$PATH + PATH: $SNAP/bin/:$PATH plugs: - network - home @@ -35,7 +35,7 @@ parts: after: [cargo] override-build: | - cargo install --git https://github.com/Byron/gitoxide gitoxide + CARGO_TARGET_DIR=$SNAPCRAFT_PART_INSTALL/bin cargo install --git https://github.com/Byron/gitoxide gitoxide override-pull: | snapcraftctl pull From 9e5a6a3b383455435f84833062d360da06fdedd2 Mon Sep 17 00:00:00 2001 From: kz6fittycent Date: Fri, 10 Nov 2023 16:10:00 -0600 Subject: [PATCH 09/18] Lost my way... --- snap/snapcraft.yaml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index e34fc9a80d1..7b2878a509c 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -33,10 +33,7 @@ parts: source-type: git plugin: rust after: [cargo] - - override-build: | - CARGO_TARGET_DIR=$SNAPCRAFT_PART_INSTALL/bin cargo install --git https://github.com/Byron/gitoxide gitoxide - + override-pull: | snapcraftctl pull snapcraftctl set-version "$(git describe --tags | sed 's/^v//')" From 2c81852f127107291cdf65d9cf66406e5dd95feb Mon Sep 17 00:00:00 2001 From: kz6fittycent Date: Fri, 10 Nov 2023 16:32:58 -0600 Subject: [PATCH 10/18] versioning corrected --- snap/snapcraft.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 7b2878a509c..20f7a7003e2 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -10,6 +10,8 @@ description: | offered by the gix crate. gitoxide aspires to be a production-grade server implementation and the ein binary aspires to become the default way to interact with git repositories. + + To run from your terminal, type: gix license: Apache-2.0 @@ -22,7 +24,7 @@ apps: gitoxide: command: bin/gix environment: - PATH: $SNAP/bin/:$PATH + PATH: $SNAP/bin/:$PATH plugs: - network - home @@ -36,7 +38,7 @@ parts: override-pull: | snapcraftctl pull - snapcraftctl set-version "$(git describe --tags | sed 's/^v//')" + snapcraftctl set-version "$(git describe --tags | sed 's/^v//' | cut -d "-" -f3)" build-packages: - cmake From d54dccbe430e93c7ccbd3fe149f58eda10cff176 Mon Sep 17 00:00:00 2001 From: kz6fittycent Date: Fri, 10 Nov 2023 16:48:51 -0600 Subject: [PATCH 11/18] added "icon" image --- images/gix.png | Bin 0 -> 41824 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/gix.png diff --git a/images/gix.png b/images/gix.png new file mode 100644 index 0000000000000000000000000000000000000000..db08a173d61d5baad7a735007083cd5a72d92147 GIT binary patch literal 41824 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 literal 0 HcmV?d00001 From cdbd6e8f56415d82bcebfb5b304ac8992bd12893 Mon Sep 17 00:00:00 2001 From: kz6fittycent Date: Fri, 10 Nov 2023 16:53:01 -0600 Subject: [PATCH 12/18] cleaning up --- .gitignore | 15 +++++++++++++++ README.md | 16 ++++++++++++++++ snap/snapcraft.yaml | 15 ++++++++++++--- 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 7de6f627988..e2fa6c6a8fc 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,18 @@ target/ /tests/fixtures/commit-graphs/ **/generated-do-not-edit/ + +# gitginore template for creating Snap packages +# website: https://snapcraft.io/ + +parts/ +prime/ +stage/ +*.snap + +# Snapcraft global state tracking data(automatically generated) +# https://forum.snapcraft.io/t/location-to-save-global-state/768 +/snap/.snapcraft/ + +# Source archive packed by `snapcraft cleanbuild` before pushing to the LXD container +/*_source.tar.bz2 diff --git a/README.md b/README.md index 3d8c283eb63..c2a39843417 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ [![Crates.io](https://img.shields.io/crates/v/gitoxide.svg)](https://crates.io/crates/gitoxide) +[![gitoxide](https://snapcraft.io/gitoxide/badge.svg)](https://snapcraft.io/gitoxide) + `gitoxide` is an implementation of `git` written in Rust for developing future-proof applications which strive for correctness and performance while providing a pleasant and unsurprising developer experience. @@ -175,6 +177,20 @@ For Arch Linux you can download `gitoxide` from `community` repository: pacman -S gitoxide ``` +### Install the snap: + +For latest builds, based on most recent commits to `main` branch, use the `edge` channel. + +``` +sudo snap install gitoxide +``` +To run it from your terminal, type: `gitoxide` + +Set a snap alias for it to match the command syntax: +``` +sudo snap alias gitoxide gix +``` + ### From Source via Cargo `cargo` is the Rust package manager which can easily be obtained through [rustup]. With it, you can build your own binary diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 20f7a7003e2..fc57ec86596 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -11,8 +11,9 @@ description: | gitoxide aspires to be a production-grade server implementation and the ein binary aspires to become the default way to interact with git repositories. - To run from your terminal, type: gix - + To run from your terminal, type: gitoxide + Set an alias for it using the following command: sudo snap alias gitoxide gix + license: Apache-2.0 base: core20 @@ -28,7 +29,15 @@ apps: plugs: - network - home - + + ein: + command: bin/ein + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + parts: gitoxide: source: https://github.com/Byron/gitoxide From 21e533d1529d0f20a12a8c763359a933f50c8a71 Mon Sep 17 00:00:00 2001 From: kz6fittycent Date: Sat, 11 Nov 2023 22:20:39 -0600 Subject: [PATCH 13/18] Update README Added commands for snap aliases: ein and gix --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c2a39843417..fabb5980622 100644 --- a/README.md +++ b/README.md @@ -188,7 +188,8 @@ To run it from your terminal, type: `gitoxide` Set a snap alias for it to match the command syntax: ``` -sudo snap alias gitoxide gix +sudo snap alias gitoxide.gix gix +sudo snap alias gitoxide.ein ein ``` ### From Source via Cargo From d793105ac7df2353e240ecd44056a2f2003999e8 Mon Sep 17 00:00:00 2001 From: kz6fittycent Date: Wed, 15 Nov 2023 11:21:33 -0600 Subject: [PATCH 14/18] Minor cleanup Snap aliases corrected. --- README.md | 2 +- snap/snapcraft.yaml | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index fabb5980622..b15c0b036b3 100644 --- a/README.md +++ b/README.md @@ -188,7 +188,7 @@ To run it from your terminal, type: `gitoxide` Set a snap alias for it to match the command syntax: ``` -sudo snap alias gitoxide.gix gix +sudo snap alias gitoxide gix sudo snap alias gitoxide.ein ein ``` diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index fc57ec86596..59585250da4 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -12,7 +12,10 @@ description: | become the default way to interact with git repositories. To run from your terminal, type: gitoxide - Set an alias for it using the following command: sudo snap alias gitoxide gix + + Set aliases for `gix` and `ein` using the following commands: + sudo snap alias gitoxide gix + sudo snap alias gitoxide.ein ein license: Apache-2.0 From dc13b71270a9f619a5554b9b555f0a8d6015198e Mon Sep 17 00:00:00 2001 From: kz6fittycent Date: Sat, 25 Nov 2023 22:01:19 -0600 Subject: [PATCH 15/18] Node16 --- .github/workflows/test-snap-can-build.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test-snap-can-build.yml b/.github/workflows/test-snap-can-build.yml index 64e48729f72..1e18480b7da 100644 --- a/.github/workflows/test-snap-can-build.yml +++ b/.github/workflows/test-snap-can-build.yml @@ -9,7 +9,10 @@ on: jobs: build: runs-on: ubuntu-latest - + strategy: + matrix: + node-version: [16.x] # Are you are missing this specification? + steps: - uses: actions/checkout@v2 From 8babb639125cfc62ded23427501de55031cbc102 Mon Sep 17 00:00:00 2001 From: kz6fittycent Date: Wed, 29 Nov 2023 08:38:15 -0600 Subject: [PATCH 16/18] Official aliases approved See forum post: https://forum.snapcraft.io/t/gitoxide-snap-two-aliases-requested/37704/8 --- README.md | 8 +------- snap/snapcraft.yaml | 6 +----- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index b15c0b036b3..f22b135b365 100644 --- a/README.md +++ b/README.md @@ -184,13 +184,7 @@ For latest builds, based on most recent commits to `main` branch, use the `edge` ``` sudo snap install gitoxide ``` -To run it from your terminal, type: `gitoxide` - -Set a snap alias for it to match the command syntax: -``` -sudo snap alias gitoxide gix -sudo snap alias gitoxide.ein ein -``` +To run it from your terminal, type: `gix` or `ein` to access either binary in the `gitoxide` suite ### From Source via Cargo diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 59585250da4..9afbab2b995 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -11,11 +11,7 @@ description: | gitoxide aspires to be a production-grade server implementation and the ein binary aspires to become the default way to interact with git repositories. - To run from your terminal, type: gitoxide - - Set aliases for `gix` and `ein` using the following commands: - sudo snap alias gitoxide gix - sudo snap alias gitoxide.ein ein + To run it from your terminal, type: `gix` or `ein` to access either binary in the `gitoxide` suite license: Apache-2.0 From fbc01cc8b6ee8f95f5e768ff9b50ad62b77761a5 Mon Sep 17 00:00:00 2001 From: kz6fittycent Date: Wed, 29 Nov 2023 14:45:01 -0600 Subject: [PATCH 17/18] all binaries --- snap/snapcraft.yaml | 323 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 321 insertions(+), 2 deletions(-) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 9afbab2b995..9c2fdd025e0 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -11,7 +11,7 @@ description: | gitoxide aspires to be a production-grade server implementation and the ein binary aspires to become the default way to interact with git repositories. - To run it from your terminal, type: `gix` or `ein` to access either binary in the `gitoxide` suite + To run it from your terminal, type: `gix` or `ein` to access binaries in the `gitoxide` suite license: Apache-2.0 @@ -36,7 +36,326 @@ apps: plugs: - network - home - + + object: + command: bin/gix-object + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + validate: + command: bin/gix-validate + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + url: + command: bin/gix-url + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + packetline: + command: bin/gix-packetline + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + packetline-blocking: + command: bin/gix-packetline-blocking + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + transport: + command: bin/gix-transport + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + protocol: + command: bin/gix-protocol + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + pack: + command: bin/gix-pack + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + odb: + command: bin/gix-odb + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + commitgraph: + command: bin/gix-commitgraph + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + diff: + command: bin/gix-diff + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + traverse: + command: bin/gix-traverse + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + features: + command: bin/gix-features + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + credentials: + command: bin/gix-credentials + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + sec: + command: bin/gix-sec + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + quote: + command: bin/gix-quote + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + discover: + command: bin/gix-discover + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + path: + command: bin/gix-path + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + attributes: + command: bin/gix-attributes + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + ignore: + command: bin/gix-ignore + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + pathspec: + command: bin/gix-pathspec + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + index: + command: bin/gix-index + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + revision: + command: bin/gix-revision + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + revwalk: + command: bin/gix-revwalk + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + command: + command: bin/gix-command + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + prompt: + command: bin/gix-prompt + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + refspec: + command: bin/gix-refspec + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + fs: + command: bin/gix-fs + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + utils: + command: bin/gix-utils + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + hashtable: + command: bin/gix-hashtable + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + worktree: + command: bin/gix-worktree + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + bitmap: + command: bin/gix-bitmap + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + negotiate: + command: bin/gix-negotiate + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + filter: + command: bin/gix-filter + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + worktree-stream: + command: bin/gix-worktree-stream + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + archive: + command: bin/gix-archive + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + submodule: + command: bin/gix-submodule + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + status: + command: bin/gix-status + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + worktree-state: + command: bin/gix-worktree-state + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + + date: + command: bin/gix-date + environment: + PATH: $SNAP/bin/:$PATH + plugs: + - network + - home + parts: gitoxide: source: https://github.com/Byron/gitoxide From 10de03c78c19a1689abed555ed16d1ec9511016f Mon Sep 17 00:00:00 2001 From: kz6fittycent Date: Wed, 29 Nov 2023 15:15:02 -0600 Subject: [PATCH 18/18] Nope --- snap/snapcraft.yaml | 319 -------------------------------------------- 1 file changed, 319 deletions(-) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 9c2fdd025e0..0815bf1fc41 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -37,325 +37,6 @@ apps: - network - home - object: - command: bin/gix-object - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - validate: - command: bin/gix-validate - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - url: - command: bin/gix-url - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - packetline: - command: bin/gix-packetline - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - packetline-blocking: - command: bin/gix-packetline-blocking - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - transport: - command: bin/gix-transport - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - protocol: - command: bin/gix-protocol - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - pack: - command: bin/gix-pack - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - odb: - command: bin/gix-odb - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - commitgraph: - command: bin/gix-commitgraph - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - diff: - command: bin/gix-diff - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - traverse: - command: bin/gix-traverse - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - features: - command: bin/gix-features - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - credentials: - command: bin/gix-credentials - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - sec: - command: bin/gix-sec - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - quote: - command: bin/gix-quote - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - discover: - command: bin/gix-discover - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - path: - command: bin/gix-path - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - attributes: - command: bin/gix-attributes - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - ignore: - command: bin/gix-ignore - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - pathspec: - command: bin/gix-pathspec - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - index: - command: bin/gix-index - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - revision: - command: bin/gix-revision - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - revwalk: - command: bin/gix-revwalk - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - command: - command: bin/gix-command - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - prompt: - command: bin/gix-prompt - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - refspec: - command: bin/gix-refspec - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - fs: - command: bin/gix-fs - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - utils: - command: bin/gix-utils - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - hashtable: - command: bin/gix-hashtable - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - worktree: - command: bin/gix-worktree - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - bitmap: - command: bin/gix-bitmap - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - negotiate: - command: bin/gix-negotiate - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - filter: - command: bin/gix-filter - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - worktree-stream: - command: bin/gix-worktree-stream - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - archive: - command: bin/gix-archive - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - submodule: - command: bin/gix-submodule - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - status: - command: bin/gix-status - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - worktree-state: - command: bin/gix-worktree-state - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - - date: - command: bin/gix-date - environment: - PATH: $SNAP/bin/:$PATH - plugs: - - network - - home - parts: gitoxide: source: https://github.com/Byron/gitoxide