Aggiunge azioni opencode-prompt e install-opencode #1
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