mirror of
https://github.com/aljazceru/goose.git
synced 2025-12-19 07:04:21 +01:00
Revert "chore: use hermit in goose" (#2759)
This commit is contained in:
15
.github/workflows/build-cli.yml
vendored
15
.github/workflows/build-cli.yml
vendored
@@ -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}"
|
||||
|
||||
19
.github/workflows/bundle-desktop-intel.yml
vendored
19
.github/workflows/bundle-desktop-intel.yml
vendored
@@ -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
|
||||
|
||||
23
.github/workflows/bundle-desktop.yml
vendored
23
.github/workflows/bundle-desktop.yml
vendored
@@ -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
|
||||
|
||||
27
.github/workflows/ci.yml
vendored
27
.github/workflows/ci.yml
vendored
@@ -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
3
.gitignore
vendored
@@ -24,7 +24,8 @@ target/
|
||||
./ui/desktop/out
|
||||
|
||||
# Hermit
|
||||
.hermit/
|
||||
/.hermit/
|
||||
/bin/
|
||||
|
||||
debug_*.txt
|
||||
|
||||
|
||||
42
Cross.toml
42
Cross.toml
@@ -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
|
||||
"""
|
||||
]
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
hermit
|
||||
@@ -1 +0,0 @@
|
||||
hermit
|
||||
@@ -1 +0,0 @@
|
||||
hermit
|
||||
@@ -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.
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -1 +0,0 @@
|
||||
.rustup-1.25.2.pkg
|
||||
@@ -1 +0,0 @@
|
||||
.rustup-1.25.2.pkg
|
||||
@@ -1 +0,0 @@
|
||||
.rustup-1.25.2.pkg
|
||||
@@ -1 +0,0 @@
|
||||
.rustup-1.25.2.pkg
|
||||
@@ -1 +0,0 @@
|
||||
.node-22.9.0.pkg
|
||||
43
bin/hermit
43
bin/hermit
@@ -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" -- "$@"
|
||||
@@ -1,4 +0,0 @@
|
||||
manage-git = false
|
||||
|
||||
github-token-auth {
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
.protoc-31.1.pkg
|
||||
@@ -1 +0,0 @@
|
||||
.rustup-1.25.2.pkg
|
||||
@@ -1 +0,0 @@
|
||||
.rustup-1.25.2.pkg
|
||||
@@ -1 +0,0 @@
|
||||
.rustup-1.25.2.pkg
|
||||
@@ -1 +0,0 @@
|
||||
.rustup-1.25.2.pkg
|
||||
@@ -1 +0,0 @@
|
||||
.rustup-1.25.2.pkg
|
||||
@@ -1 +0,0 @@
|
||||
.rustup-1.25.2.pkg
|
||||
@@ -1 +0,0 @@
|
||||
.rustup-1.25.2.pkg
|
||||
@@ -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(),
|
||||
|
||||
Reference in New Issue
Block a user