diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 87b18c9..8b6fb24 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -81,7 +81,7 @@ jobs: cache-to: | type=gha,mode=max type=registry,ref=${{ env.DOCKER_NAMESPACE }}/peerbot-gateway:buildcache,mode=max - platforms: linux/amd64 + platforms: linux/amd64,linux/arm64 - name: Extract metadata for Worker id: meta-worker @@ -106,7 +106,7 @@ jobs: cache-to: | type=gha,mode=max type=registry,ref=${{ env.DOCKER_NAMESPACE }}/peerbot-worker:buildcache,mode=max - platforms: linux/amd64 + platforms: linux/amd64,linux/arm64 - name: Extract metadata for Worker Base id: meta-worker-base @@ -117,7 +117,7 @@ jobs: type=sha,prefix={{branch}}- type=raw,value=latest,enable={{is_default_branch}} type=raw,value=${{ steps.tag.outputs.tag }} - type=raw,value=${{ steps.tag.outputs.version }},enable=${{ steps.tag.outputs.version != '' && (github.event_name == 'release' || github.event_name == 'repository_dispatch') }} + type=raw,value=${{ steps.tag.outputs.version }},enable=${{ steps.tag.outputs.version != ''' }} - name: Build and push Worker Base (for CLI) uses: docker/build-push-action@v5 @@ -132,7 +132,7 @@ jobs: cache-to: | type=gha,mode=max type=registry,ref=${{ env.DOCKER_NAMESPACE }}/peerbot-worker-base:buildcache,mode=max - platforms: linux/amd64 + platforms: linux/amd64,linux/arm64 - name: Trigger deployment if: success() && github.ref == 'refs/heads/main' diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index ca483b4..8fe1882 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -12,6 +12,7 @@ permissions: jobs: release-please: runs-on: ubuntu-latest + environment: production steps: - uses: googleapis/release-please-action@v4 id: release @@ -51,7 +52,7 @@ jobs: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc npm whoami - - name: Publish @peerbot/cli to NPM + - name: Publish create-peerbot to NPM if: ${{ steps.release.outputs.release_created }} working-directory: packages/cli run: npm publish --access public diff --git a/README.md b/README.md index bbf4cae..b778f86 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ ```bash # Create a new bot (interactive setup) -npx peerbot init my-slack-bot +npm create peerbot my-slack-bot # Start the bot cd my-slack-bot @@ -105,7 +105,7 @@ make dev ## Published Packages **NPM:** -- [`@peerbot/cli`](https://www.npmjs.com/package/@peerbot/cli) - Deployment CLI +- [`create-peerbot`](https://www.npmjs.com/package/create-peerbot) - Deployment CLI - [`@peerbot/worker`](https://www.npmjs.com/package/@peerbot/worker) - Worker runtime **Docker Hub:** diff --git a/examples/my-peerbot/README.md b/examples/my-peerbot/README.md index 499ecde..ff59cb2 100644 --- a/examples/my-peerbot/README.md +++ b/examples/my-peerbot/README.md @@ -1,6 +1,6 @@ # my-peerbot -Peerbot instance created with `@peerbot/cli` v0.1.0 +Peerbot instance created with `create-peerbot` v0.1.0 ## Quick Start diff --git a/package.json b/package.json index eb64038..76c920c 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "@peerbot/cli", + "name": "create-peerbot", "version": "1.0.6", "workspaces": [ "packages/cli", diff --git a/packages/cli/README.md b/packages/cli/README.md index fc2173d..ece7d2d 100644 --- a/packages/cli/README.md +++ b/packages/cli/README.md @@ -1,4 +1,4 @@ -# @peerbot/cli +# create-peerbot CLI tool for initializing Peerbot projects with Docker Compose. @@ -7,11 +7,19 @@ CLI tool for initializing Peerbot projects with Docker Compose. ### Standalone ```bash -npm install -g @peerbot/cli +npm install -g create-peerbot mkdir my-peerbot cd my-peerbot -peerbot init +npm create peerbot my-peerbot +docker compose up -d +``` + +### npx/npm create (Recommended) + +```bash +npm create peerbot my-peerbot +cd my-peerbot docker compose up -d ``` @@ -83,7 +91,7 @@ See [Worker Package Documentation](../worker/docs/custom-base-image.md) for deta ## Commands -### `peerbot init` +### `create-peerbot` Initialize a new Peerbot project in the current directory. @@ -103,7 +111,7 @@ Initialize a new Peerbot project in the current directory. ## Usage -After running `peerbot init`: +After running `npm create peerbot`: ```bash # Start services @@ -166,7 +174,7 @@ CMD ["peerbot-worker"] # 1. Create project mkdir my-bot cd my-bot -peerbot init +npm create peerbot # 2. Choose worker mode during init # - Base image (recommended) @@ -228,7 +236,7 @@ docker pull buremba/peerbot-worker:0.1.0 **NPM Registry:** ```bash # CLI tool -npm install -g @peerbot/cli@0.1.0 +npm install -g create-peerbot@0.1.0 # Worker runtime (for custom base images) npm install -g @peerbot/worker@0.1.0 @@ -241,7 +249,7 @@ User creates project ↓ mkdir my-bot && cd my-bot ↓ -peerbot init +npm create peerbot ↓ Choose: Base image or Package? ↓ diff --git a/packages/cli/package.json b/packages/cli/package.json index e7533de..9add64f 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,11 +1,11 @@ { - "name": "@peerbot/cli", + "name": "create-peerbot", "version": "0.1.0", "description": "CLI for deploying and managing Peerbot across multiple platforms", "type": "module", "main": "dist/index.js", "bin": { - "peerbot": "./bin/peerbot.js" + "create-peerbot": "./bin/create-peerbot.js" }, "scripts": { "build": "tsc && node -e \"const fs=require('node:fs');const src='src/templates';const dest='dist/templates';if(fs.existsSync(src)){fs.rmSync(dest,{recursive:true,force:true});fs.cpSync(src,dest,{recursive:true});}\"", diff --git a/packages/cli/src/commands/init.ts b/packages/cli/src/commands/init.ts index c962503..709c7b3 100644 --- a/packages/cli/src/commands/init.ts +++ b/packages/cli/src/commands/init.ts @@ -1,7 +1,7 @@ -import { join } from "node:path"; -import { readFile, access, writeFile, mkdir } from "node:fs/promises"; -import { constants } from "node:fs"; import { randomBytes } from "node:crypto"; +import { constants } from "node:fs"; +import { access, mkdir, readFile, writeFile } from "node:fs/promises"; +import { join } from "node:path"; import chalk from "chalk"; import inquirer from "inquirer"; import ora from "ora";