Aggiunge azioni opencode-prompt e install-opencode (#1)
Aggiunge due nuove action composite: ### `install-opencode` Verifica i prerequisiti (node/npm) e installa opencode-ai globalmente. Input opzionale `version` per fissare una versione specifica. ### `opencode-prompt` Esegue opencode con un prompt sul codice del repository. - Input: `prompt` (req), `api-key` (req), `api-provider`, `model`, `agent`, `working-directory` - Output: `result` con la risposta di opencode - Salva copia in `opencode-output.txt` nel workspace Reviewed-on: #1 Co-authored-by: alberto <a.nuti@live.it> Co-committed-by: alberto <a.nuti@live.it>
This commit is contained in:
41
install-opencode/action.yml
Normal file
41
install-opencode/action.yml
Normal file
@@ -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)"
|
||||||
64
opencode-prompt/action.yml
Normal file
64
opencode-prompt/action.yml
Normal file
@@ -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<<EOF"
|
||||||
|
echo "$RESULT"
|
||||||
|
echo "EOF"
|
||||||
|
} >> "$GITHUB_OUTPUT"
|
||||||
Reference in New Issue
Block a user