diff --git a/apps/cli/package.json b/apps/cli/package.json index 83d447a..31ead22 100644 --- a/apps/cli/package.json +++ b/apps/cli/package.json @@ -14,5 +14,9 @@ }, "peerDependencies": { "typescript": "^5.0.0" + }, + "dependencies": { + "@commander-js/extra-typings": "^12.1.0", + "commander": "^12.1.0" } } \ No newline at end of file diff --git a/apps/cli/src/index.ts b/apps/cli/src/index.ts index 1f52d9e..d1a1e0e 100644 --- a/apps/cli/src/index.ts +++ b/apps/cli/src/index.ts @@ -1,7 +1,21 @@ #! /usr/bin/env bun +import { program } from '@commander-js/extra-typings' import { upload_commits } from './upload_commits' -import { args } from './utils/arguments' +import type { Arguments } from './utils/arguments' -if (args.success) { - upload_commits(args.data) -} +const ENV_CHANGELOG_ID = Bun.env.BT_CHANGELOG_ID +const ENV_ACCESS_TOKEN = Bun.env.BT_ACCESS_TOKEN + +program.name('bt-cli').description('boring.tools CLI').version('0.8.0') + +const commit = program.command('commit').description('Commits') +commit + .command('upload') + .description('Upload commit messages') + .requiredOption('--changelogId', 'Changelog Id', ENV_CHANGELOG_ID) + .requiredOption('--accessToken', 'Access Token', ENV_ACCESS_TOKEN) + .action((data) => { + upload_commits(data as Arguments) + }) + +program.parse() diff --git a/apps/cli/src/upload_commits.ts b/apps/cli/src/upload_commits.ts index af9853d..7ab8212 100644 --- a/apps/cli/src/upload_commits.ts +++ b/apps/cli/src/upload_commits.ts @@ -6,7 +6,7 @@ const getLastCommitHash = async (args: Arguments) => { const result = await fetchAPI( `/v1/changelog/commit?changelogId=${args.changelogId}&limit=1`, {}, - args.token, + args.accessToken, ) if (!result) { @@ -44,6 +44,6 @@ export const upload_commits = async (arguemnts: Arguments) => { method: 'POST', body: JSON.stringify(mappedCommits), }, - arguemnts.token, + arguemnts.accessToken, ) } diff --git a/apps/cli/src/utils/arguments.ts b/apps/cli/src/utils/arguments.ts index 55482a1..54d3093 100644 --- a/apps/cli/src/utils/arguments.ts +++ b/apps/cli/src/utils/arguments.ts @@ -1,42 +1,8 @@ -import { parseArgs } from 'node:util' import { z } from 'zod' -const ENV_ID = Bun.env.BT_CHANGELOG_ID -const ENV_TOKEN = Bun.env.BT_AUTH_TOKEN - const schema = z.object({ - token: z.string(), + accessToken: z.string().startsWith('bt_'), changelogId: z.string(), }) + export type Arguments = z.infer - -const { values } = parseArgs({ - args: Bun.argv, - options: { - token: { - type: 'string', - }, - changelogId: { - type: 'string', - }, - }, - strict: true, - allowPositionals: true, -}) - -const mappedArguments = { - ...values, - token: values.token || ENV_TOKEN, - changelogId: values.changelogId || ENV_ID, -} - -export const args = schema.safeParse(mappedArguments) - -if (!args.success) { - console.error( - `boring.tools CLI: Missing arguemnts: ${args.error.errors - .map((error) => error.path[0]) - .join(', ')}`, - ) - process.exit(1) -} diff --git a/bun.lockb b/bun.lockb index 46b62d5..63fa326 100755 Binary files a/bun.lockb and b/bun.lockb differ