Revert "chore: use hermit in goose" (#2759)

This commit is contained in:
Lifei Zhou
2025-06-03 09:50:01 +10:00
committed by GitHub
parent a89fa18502
commit e56354603f
34 changed files with 114 additions and 148 deletions

View File

@@ -48,8 +48,14 @@ jobs:
sed -i.bak 's/^version = ".*"/version = "'${{ inputs.version }}'"/' Cargo.toml
rm -f Cargo.toml.bak
- name: Setup Rust
uses: dtolnay/rust-toolchain@38b70195107dddab2c7bbd522bcf763bac00963b # pin@stable
with:
toolchain: stable
target: ${{ matrix.architecture }}-${{ matrix.target-suffix }}
- name: Install cross
run: source ./bin/activate-hermit && cargo install cross --git https://github.com/cross-rs/cross
run: cargo install cross --git https://github.com/cross-rs/cross
- name: Build CLI
env:
@@ -58,7 +64,12 @@ jobs:
RUST_BACKTRACE: 1
CROSS_VERBOSE: 1
run: |
source ./bin/activate-hermit
# Install protoc if on macOS
if [ "${{ matrix.os }}" = "macos-latest" ]; then
brew install protobuf
export PROTOC=$(which protoc)
fi
export TARGET="${{ matrix.architecture }}-${{ matrix.target-suffix }}"
rustup target add "${TARGET}"
echo "Building for target: ${TARGET}"

View File

@@ -87,14 +87,18 @@ jobs:
rm -f Cargo.toml.bak
# Update version in package.json
source ./bin/activate-hermit
cd ui/desktop
npm version ${{ inputs.version }} --no-git-tag-version --allow-same-version
- name: Setup Rust
uses: dtolnay/rust-toolchain@38b70195107dddab2c7bbd522bcf763bac00963b # pin@stable
with:
toolchain: stable
targets: x86_64-apple-darwin
# Pre-build cleanup to ensure enough disk space
- name: Pre-build cleanup
run: |
source ./bin/activate-hermit
echo "Performing pre-build cleanup..."
# Clean npm cache
npm cache clean --force || true
@@ -133,7 +137,7 @@ jobs:
# Build specifically for Intel architecture
- name: Build goosed for Intel
run: source ./bin/activate-hermit && cargo build --release -p goose-server --target x86_64-apple-darwin
run: cargo build --release -p goose-server --target x86_64-apple-darwin
# Post-build cleanup to free space
- name: Post-build cleanup
@@ -160,8 +164,13 @@ jobs:
CERTIFICATE_OSX_APPLICATION: ${{ secrets.CERTIFICATE_OSX_APPLICATION }}
CERTIFICATE_PASSWORD: ${{ secrets.CERTIFICATE_PASSWORD }}
- name: Set up Node.js
uses: actions/setup-node@7c12f8017d5436eb855f1ed4399f037a36fbd9e8 # pin@v2
with:
node-version: 'lts/*'
- name: Install dependencies
run: source ../../bin/activate-hermit && npm ci
run: npm ci
working-directory: ui/desktop
# Configure Electron builder for Intel architecture
@@ -178,7 +187,6 @@ jobs:
- name: Make Unsigned App
if: ${{ !inputs.signing }}
run: |
source ../../bin/activate-hermit
attempt=0
max_attempts=2
until [ $attempt -ge $max_attempts ]; do
@@ -196,7 +204,6 @@ jobs:
- name: Make Signed App
if: ${{ inputs.signing }}
run: |
source ../../bin/activate-hermit
attempt=0
max_attempts=2
until [ $attempt -ge $max_attempts ]; do

View File

@@ -135,7 +135,6 @@ jobs:
sed -i.bak "s/^version = \".*\"/version = \"${VERSION}\"/" Cargo.toml
rm -f Cargo.toml.bak
source ./bin/activate-hermit
# Update version in package.json
cd ui/desktop
npm version "${VERSION}" --no-git-tag-version --allow-same-version
@@ -143,7 +142,6 @@ jobs:
# Pre-build cleanup to ensure enough disk space
- name: Pre-build cleanup
run: |
source ./bin/activate-hermit
echo "Performing pre-build cleanup..."
# Clean npm cache
npm cache clean --force || true
@@ -156,6 +154,16 @@ jobs:
# Check disk space after cleanup
df -h
- name: Install protobuf
run: |
brew install protobuf
echo "PROTOC=$(which protoc)" >> $GITHUB_ENV
- name: Setup Rust
uses: dtolnay/rust-toolchain@38b70195107dddab2c7bbd522bcf763bac00963b # pin@stable
with:
toolchain: stable
- name: Cache Cargo registry
uses: actions/cache@2f8e54208210a422b2efd51efaa6bd6d7ca8920f # pin@v3
with:
@@ -182,7 +190,7 @@ jobs:
# Build the project
- name: Build goosed
run: source ./bin/activate-hermit && cargo build --release -p goose-server
run: cargo build --release -p goose-server
# Post-build cleanup to free space
- name: Post-build cleanup
@@ -208,8 +216,13 @@ jobs:
CERTIFICATE_OSX_APPLICATION: ${{ secrets.CERTIFICATE_OSX_APPLICATION }}
CERTIFICATE_PASSWORD: ${{ secrets.CERTIFICATE_PASSWORD }}
- name: Set up Node.js
uses: actions/setup-node@7c12f8017d5436eb855f1ed4399f037a36fbd9e8 # pin@v2
with:
node-version: 'lts/*'
- name: Install dependencies
run: source ../../bin/activate-hermit && npm ci
run: npm ci
working-directory: ui/desktop
# Check disk space before bundling
@@ -219,7 +232,6 @@ jobs:
- name: Make Unsigned App
if: ${{ !inputs.signing }}
run: |
source ../../bin/activate-hermit
attempt=0
max_attempts=2
until [ $attempt -ge $max_attempts ]; do
@@ -241,7 +253,6 @@ jobs:
APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
run: |
attempt=0
max_attempts=2
until [ $attempt -ge $max_attempts ]; do

View File

@@ -17,8 +17,13 @@ jobs:
- name: Checkout Code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # pin@v4
- name: Setup Rust
uses: dtolnay/rust-toolchain@38b70195107dddab2c7bbd522bcf763bac00963b # pin@stable
with:
toolchain: stable
- name: Run cargo fmt
run: source ./bin/activate-hermit && cargo fmt --check
run: cargo fmt --check
rust-build-and-test:
name: Build and Test Rust Project
@@ -52,7 +57,12 @@ jobs:
- name: Install Dependencies
run: |
sudo apt update -y
sudo apt install -y libdbus-1-dev gnome-keyring libxcb1-dev
sudo apt install -y libdbus-1-dev gnome-keyring libxcb1-dev protobuf-compiler
- name: Setup Rust
uses: dtolnay/rust-toolchain@38b70195107dddab2c7bbd522bcf763bac00963b # pin@stable
with:
toolchain: stable
- name: Cache Cargo Registry
uses: actions/cache@2f8e54208210a422b2efd51efaa6bd6d7ca8920f # pin@v3
@@ -81,7 +91,7 @@ jobs:
- name: Build and Test
run: |
gnome-keyring-daemon --components=secrets --daemonize --unlock <<< 'foobar'
source ../bin/activate-hermit && cargo test
cargo test
working-directory: crates
# Add disk space cleanup before linting
@@ -110,7 +120,7 @@ jobs:
run: df -h
- name: Lint
run: source ./bin/activate-hermit && cargo clippy -- -D warnings
run: cargo clippy -- -D warnings
desktop-lint:
name: Lint Electron Desktop App
@@ -119,12 +129,17 @@ jobs:
- name: Checkout Code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # pin@v4
- name: Set up Node.js
uses: actions/setup-node@7c12f8017d5436eb855f1ed4399f037a36fbd9e8 # pin@v2
with:
node-version: "lts/*"
- name: Install Dependencies
run: source ../../bin/activate-hermit && npm ci
run: npm ci
working-directory: ui/desktop
- name: Run Lint
run: source ../../bin/activate-hermit && npm run lint:check
run: npm run lint:check
working-directory: ui/desktop
# Faster Desktop App build for PRs only

3
.gitignore vendored
View File

@@ -24,7 +24,8 @@ target/
./ui/desktop/out
# Hermit
.hermit/
/.hermit/
/bin/
debug_*.txt

View File

@@ -1,4 +1,11 @@
# Configuration for cross-compiling using cross
[build.env]
passthrough = [
"PROTOC",
"RUST_LOG",
"RUST_BACKTRACE"
]
[target.aarch64-unknown-linux-gnu]
xargo = false
pre-build = [
@@ -6,10 +13,20 @@ pre-build = [
"dpkg --add-architecture arm64",
"""\
apt-get update --fix-missing && apt-get install -y \
curl \
unzip \
pkg-config \
libssl-dev:arm64 \
libdbus-1-dev:arm64 \
libxcb1-dev:arm64
""",
"""\
curl -LO https://github.com/protocolbuffers/protobuf/releases/download/v31.1/protoc-31.1-linux-x86_64.zip && \
unzip -o protoc-31.1-linux-x86_64.zip -d /usr/local && \
chmod +x /usr/local/bin/protoc && \
ln -sf /usr/local/bin/protoc /usr/bin/protoc && \
which protoc && \
protoc --version
"""
]
@@ -18,15 +35,40 @@ xargo = false
pre-build = [
"""\
apt-get update && apt-get install -y \
curl \
unzip \
pkg-config \
libssl-dev \
libdbus-1-dev \
libxcb1-dev
""",
"""\
curl -LO https://github.com/protocolbuffers/protobuf/releases/download/v31.1/protoc-31.1-linux-x86_64.zip && \
unzip -o protoc-31.1-linux-x86_64.zip -d /usr/local && \
chmod +x /usr/local/bin/protoc && \
ln -sf /usr/local/bin/protoc /usr/bin/protoc && \
which protoc && \
protoc --version
"""
]
env = { "PROTOC" = "/usr/bin/protoc", "PATH" = "/usr/local/bin:${PATH}" }
[target.x86_64-pc-windows-gnu]
image = "dockcross/windows-static-x64:latest"
# Enable verbose output for Windows builds
build-std = true
env = { "RUST_LOG" = "debug", "RUST_BACKTRACE" = "1", "CROSS_VERBOSE" = "1" }
pre-build = [
"""\
apt-get update && apt-get install -y \
curl \
unzip
""",
"""\
curl -LO https://github.com/protocolbuffers/protobuf/releases/download/v31.1/protoc-31.1-linux-x86_64.zip && \
unzip protoc-31.1-linux-x86_64.zip -d /usr/local && \
chmod +x /usr/local/bin/protoc && \
export PROTOC=/usr/local/bin/protoc && \
protoc --version
"""
]

View File

@@ -1 +0,0 @@
hermit

View File

@@ -1 +0,0 @@
hermit

View File

@@ -1 +0,0 @@
hermit

View File

@@ -1,7 +0,0 @@
# Hermit environment
This is a [Hermit](https://github.com/cashapp/hermit) bin directory.
The symlinks in this directory are managed by Hermit and will automatically
download and install Hermit itself as well as packages. These packages are
local to this environment.

View File

@@ -1,21 +0,0 @@
#!/bin/bash
# This file must be used with "source bin/activate-hermit" from bash or zsh.
# You cannot run it directly
#
# THIS FILE IS GENERATED; DO NOT MODIFY
if [ "${BASH_SOURCE-}" = "$0" ]; then
echo "You must source this script: \$ source $0" >&2
exit 33
fi
BIN_DIR="$(dirname "${BASH_SOURCE[0]:-${(%):-%x}}")"
if "${BIN_DIR}/hermit" noop > /dev/null; then
eval "$("${BIN_DIR}/hermit" activate "${BIN_DIR}/..")"
if [ -n "${BASH-}" ] || [ -n "${ZSH_VERSION-}" ]; then
hash -r 2>/dev/null
fi
echo "Hermit environment $("${HERMIT_ENV}"/bin/hermit env HERMIT_ENV) activated"
fi

View File

@@ -1,24 +0,0 @@
#!/usr/bin/env fish
# This file must be sourced with "source bin/activate-hermit.fish" from Fish shell.
# You cannot run it directly.
#
# THIS FILE IS GENERATED; DO NOT MODIFY
if status is-interactive
set BIN_DIR (dirname (status --current-filename))
if "$BIN_DIR/hermit" noop > /dev/null
# Source the activation script generated by Hermit
"$BIN_DIR/hermit" activate "$BIN_DIR/.." | source
# Clear the command cache if applicable
functions -c > /dev/null 2>&1
# Display activation message
echo "Hermit environment $($HERMIT_ENV/bin/hermit env HERMIT_ENV) activated"
end
else
echo "You must source this script: source $argv[0]" >&2
exit 33
end

View File

@@ -1 +0,0 @@
.rustup-1.25.2.pkg

View File

@@ -1 +0,0 @@
.rustup-1.25.2.pkg

View File

@@ -1 +0,0 @@
.rustup-1.25.2.pkg

View File

@@ -1 +0,0 @@
.rustup-1.25.2.pkg

View File

@@ -1 +0,0 @@
.rustup-1.25.2.pkg

View File

@@ -1 +0,0 @@
.node-22.9.0.pkg

View File

@@ -1,43 +0,0 @@
#!/bin/bash
#
# THIS FILE IS GENERATED; DO NOT MODIFY
set -eo pipefail
export HERMIT_USER_HOME=~
if [ -z "${HERMIT_STATE_DIR}" ]; then
case "$(uname -s)" in
Darwin)
export HERMIT_STATE_DIR="${HERMIT_USER_HOME}/Library/Caches/hermit"
;;
Linux)
export HERMIT_STATE_DIR="${XDG_CACHE_HOME:-${HERMIT_USER_HOME}/.cache}/hermit"
;;
esac
fi
export HERMIT_DIST_URL="${HERMIT_DIST_URL:-https://github.com/cashapp/hermit/releases/download/stable}"
HERMIT_CHANNEL="$(basename "${HERMIT_DIST_URL}")"
export HERMIT_CHANNEL
export HERMIT_EXE=${HERMIT_EXE:-${HERMIT_STATE_DIR}/pkg/hermit@${HERMIT_CHANNEL}/hermit}
if [ ! -x "${HERMIT_EXE}" ]; then
echo "Bootstrapping ${HERMIT_EXE} from ${HERMIT_DIST_URL}" 1>&2
INSTALL_SCRIPT="$(mktemp)"
# This value must match that of the install script
INSTALL_SCRIPT_SHA256="09ed936378857886fd4a7a4878c0f0c7e3d839883f39ca8b4f2f242e3126e1c6"
if [ "${INSTALL_SCRIPT_SHA256}" = "BYPASS" ]; then
curl -fsSL "${HERMIT_DIST_URL}/install.sh" -o "${INSTALL_SCRIPT}"
else
# Install script is versioned by its sha256sum value
curl -fsSL "${HERMIT_DIST_URL}/install-${INSTALL_SCRIPT_SHA256}.sh" -o "${INSTALL_SCRIPT}"
# Verify install script's sha256sum
openssl dgst -sha256 "${INSTALL_SCRIPT}" | \
awk -v EXPECTED="$INSTALL_SCRIPT_SHA256" \
'$2!=EXPECTED {print "Install script sha256 " $2 " does not match " EXPECTED; exit 1}'
fi
/bin/bash "${INSTALL_SCRIPT}" 1>&2
fi
exec "${HERMIT_EXE}" --level=fatal exec "$0" -- "$@"

View File

@@ -1,4 +0,0 @@
manage-git = false
github-token-auth {
}

View File

@@ -1 +0,0 @@
.node-22.9.0.pkg

View File

@@ -1 +0,0 @@
.node-22.9.0.pkg

View File

@@ -1 +0,0 @@
.node-22.9.0.pkg

View File

@@ -1 +0,0 @@
.protoc-31.1.pkg

View File

@@ -1 +0,0 @@
.rustup-1.25.2.pkg

View File

@@ -1 +0,0 @@
.rustup-1.25.2.pkg

View File

@@ -1 +0,0 @@
.rustup-1.25.2.pkg

View File

@@ -1 +0,0 @@
.rustup-1.25.2.pkg

View File

@@ -1 +0,0 @@
.rustup-1.25.2.pkg

View File

@@ -1 +0,0 @@
.rustup-1.25.2.pkg

View File

@@ -1 +0,0 @@
.rustup-1.25.2.pkg

View File

@@ -1 +0,0 @@
.rustup-1.25.2.pkg

View File

@@ -1 +0,0 @@
.rustup-1.25.2.pkg

View File

@@ -28,7 +28,7 @@ fn default_version() -> String {
///
/// # Example
///
///
/// ```
/// use goose::recipe::Recipe;
///
/// // Using the builder pattern
@@ -52,7 +52,7 @@ fn default_version() -> String {
/// author: None,
/// parameters: None,
/// };
///
/// ```
#[derive(Serialize, Deserialize, Debug)]
pub struct Recipe {
// Required fields
@@ -166,7 +166,7 @@ impl Recipe {
///
/// # Example
///
///
/// ```
/// use goose::recipe::Recipe;
///
/// let recipe = Recipe::builder()
@@ -175,7 +175,7 @@ impl Recipe {
/// .instructions("Act as a helpful assistant")
/// .build()
/// .expect("Failed to build Recipe: missing required fields");
///
/// ```
pub fn builder() -> RecipeBuilder {
RecipeBuilder {
version: default_version(),