From c0a3ab3d4f1cf7d85a3cdc58f0e6d3a90372b98e Mon Sep 17 00:00:00 2001 From: alberto Date: Sat, 30 May 2026 22:25:15 +0200 Subject: [PATCH] Aggiunge azioni opencode-prompt e install-opencode --- install-opencode/action.yml | 41 ++++++++++++++++++++++++ opencode-prompt/action.yml | 64 +++++++++++++++++++++++++++++++++++++ 2 files changed, 105 insertions(+) create mode 100644 install-opencode/action.yml create mode 100644 opencode-prompt/action.yml diff --git a/install-opencode/action.yml b/install-opencode/action.yml new file mode 100644 index 0000000..9078168 --- /dev/null +++ b/install-opencode/action.yml @@ -0,0 +1,41 @@ +name: Installa OpenCode +description: Installa opencode-ai globalmente tramite npm. + +inputs: + version: + description: Versione di opencode da installare (default: latest). + required: false + default: "" + +runs: + using: composite + steps: + - name: Verifica prerequisiti + shell: bash + run: | + set -euo pipefail + if ! command -v node &> /dev/null; then + echo "ERRORE: node non trovato. Installa Node.js sul runner." + exit 1 + fi + if ! command -v npm &> /dev/null; then + echo "ERRORE: npm non trovato." + exit 1 + fi + echo "node $(node --version), npm $(npm --version)" + + - name: Installa opencode + shell: bash + run: | + set -euo pipefail + if command -v opencode &> /dev/null; then + echo "opencode giĆ  installato: $(opencode --version)" + exit 0 + fi + VERSION="${{ inputs.version }}" + if [ -n "$VERSION" ]; then + npm install -g "opencode-ai@${VERSION}" + else + npm install -g opencode-ai + fi + echo "opencode installato: $(opencode --version)" diff --git a/opencode-prompt/action.yml b/opencode-prompt/action.yml new file mode 100644 index 0000000..d9a9f58 --- /dev/null +++ b/opencode-prompt/action.yml @@ -0,0 +1,64 @@ +name: OpenCode Prompt +description: Esegue un prompt opencode sul codice del repository. + +inputs: + prompt: + description: Il prompt da passare a opencode. + required: true + api-key: + description: API key per il provider opencode. + required: true + api-provider: + description: Nome del provider (default: opencode-go). + required: false + default: "opencode-go" + model: + description: Modello AI (formato provider/model). + required: false + default: "" + agent: + description: Agente opencode da utilizzare. + required: false + default: "" + working-directory: + description: Directory di lavoro per opencode. Se vuoto, usa la radice del repo. + required: false + default: "" + +outputs: + result: + description: Output prodotto da opencode. + value: ${{ steps.esegui.outputs.result }} + +runs: + using: composite + steps: + - name: Configura autenticazione opencode + shell: bash + run: | + set -euo pipefail + mkdir -p ~/.local/share/opencode + jq -n \ + --arg provider "${{ inputs.api-provider }}" \ + --arg key "${{ inputs.api-key }}" \ + '{($provider): {type: "api", key: $key}}' > ~/.local/share/opencode/auth.json + chmod 600 ~/.local/share/opencode/auth.json + + - name: Esegui opencode + id: esegui + shell: bash + run: | + set -euo pipefail + WD="${{ inputs.working-directory }}" + [ -z "$WD" ] && WD="$GITHUB_WORKSPACE" + cd "$WD" + EXTRA_ARGS=() + [ -n "${{ inputs.model }}" ] && EXTRA_ARGS+=(--model "${{ inputs.model }}") + [ -n "${{ inputs.agent }}" ] && EXTRA_ARGS+=(--agent "${{ inputs.agent }}") + opencode run "${{ inputs.prompt }}" "${EXTRA_ARGS[@]}" --dangerously-skip-permissions 2>&1 | tee "$GITHUB_WORKSPACE/opencode-output.txt" + RESULT=$(cat "$GITHUB_WORKSPACE/opencode-output.txt") + { + echo "result<> "$GITHUB_OUTPUT"