From 649819c777fd69b7ea04aa7f49493c13b8f41bf7 Mon Sep 17 00:00:00 2001 From: Lars Hampe Date: Thu, 31 Oct 2024 22:12:25 +0100 Subject: [PATCH] feat(cli): implement commander lib --- apps/cli/package.json | 4 ++++ apps/cli/src/index.ts | 22 ++++++++++++++---- apps/cli/src/upload_commits.ts | 4 ++-- apps/cli/src/utils/arguments.ts | 38 ++------------------------------ bun.lockb | Bin 543584 -> 544376 bytes 5 files changed, 26 insertions(+), 42 deletions(-) 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 46b62d520f50b9e6b97c0e3560cd7e8d7532dae5..63fa326fb9454e0424f1c3ae05add8c2cdf156c7 100755 GIT binary patch delta 29463 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 lLri#RhycYlf