diff --git a/.github/workflows/agent-marketplace-release.yaml b/.github/workflows/agent-marketplace-release.yaml index bc7a2fd..77d84d2 100644 --- a/.github/workflows/agent-marketplace-release.yaml +++ b/.github/workflows/agent-marketplace-release.yaml @@ -53,26 +53,11 @@ on: required: false type: string default: agent-marketplace - claude_package_name: - description: Public Gitea generic package name for the Claude release artifact. + gitea_package_name: + description: Public Gitea generic package name for the release artifact. required: false type: string - default: agent-marketplace-claude - codex_package_name: - description: Public Gitea generic package name for the Codex release artifact. - required: false - type: string - default: agent-marketplace-codex - opencode_package_name: - description: Public Gitea generic package name for the OpenCode release artifact. - required: false - type: string - default: agent-marketplace-opencode - cursor_package_name: - description: Public Gitea generic package name for the Cursor release artifact. - required: false - type: string - default: agent-marketplace-cursor + default: agent-marketplace claude_plugin_name: description: Claude plugin name used in the installation summary. required: false @@ -179,37 +164,32 @@ jobs: for path in ${PACKAGE_PATHS}; do cp -R "$path" "dist/${dir}/" done - tar -czf "dist/${ARCHIVE_NAME}-claude-${VERSION}.tar.gz" -C dist "${dir}" - tar -czf "dist/${ARCHIVE_NAME}-codex-${VERSION}.tar.gz" -C dist "${dir}" - tar -czf "dist/${ARCHIVE_NAME}-opencode-${VERSION}.tar.gz" -C dist "${dir}" - tar -czf "dist/${ARCHIVE_NAME}-cursor-${VERSION}.tar.gz" -C dist "${dir}" + tar -czf "dist/${ARCHIVE_NAME}-${VERSION}.tar.gz" -C dist "${dir}" - name: Build Gitea installers if: inputs.publish_gitea env: ARCHIVE_NAME: ${{ inputs.archive_name }} - CLAUDE_PACKAGE_NAME: ${{ inputs.claude_package_name }} - CODEX_PACKAGE_NAME: ${{ inputs.codex_package_name }} - OPENCODE_PACKAGE_NAME: ${{ inputs.opencode_package_name }} - CURSOR_PACKAGE_NAME: ${{ inputs.cursor_package_name }} + GITEA_PACKAGE_NAME: ${{ inputs.gitea_package_name }} GITEA_URL: ${{ inputs.gitea_url }} GITEA_USER: ${{ inputs.gitea_user }} VERSION: ${{ needs.release-please.outputs.version }} - CLAUDE_PLUGIN_NAME: ${{ inputs.claude_plugin_name }} - CLAUDE_MARKETPLACE_NAME: ${{ inputs.claude_marketplace_name }} - CODEX_PLUGIN_NAME: ${{ inputs.codex_plugin_name }} - CODEX_MARKETPLACE_NAME: ${{ inputs.codex_marketplace_name }} shell: bash run: | : "${GITEA_URL:?Set gitea_url when publish_gitea is enabled}" : "${GITEA_USER:?Set gitea_user when publish_gitea is enabled}" - cat > "dist/install-${ARCHIVE_NAME}-claude-${VERSION}.sh" < "dist/install-${ARCHIVE_NAME}-${VERSION}.sh" <&2; exit 2 ;; + esac + install_dir="\${MEDIVA_PLUGIN_DIR:-\$HOME/.local/share/${ARCHIVE_NAME}/\$agent}" + archive_url="${GITEA_URL%/}/api/packages/${GITEA_USER}/generic/${GITEA_PACKAGE_NAME}/\${version}/${ARCHIVE_NAME}-\${version}.tar.gz" tmp_dir="\$(mktemp -d)" trap 'rm -rf "\$tmp_dir"' EXIT @@ -220,16 +200,32 @@ jobs: mkdir -p "\$(dirname "\$install_dir")" mv "\$tmp_dir/extracted/${ARCHIVE_NAME}-\${version}" "\$install_dir" - marketplace_name="\$(jq -r '.name // empty' "\$install_dir/.claude-plugin/marketplace.json")" - : "\${marketplace_name:?Claude marketplace manifest is missing a name}" - claude plugin marketplace remove '${CLAUDE_MARKETPLACE_NAME}' >/dev/null 2>&1 || true - claude plugin marketplace remove "\$marketplace_name" >/dev/null 2>&1 || true - claude plugin marketplace add "\$install_dir" - claude plugin install "${CLAUDE_PLUGIN_NAME}@\$marketplace_name" - echo "Installed ${CLAUDE_PLUGIN_NAME} for Claude Code from Gitea marketplace \$marketplace_name." + case "\$agent" in + claude) + marketplace_name="\$(jq -r '.name // empty' "\$install_dir/.claude-plugin/marketplace.json")" + : "\${marketplace_name:?Claude marketplace manifest is missing a name}" + claude plugin marketplace remove "\$marketplace_name" >/dev/null 2>&1 || true + claude plugin marketplace add "\$install_dir" + plugin_name="\$(jq -r '.plugins[0].name // empty' "\$install_dir/.claude-plugin/marketplace.json")" + claude plugin install "\$plugin_name@\$marketplace_name" + ;; + codex) + marketplace_name="\$(jq -r '.name // empty' "\$install_dir/.agents/plugins/marketplace.json")" + : "\${marketplace_name:?Codex marketplace manifest is missing a name}" + codex plugin marketplace remove "\$marketplace_name" >/dev/null 2>&1 || true + codex plugin marketplace add "\$install_dir" + plugin_name="\$(jq -r '.plugins[0].name // empty' "\$install_dir/.agents/plugins/marketplace.json")" + codex plugin add "\$plugin_name@\$marketplace_name" + ;; + opencode|cursor) + npx --yes skills add "\$install_dir/skills" --agent "\$agent" --skill '*' --yes --global + ;; + esac + echo "Installed skills for \$agent from Gitea." EOF - chmod +x "dist/install-${ARCHIVE_NAME}-claude-${VERSION}.sh" + chmod +x "dist/install-${ARCHIVE_NAME}-${VERSION}.sh" + if false; then cat > "dist/install-${ARCHIVE_NAME}-codex-${VERSION}.sh" <> "$GITHUB_OUTPUT" - echo "codex_installer_url=${codex_base}/${codex_installer}" >> "$GITHUB_OUTPUT" - echo "opencode_installer_url=${opencode_base}/${opencode_installer}" >> "$GITHUB_OUTPUT" - echo "cursor_installer_url=${cursor_base}/${cursor_installer}" >> "$GITHUB_OUTPUT" + echo "installer_url=${package_base}/${installer}" >> "$GITHUB_OUTPUT" - name: Upload archive to GitHub Release if: ${{ !inputs.publish_gitea }} @@ -370,28 +346,25 @@ jobs: CODEX_PLUGIN_NAME: ${{ inputs.codex_plugin_name }} CODEX_MARKETPLACE_NAME: ${{ inputs.codex_marketplace_name }} CURSOR_PLUGIN_NAME: ${{ inputs.cursor_plugin_name }} - GITEA_CLAUDE_INSTALLER_URL: ${{ steps.gitea.outputs.claude_installer_url }} - GITEA_CODEX_INSTALLER_URL: ${{ steps.gitea.outputs.codex_installer_url }} - GITEA_OPENCODE_INSTALLER_URL: ${{ steps.gitea.outputs.opencode_installer_url }} - GITEA_CURSOR_INSTALLER_URL: ${{ steps.gitea.outputs.cursor_installer_url }} + GITEA_INSTALLER_URL: ${{ steps.gitea.outputs.installer_url }} run: | { printf '# Agent plugin %s\n\n' "$VERSION" printf 'Release tag: `%s`\n\n' "$TAG" - if [[ -n "$GITEA_CLAUDE_INSTALLER_URL" && -n "$GITEA_CODEX_INSTALLER_URL" && -n "$GITEA_OPENCODE_INSTALLER_URL" && -n "$GITEA_CURSOR_INSTALLER_URL" ]]; then + if [[ -n "$GITEA_INSTALLER_URL" ]]; then printf '## Claude Code\n\n' printf '%s\n' '```bash' - printf 'curl --fail --location --output install-claude.sh "%s"\n' "$GITEA_CLAUDE_INSTALLER_URL" + printf 'curl --fail --location --output install-claude.sh "%s"\n' "$GITEA_INSTALLER_URL" printf 'chmod +x install-claude.sh\n' - printf './install-claude.sh\n' + printf './install-claude.sh claude\n' printf '%s\n\n' '```' printf '## Codex\n\n' printf '%s\n' '```bash' - printf 'curl --fail --location --output install-codex.sh "%s"\n' "$GITEA_CODEX_INSTALLER_URL" + printf 'curl --fail --location --output install-codex.sh "%s"\n' "$GITEA_INSTALLER_URL" printf 'chmod +x install-codex.sh\n' - printf './install-codex.sh\n' + printf './install-codex.sh codex\n' printf '%s\n\n' '```' else printf '## Claude Code\n\n' @@ -407,19 +380,19 @@ jobs: printf '%s\n\n' '```' fi - if [[ -n "$GITEA_OPENCODE_INSTALLER_URL" && -n "$GITEA_CURSOR_INSTALLER_URL" ]]; then + if [[ -n "$GITEA_INSTALLER_URL" ]]; then printf '## OpenCode\n\n' printf '%s\n' '```bash' - printf 'curl --fail --location --output install-opencode.sh "%s"\n' "$GITEA_OPENCODE_INSTALLER_URL" + printf 'curl --fail --location --output install-opencode.sh "%s"\n' "$GITEA_INSTALLER_URL" printf 'chmod +x install-opencode.sh\n' - printf './install-opencode.sh\n' + printf './install-opencode.sh opencode\n' printf '%s\n\n' '```' printf '## Cursor\n\n' printf '%s\n' '```bash' - printf 'curl --fail --location --output install-cursor.sh "%s"\n' "$GITEA_CURSOR_INSTALLER_URL" + printf 'curl --fail --location --output install-cursor.sh "%s"\n' "$GITEA_INSTALLER_URL" printf 'chmod +x install-cursor.sh\n' - printf './install-cursor.sh\n' + printf './install-cursor.sh cursor\n' printf '%s\n\n' '```' else printf '## OpenCode and Cursor\n\n' @@ -429,7 +402,7 @@ jobs: printf '%s\n' '```' fi - if [[ -n "$GITEA_CLAUDE_INSTALLER_URL" && -n "$GITEA_CODEX_INSTALLER_URL" ]]; then + if [[ -n "$GITEA_INSTALLER_URL" ]]; then printf '\nInstallers are public Gitea artifacts; no Gitea token is required.\n' fi } >> "$GITHUB_STEP_SUMMARY"