From d8d7c0592bfad89669cd2f174e6207370cd7d3fb Mon Sep 17 00:00:00 2001 From: Stainless Bot <107565488+stainless-bot@users.noreply.github.com> Date: Wed, 23 Aug 2023 18:04:21 -0500 Subject: [PATCH] feat(cli): rewrite in JS for better compatibility (#244) --- bin/cli | 70 ++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 49 insertions(+), 21 deletions(-) diff --git a/bin/cli b/bin/cli index c2d110f19..00275ace4 100755 --- a/bin/cli +++ b/bin/cli @@ -1,21 +1,49 @@ -#!/usr/bin/env bash -set -eou pipefail - -if [ $# -eq 0 ]; then - echo "Usage: $0 " - echo - echo "Subcommands:" - echo " migrate Run migrations to update from openai v3 to v4" - echo - exit 1 -fi - -if [ "$1" = "migrate" ]; then - echo "This automatic code migration is provided by grit.io" - echo "Visit https://app.grit.io/studio?preset=openai_v4 for more details." - shift - npx -y @getgrit/launcher apply openai_v4 "$@" -else - echo "Unknown subcommand $1; Expected 'migrate'" >&2 - exit 1 -fi +#!/usr/bin/env node + +const { spawnSync } = require('child_process'); + +const commands = { + migrate: { + description: 'Run migrations to update from openai v3 to v4', + fn: () => { + console.log('This automatic code migration is provided by grit.io'); + console.log('Visit https://app.grit.io/studio?preset=openai_v4 for more details.') + + const result = spawnSync( + 'npx', + ['-y', '@getgrit/launcher', 'apply', 'openai_v4', ...process.argv.slice(3)], + { stdio: 'inherit' }, + ); + if (result.status !== 0) { + process.exit(result.status); + } + } + } +} + +function exitWithHelp() { + console.log("Usage: $0 "); + console.log(); + console.log('Subcommands:'); + + for (const [name, info] of Object.entries(commands)) { + console.log(` ${name} ${info.description}`); + } + + console.log(); + process.exit(1); +} + +if (process.argv.length < 3) { + exitWithHelp(); +} + +const commandName = process.argv[2]; + +const command = commands[commandName]; +if (!command) { + console.log(`Unknown subcommand ${commandName}.`); + exitWithHelp(); +} + +command.fn();