diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..4071729d --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,12 @@ +version: 2 + +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "daily" + - package-ecosystem: "npm" + directory: "/" + schedule: + interval: "daily" + open-pull-requests-limit: 5 diff --git a/.github/workflows/auto-approve.yml b/.github/workflows/auto-approve.yml new file mode 100644 index 00000000..5e1c2721 --- /dev/null +++ b/.github/workflows/auto-approve.yml @@ -0,0 +1,21 @@ +# https://github.com/marketplace/actions/auto-approve +name: Auto Approve + +on: + pull_request: + branches: + - main + +jobs: + auto-approve: + runs-on: ubuntu-20.04 + permissions: + pull-requests: write + + steps: + - name: Dump GitHub context + env: + GITHUB_CONTEXT: ${{ toJson(github) }} + run: echo "$GITHUB_CONTEXT" + - uses: hmarr/auto-approve-action@v3 + if: github.actor == 'hanspagel' && github.head_ref == 'changeset-release/main' diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..df1f9b5e --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,37 @@ +name: CI + +on: + pull_request: + branches: + - main + +jobs: + lint: + runs-on: ubuntu-20.04 + strategy: + matrix: + node-version: [18, 20, 21] + + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v2 + with: + version: 8 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + cache: 'pnpm' + - name: Install dependencies + run: pnpm install + - name: Turborepo cache + uses: dtinth/setup-github-actions-caching-for-turbo@v1 + - if: matrix.node-version == 20 + name: Check code style + run: pnpm format:check + - name: Build + run: pnpm turbo build + - name: Check types + run: pnpm turbo types:check + - name: Run tests + run: pnpm turbo test diff --git a/.github/workflows/lint-pr.yml b/.github/workflows/lint-pr.yml new file mode 100644 index 00000000..a777a233 --- /dev/null +++ b/.github/workflows/lint-pr.yml @@ -0,0 +1,21 @@ +name: Lint the PR Title + +on: + pull_request_target: + types: + - opened + - edited + - synchronize + +permissions: + pull-requests: read + +jobs: + lint: + name: Validate PR title + runs-on: ubuntu-latest + steps: + # https://github.com/marketplace/actions/semantic-pull-request + - uses: amannn/action-semantic-pull-request@v5 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..03560c2a --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,48 @@ +name: Release + +on: + push: + branches: + - main + +concurrency: ${{ github.workflow }}-${{ github.ref }} + +jobs: + release: + name: Release + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [20] + + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v2 + with: + version: 8 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + cache: 'pnpm' + - name: Install dependencies + run: pnpm install + - name: Turborepo cache + uses: dtinth/setup-github-actions-caching-for-turbo@v1 + - name: Build + run: pnpm turbo build + - name: Create Release Pull Request or Publish to npm + id: changesets + uses: changesets/action@v1 + with: + # The pull request title. + title: 'chore: release' + # The command to update version, edit CHANGELOG, read and delete changesets. + version: 'pnpm run bump' + # The commit message to use. + commit: 'chore: version packages' + # The command to use to build and publish packages + publish: 'pnpm -r publish --access public' + env: + GITHUB_TOKEN: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.turbo/cookies/0.cookie b/.turbo/cookies/0.cookie new file mode 100644 index 00000000..e69de29b diff --git a/.turbo/cookies/1.cookie b/.turbo/cookies/1.cookie new file mode 100644 index 00000000..e69de29b diff --git a/.turbo/cookies/2.cookie b/.turbo/cookies/2.cookie new file mode 100644 index 00000000..e69de29b diff --git a/.turbo/cookies/3.cookie b/.turbo/cookies/3.cookie new file mode 100644 index 00000000..e69de29b diff --git a/package.json b/package.json index fa0fd9d2..8861e123 100644 --- a/package.json +++ b/package.json @@ -11,5 +11,8 @@ }, "dependencies": { "@changesets/cli": "^2.27.1" + }, + "devDependencies": { + "turbo": "^1.11.3" } } diff --git a/packages/cli/package.json b/packages/cli/package.json index 14d75ab3..b3dc7eb4 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,11 +1,21 @@ { "name": "@scalar/cli", + "description": "A command-line interface to work with OpenAPI files", + "license": "MIT", + "author": "Scalar (https://github.com/scalar)", + "homepage": "https://github.com/scalar/scalar", + "bugs": "https://github.com/scalar/scalar/issues/new/choose", + "keywords": ["scalar", "openapi", "swagger", "cli"], + "engines": { + "node": ">=18" + }, "scripts": { "@scalar/cli": "pnpm vite-node src/index.ts", "test": "vitest", "lint": "pnpm dlx @biomejs/biome lint .", "format": "pnpm dlx @biomejs/biome check . --apply", "cli:link": "pnpm run build && npm unlink -g && npm link", + "types:check": "tsc --noEmit --skipLibCheck", "build": "rm -Rf dist/ && tsc && rollup -c" }, "type": "module", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5d9f1e16..293fa2a2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,6 +11,10 @@ importers: '@changesets/cli': specifier: ^2.27.1 version: 2.27.1 + devDependencies: + turbo: + specifier: ^1.11.3 + version: 1.11.3 packages/cli: dependencies: @@ -4687,6 +4691,66 @@ packages: yargs: 17.7.2 dev: false + /turbo-darwin-64@1.11.3: + resolution: {integrity: sha512-IsOOg2bVbIt3o/X8Ew9fbQp5t1hTHN3fGNQYrPQwMR2W1kIAC6RfbVD4A9OeibPGyEPUpwOH79hZ9ydFH5kifw==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /turbo-darwin-arm64@1.11.3: + resolution: {integrity: sha512-FsJL7k0SaPbJzI/KCnrf/fi3PgCDCjTliMc/kEFkuWVA6Httc3Q4lxyLIIinz69q6JTx8wzh6yznUMzJRI3+dg==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /turbo-linux-64@1.11.3: + resolution: {integrity: sha512-SvW7pvTVRGsqtSkII5w+wriZXvxqkluw5FO/MNAdFw0qmoov+PZ237+37/NgArqE3zVn1GX9P6nUx9VO+xcQAg==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /turbo-linux-arm64@1.11.3: + resolution: {integrity: sha512-YhUfBi1deB3m+3M55X458J6B7RsIS7UtM3P1z13cUIhF+pOt65BgnaSnkHLwETidmhRh8Dl3GelaQGrB3RdCDw==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /turbo-windows-64@1.11.3: + resolution: {integrity: sha512-s+vEnuM2TiZuAUUUpmBHDr6vnNbJgj+5JYfnYmVklYs16kXh+EppafYQOAkcRIMAh7GjV3pLq5/uGqc7seZeHA==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /turbo-windows-arm64@1.11.3: + resolution: {integrity: sha512-ZR5z5Zpc7cASwfdRAV5yNScCZBsgGSbcwiA/u3farCacbPiXsfoWUkz28iyrx21/TRW0bi6dbsB2v17swa8bjw==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /turbo@1.11.3: + resolution: {integrity: sha512-RCJOUFcFMQNIGKSjC9YmA5yVP1qtDiBA0Lv9VIgrXraI5Da1liVvl3VJPsoDNIR9eFMyA/aagx1iyj6UWem5hA==} + hasBin: true + optionalDependencies: + turbo-darwin-64: 1.11.3 + turbo-darwin-arm64: 1.11.3 + turbo-linux-64: 1.11.3 + turbo-linux-arm64: 1.11.3 + turbo-windows-64: 1.11.3 + turbo-windows-arm64: 1.11.3 + dev: true + /type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} diff --git a/turbo.json b/turbo.json new file mode 100644 index 00000000..c1411991 --- /dev/null +++ b/turbo.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://turbo.build/schema.json", + "pipeline": { + "lint": {}, + "build": { + "outputs": ["dist/**"], + "dependsOn": ["^build"] + }, + "types:check": { + "dependsOn": ["^build"] + }, + "test": { + "dependsOn": ["^build"] + } + } +}