diff --git a/.github/workflows/create-meeting-artifacts-manual.yml b/.github/workflows/create-meeting-artifacts-manual.yml index 949d095..50b6d2c 100644 --- a/.github/workflows/create-meeting-artifacts-manual.yml +++ b/.github/workflows/create-meeting-artifacts-manual.yml @@ -6,31 +6,18 @@ on: meeting_group: description: 'Meeting group to create artifacts for' required: true - type: choice - options: - - benchmarking - - build - - cross_project_council - - diag - - diag_deepdive - - ecosystem_report - - loaders - - modules - - next-10 - - outreach - - package-maintenance - - package_metadata_interop - - Release - - security-wg - - security_collab - - standards - - sustainability_collab - - tsc - - tooling - - typescript - - uvwasi - - userfeedback - - web-server-frameworks + type: string + dry_run: + type: boolean + description: 'Dry run?' + default: false + required: true + workflow_call: + inputs: + meeting_group: + description: 'Meeting group to create artifacts for' + required: true + type: string dry_run: type: boolean description: 'Dry run?' diff --git a/.github/workflows/create-meeting-artifacts-scheduled.yml b/.github/workflows/create-meeting-artifacts-scheduled.yml index 0f58830..068b570 100644 --- a/.github/workflows/create-meeting-artifacts-scheduled.yml +++ b/.github/workflows/create-meeting-artifacts-scheduled.yml @@ -2,81 +2,37 @@ name: Create Meeting Artifacts (Scheduled) on: workflow_dispatch: + inputs: + dry_run: + type: boolean + description: 'Dry run?' + default: false + required: true schedule: - cron: '0 10 * * 1' jobs: - create-artifacts: + create-matrix: runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - meeting_group: - - benchmarking - - build - - cross_project_council - - diag - - diag_deepdive - - ecosystem_report - - loaders - - modules - - next-10 - - outreach - - package-maintenance - - package_metadata_interop - - Release - - security-wg - - security_collab - - standards - - sustainability_collab - - tsc - - tooling - - typescript - - uvwasi - - userfeedback - - web-server-frameworks + outputs: + groups: ${{ steps.set-matrix.outputs.configs }} steps: - name: Checkout repository uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - name: Setup Node.js - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 - with: - node-version-file: '.nvmrc' - cache: 'npm' - - - name: Install dependencies - run: npm ci - - - name: Read Meeting Variables - id: read-vars + - name: Get config basenames + id: set-matrix run: | - meeting_group="${{ matrix.meeting_group }}" - user=$(grep '^USER=' "templates/meeting_base_${meeting_group}" | cut -d'=' -f2 | xargs) - echo "user=$user" >> $GITHUB_OUTPUT + CONFIGS=$(find templates/ -maxdepth 1 -type f -name 'meeting_base_*' | jq -R -s -c 'split("\n")[:-1] | map(sub(".*meeting_base_";""))') + echo "configs=$CONFIGS" >> $GITHUB_OUTPUT - - name: Create GitHub App Token - uses: actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42 # v2.1.4 - id: app-token - with: - app-id: ${{ secrets.BOT_ID }} - private-key: ${{ secrets.BOT_PRIVATE_KEY }} - owner: ${{ steps.read-vars.outputs.user }} - - - name: Create meeting artifacts - env: - GITHUB_TOKEN: ${{ steps.app-token.outputs.token }} - HACKMD_API_TOKEN: ${{ secrets.HACKMD_API_TOKEN }} - GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }} - run: node create-node-meeting-artifacts.mjs ${{ matrix.meeting_group }} --verbose - - - name: Upload artifacts - if: always() - uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 - with: - name: meeting-artifacts-${{ matrix.meeting_group }} - path: | - ~/.make-node-meeting/ - *.md - retention-days: 7 - if-no-files-found: ignore + create-artifacts: + needs: create-matrix + strategy: + fail-fast: false + matrix: + groups: ${{ fromJson(needs.create-matrix.outputs.groups) }} + uses: ./.github/workflows/create-meeting-artifacts-manual.yml + with: + meeting_group: ${{ matrix.groups }} + dry_run: ${{ github.event.inputs.dry_run }} diff --git a/README.md b/README.md index c9ae205..28f5920 100644 --- a/README.md +++ b/README.md @@ -39,31 +39,6 @@ A modern Node.js application that creates GitHub issues and HackMD documents for **Note:** API Keys provide simplified authentication and are sufficient for read-only calendar access. They don't require complex OAuth flows or service account setup. -## 🎯 Available Meeting Commands - -| Meeting Group | Production Command | Development Command | -| ------------------------ | ------------------------------------------ | ---------------------------------------------- | -| UVWASI | `npm run uvwasi-meeting` | `npm run uvwasi-meeting:dev` | -| TSC | `npm run tsc-meeting` | `npm run tsc-meeting:dev` | -| Build | `npm run build-meeting` | `npm run build-meeting:dev` | -| Diagnostics | `npm run diag-meeting` | `npm run diag-meeting:dev` | -| Diagnostics Deep Dive | `npm run diag-deepdive-meeting` | `npm run diag-deepdive-meeting:dev` | -| TypeScript | `npm run typescript-meeting` | `npm run typescript-meeting:dev` | -| Release | `npm run release-meeting` | `npm run release-meeting:dev` | -| Cross Project Council | `npm run cross-project-council-meeting` | `npm run cross-project-council-meeting:dev` | -| Modules | `npm run modules-meeting` | `npm run modules-meeting:dev` | -| Tooling | `npm run tooling-meeting` | `npm run tooling-meeting:dev` | -| Security WG | `npm run security-wg-meeting` | `npm run security-wg-meeting:dev` | -| Next-10 | `npm run next-10-meeting` | `npm run next-10-meeting:dev` | -| Package Maintenance | `npm run package-maintenance-meeting` | `npm run package-maintenance-meeting:dev` | -| Package Metadata Interop | `npm run package-metadata-interop-meeting` | `npm run package-metadata-interop-meeting:dev` | -| Ecosystem Report | `npm run ecosystem-report-meeting` | `npm run ecosystem-report-meeting:dev` | -| Sustainability Collab | `npm run sustainability-collab-meeting` | `npm run sustainability-collab-meeting:dev` | -| Standards | `npm run standards-meeting` | `npm run standards-meeting:dev` | -| Security Collab | `npm run security-collab-meeting` | `npm run security-collab-meeting:dev` | -| Loaders | `npm run loaders-meeting` | `npm run loaders-meeting:dev` | -| Web Server Frameworks | `npm run web-server-frameworks-meeting` | `npm run web-server-frameworks-meeting:dev` | - ## 📁 Project Structure ``` @@ -204,10 +179,10 @@ npm run check # Run both linting and formatting checks ### Local Development ```bash -# Using npm scripts (recommended) -npm run tsc-meeting:dev +# Using npx +npx --env-file=.env . tsc -# Direct execution +# Direct execution (with a `.env` file) node --env-file=.env create-node-meeting-artifacts.mjs tsc ``` diff --git a/package-lock.json b/package-lock.json index 45b26ad..6dc17df 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "dotenv": "^17.2.2" }, "bin": { - "create-meeting": "create-node-meeting-artifacts.mjs" + "create-node-meeting-artifacts": "create-node-meeting-artifacts.mjs" }, "devDependencies": { "@eslint/js": "^9.33.0", diff --git a/package.json b/package.json index 322b9d3..4eeee96 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "type": "module", "main": "create-node-meeting-artifacts.mjs", "bin": { - "create-meeting": "./create-node-meeting-artifacts.mjs" + "create-node-meeting-artifacts": "./create-node-meeting-artifacts.mjs" }, "engines": { "node": ">=22.0.0" @@ -36,49 +36,7 @@ "check": "npm run lint && npm run format:check", "test": "node --test test/**/*.test.mjs", "test:watch": "node --test --watch test/**/*.test.mjs", - "test:coverage": "node --test --experimental-test-coverage test/**/*.test.mjs", - "uvwasi-meeting": "create-meeting uvwasi", - "uvwasi-meeting:dev": "node --env-file=.env create-node-meeting-artifacts.mjs uvwasi", - "tsc-meeting": "create-meeting tsc", - "tsc-meeting:dev": "node --env-file=.env create-node-meeting-artifacts.mjs tsc", - "build-meeting": "create-meeting build", - "build-meeting:dev": "node --env-file=.env create-node-meeting-artifacts.mjs build", - "diag-meeting": "create-meeting diag", - "diag-meeting:dev": "node --env-file=.env create-node-meeting-artifacts.mjs diag", - "diag-deepdive-meeting": "create-meeting diag_deepdive", - "diag-deepdive-meeting:dev": "node --env-file=.env create-node-meeting-artifacts.mjs diag_deepdive", - "typescript-meeting": "create-meeting typescript", - "typescript-meeting:dev": "node --env-file=.env create-node-meeting-artifacts.mjs typescript", - "release-meeting": "create-meeting Release", - "release-meeting:dev": "node --env-file=.env create-node-meeting-artifacts.mjs Release", - "cross-project-council-meeting": "create-meeting cross_project_council", - "cross-project-council-meeting:dev": "node --env-file=.env create-node-meeting-artifacts.mjs cross_project_council", - "modules-meeting": "create-meeting modules", - "modules-meeting:dev": "node --env-file=.env create-node-meeting-artifacts.mjs modules", - "tooling-meeting": "create-meeting tooling", - "tooling-meeting:dev": "node --env-file=.env create-node-meeting-artifacts.mjs tooling", - "security-wg-meeting": "create-meeting security-wg", - "security-wg-meeting:dev": "node --env-file=.env create-node-meeting-artifacts.mjs security-wg", - "next-10-meeting": "create-meeting next-10", - "next-10-meeting:dev": "node --env-file=.env create-node-meeting-artifacts.mjs next-10", - "package-maintenance-meeting": "create-meeting package-maintenance", - "package-maintenance-meeting:dev": "node --env-file=.env create-node-meeting-artifacts.mjs package-maintenance", - "package-metadata-interop-meeting": "create-meeting package_metadata_interop", - "package-metadata-interop-meeting:dev": "node --env-file=.env create-node-meeting-artifacts.mjs package_metadata_interop", - "ecosystem-report-meeting": "create-meeting ecosystem_report", - "ecosystem-report-meeting:dev": "node --env-file=.env create-node-meeting-artifacts.mjs ecosystem_report", - "sustainability-collab-meeting": "create-meeting sustainability_collab", - "sustainability-collab-meeting:dev": "node --env-file=.env create-node-meeting-artifacts.mjs sustainability_collab", - "standards-meeting": "create-meeting standards", - "standards-meeting:dev": "node --env-file=.env create-node-meeting-artifacts.mjs standards", - "security-collab-meeting": "create-meeting security_collab", - "security-collab-meeting:dev": "node --env-file=.env create-node-meeting-artifacts.mjs security_collab", - "loaders-meeting": "create-meeting loaders", - "loaders-meeting:dev": "node --env-file=.env create-node-meeting-artifacts.mjs loaders", - "web": "create-meeting web", - "web:dev": "node --env-file=.env create-node-meeting-artifacts.mjs web", - "web-server-frameworks-meeting": "create-meeting web-server-frameworks", - "web-server-frameworks-meeting:dev": "node --env-file=.env create-node-meeting-artifacts.mjs web-server-frameworks" + "test:coverage": "node --test --experimental-test-coverage test/**/*.test.mjs" }, "author": "", "license": "MIT"