Fix gitignored package.json's #5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Release | |
| on: | |
| push: | |
| branches: | |
| - "**" | |
| tags: | |
| - "cli-v*" | |
| - "v-*" | |
| workflow_dispatch: | |
| inputs: | |
| packages: | |
| description: "Comma-separated packages to build/publish (appwrite-utils, appwrite-utils-helpers, appwrite-utils-cli, appwrite-utils-mcp) or 'all'" | |
| required: false | |
| default: "all" | |
| publish: | |
| description: "Publish selected packages (true/false)" | |
| required: false | |
| default: "false" | |
| force: | |
| description: "Force publish selected packages (true/false)" | |
| required: false | |
| default: "false" | |
| version_appwrite_utils: | |
| description: "Override version for appwrite-utils (e.g. 1.7.1)" | |
| required: false | |
| default: "" | |
| version_appwrite_utils_helpers: | |
| description: "Override version for appwrite-utils-helpers (e.g. 0.1.1)" | |
| required: false | |
| default: "" | |
| version_appwrite_utils_cli: | |
| description: "Override version for appwrite-utils-cli (e.g. 1.10.1)" | |
| required: false | |
| default: "" | |
| version_appwrite_utils_mcp: | |
| description: "Override version for appwrite-utils-mcp (e.g. 0.1.1)" | |
| required: false | |
| default: "" | |
| jobs: | |
| release: | |
| if: | | |
| github.event_name == 'workflow_dispatch' || | |
| startsWith(github.ref, 'refs/tags/') || | |
| (github.event_name == 'push' && github.ref_name == github.event.repository.default_branch) | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| steps: | |
| - name: Normalize manual inputs | |
| id: manual | |
| if: github.event_name == 'workflow_dispatch' | |
| run: | | |
| raw_packages="${{ github.event.inputs.packages }}" | |
| raw_publish="${{ github.event.inputs.publish }}" | |
| raw_force="${{ github.event.inputs.force }}" | |
| packages="$(echo "${raw_packages:-all}" | tr '[:upper:]' '[:lower:]' | tr -d ' ')" | |
| publish="$(echo "${raw_publish:-false}" | tr '[:upper:]' '[:lower:]' | tr -d ' ')" | |
| force="$(echo "${raw_force:-false}" | tr '[:upper:]' '[:lower:]' | tr -d ' ')" | |
| version_utils="${{ github.event.inputs.version_appwrite_utils }}" | |
| version_helpers="${{ github.event.inputs.version_appwrite_utils_helpers }}" | |
| version_cli="${{ github.event.inputs.version_appwrite_utils_cli }}" | |
| version_mcp="${{ github.event.inputs.version_appwrite_utils_mcp }}" | |
| if [[ -z "$packages" ]]; then | |
| packages="all" | |
| fi | |
| if [[ -z "$publish" ]]; then | |
| publish="false" | |
| fi | |
| if [[ -z "$force" ]]; then | |
| force="false" | |
| fi | |
| echo "packages=$packages" >> "$GITHUB_OUTPUT" | |
| echo "publish=$publish" >> "$GITHUB_OUTPUT" | |
| echo "force=$force" >> "$GITHUB_OUTPUT" | |
| echo "version_utils=$version_utils" >> "$GITHUB_OUTPUT" | |
| echo "version_helpers=$version_helpers" >> "$GITHUB_OUTPUT" | |
| echo "version_cli=$version_cli" >> "$GITHUB_OUTPUT" | |
| echo "version_mcp=$version_mcp" >> "$GITHUB_OUTPUT" | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Bun | |
| uses: oven-sh/setup-bun@v2 | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| registry-url: https://registry.npmjs.org | |
| - name: Verify workspace packages | |
| run: | | |
| for dir in packages/appwrite-utils packages/appwrite-utils-helpers packages/appwrite-utils-cli packages/appwrite-utils-mcp; do | |
| if [[ ! -d "$dir" ]]; then | |
| echo "Missing workspace directory: $dir" >&2 | |
| exit 1 | |
| fi | |
| done | |
| - name: Set package versions (manual) | |
| if: github.event_name == 'workflow_dispatch' | |
| run: | | |
| if [[ -n "${{ steps.manual.outputs.version_utils }}" ]]; then | |
| npm --prefix packages/appwrite-utils version "${{ steps.manual.outputs.version_utils }}" --no-git-tag-version | |
| fi | |
| if [[ -n "${{ steps.manual.outputs.version_helpers }}" ]]; then | |
| npm --prefix packages/appwrite-utils-helpers version "${{ steps.manual.outputs.version_helpers }}" --no-git-tag-version | |
| fi | |
| if [[ -n "${{ steps.manual.outputs.version_cli }}" ]]; then | |
| npm --prefix packages/appwrite-utils-cli version "${{ steps.manual.outputs.version_cli }}" --no-git-tag-version | |
| fi | |
| if [[ -n "${{ steps.manual.outputs.version_mcp }}" ]]; then | |
| npm --prefix packages/appwrite-utils-mcp version "${{ steps.manual.outputs.version_mcp }}" --no-git-tag-version | |
| fi | |
| - name: Install | |
| run: bun install --frozen-lockfile | |
| - name: Check appwrite-utils publish | |
| id: check_utils | |
| if: github.event_name != 'workflow_dispatch' || steps.manual.outputs.packages == 'all' || contains(steps.manual.outputs.packages, 'appwrite-utils') | |
| run: bash scripts/ci/check-publish.sh packages/appwrite-utils appwrite-utils | |
| env: | |
| GITHUB_EVENT_BEFORE: ${{ github.event.before }} | |
| FORCE_PUBLISH: ${{ steps.manual.outputs.force }} | |
| - name: Check appwrite-utils-helpers publish | |
| id: check_helpers | |
| if: github.event_name != 'workflow_dispatch' || steps.manual.outputs.packages == 'all' || contains(steps.manual.outputs.packages, 'appwrite-utils-helpers') | |
| run: bash scripts/ci/check-publish.sh packages/appwrite-utils-helpers appwrite-utils-helpers | |
| env: | |
| GITHUB_EVENT_BEFORE: ${{ github.event.before }} | |
| FORCE_PUBLISH: ${{ steps.manual.outputs.force }} | |
| - name: Check appwrite-utils-cli publish | |
| id: check_cli | |
| if: github.event_name != 'workflow_dispatch' || steps.manual.outputs.packages == 'all' || contains(steps.manual.outputs.packages, 'appwrite-utils-cli') | |
| run: bash scripts/ci/check-publish.sh packages/appwrite-utils-cli appwrite-utils-cli | |
| env: | |
| GITHUB_EVENT_BEFORE: ${{ github.event.before }} | |
| FORCE_PUBLISH: ${{ steps.manual.outputs.force }} | |
| - name: Check appwrite-utils-mcp publish | |
| id: check_mcp | |
| if: github.event_name != 'workflow_dispatch' || steps.manual.outputs.packages == 'all' || contains(steps.manual.outputs.packages, 'appwrite-utils-mcp') | |
| run: bash scripts/ci/check-publish.sh packages/appwrite-utils-mcp appwrite-utils-mcp | |
| env: | |
| GITHUB_EVENT_BEFORE: ${{ github.event.before }} | |
| FORCE_PUBLISH: ${{ steps.manual.outputs.force }} | |
| - name: Build appwrite-utils | |
| if: github.event_name != 'workflow_dispatch' || steps.manual.outputs.packages == 'all' || contains(steps.manual.outputs.packages, 'appwrite-utils') | |
| run: bun --cwd packages/appwrite-utils run build | |
| - name: Build appwrite-utils-helpers | |
| if: github.event_name != 'workflow_dispatch' || steps.manual.outputs.packages == 'all' || contains(steps.manual.outputs.packages, 'appwrite-utils-helpers') | |
| run: bun --cwd packages/appwrite-utils-helpers run build | |
| - name: Build appwrite-utils-cli | |
| if: github.event_name != 'workflow_dispatch' || steps.manual.outputs.packages == 'all' || contains(steps.manual.outputs.packages, 'appwrite-utils-cli') | |
| run: bun --cwd packages/appwrite-utils-cli run build | |
| - name: Build appwrite-utils-mcp | |
| if: github.event_name != 'workflow_dispatch' || steps.manual.outputs.packages == 'all' || contains(steps.manual.outputs.packages, 'appwrite-utils-mcp') | |
| run: bun --cwd packages/appwrite-utils-mcp run build | |
| - name: Prepare publish metadata | |
| if: | | |
| (steps.check_utils.outputs.should_publish == 'true' || | |
| steps.check_helpers.outputs.should_publish == 'true' || | |
| steps.check_cli.outputs.should_publish == 'true' || | |
| steps.check_mcp.outputs.should_publish == 'true') && | |
| (github.event_name != 'workflow_dispatch' || steps.manual.outputs.publish == 'true') | |
| run: | | |
| publish_packages="" | |
| if [[ "${{ steps.check_utils.outputs.should_publish }}" == "true" ]]; then | |
| publish_packages="${publish_packages},appwrite-utils" | |
| fi | |
| if [[ "${{ steps.check_helpers.outputs.should_publish }}" == "true" ]]; then | |
| publish_packages="${publish_packages},appwrite-utils-helpers" | |
| fi | |
| if [[ "${{ steps.check_cli.outputs.should_publish }}" == "true" ]]; then | |
| publish_packages="${publish_packages},appwrite-utils-cli" | |
| fi | |
| if [[ "${{ steps.check_mcp.outputs.should_publish }}" == "true" ]]; then | |
| publish_packages="${publish_packages},appwrite-utils-mcp" | |
| fi | |
| publish_packages="${publish_packages#,}" | |
| if [[ -z "$publish_packages" ]]; then | |
| publish_packages="all" | |
| fi | |
| PUBLISH_PACKAGES="$publish_packages" node scripts/ci/prepare-publish.js | |
| - name: Publish appwrite-utils-helpers | |
| if: steps.check_helpers.outputs.should_publish == 'true' && (github.event_name != 'workflow_dispatch' || steps.manual.outputs.publish == 'true') | |
| run: npm publish --access public | |
| working-directory: packages/appwrite-utils-helpers | |
| env: | |
| NODE_AUTH_TOKEN: ${{ secrets.NPM_ACCESS_TOKEN }} | |
| - name: Publish appwrite-utils | |
| if: steps.check_utils.outputs.should_publish == 'true' && (github.event_name != 'workflow_dispatch' || steps.manual.outputs.publish == 'true') | |
| run: npm publish --access public | |
| working-directory: packages/appwrite-utils | |
| env: | |
| NODE_AUTH_TOKEN: ${{ secrets.NPM_ACCESS_TOKEN }} | |
| - name: Publish appwrite-utils-cli | |
| if: steps.check_cli.outputs.should_publish == 'true' && (github.event_name != 'workflow_dispatch' || steps.manual.outputs.publish == 'true') | |
| run: npm publish --access public | |
| working-directory: packages/appwrite-utils-cli | |
| env: | |
| NODE_AUTH_TOKEN: ${{ secrets.NPM_ACCESS_TOKEN }} | |
| - name: Publish appwrite-utils-mcp | |
| if: steps.check_mcp.outputs.should_publish == 'true' && (github.event_name != 'workflow_dispatch' || steps.manual.outputs.publish == 'true') | |
| run: npm publish --access public | |
| working-directory: packages/appwrite-utils-mcp | |
| env: | |
| NODE_AUTH_TOKEN: ${{ secrets.NPM_ACCESS_TOKEN }} |