diff --git a/package.json b/package.json index 40d3533ee..4eebca38c 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "workspaces": [ "packages/bruno-app", "packages/bruno-electron", + "packages/bruno-cli", "packages/bruno-tauri", "packages/bruno-schema", "packages/bruno-js", diff --git a/packages/bruno-cli/bin/bru.js b/packages/bruno-cli/bin/bru.js new file mode 100755 index 000000000..2c3334177 --- /dev/null +++ b/packages/bruno-cli/bin/bru.js @@ -0,0 +1,3 @@ +#!/usr/bin/env node + +require('../src').run(); diff --git a/packages/bruno-cli/package.json b/packages/bruno-cli/package.json index 9b6b6435b..6b95bc694 100644 --- a/packages/bruno-cli/package.json +++ b/packages/bruno-cli/package.json @@ -1,7 +1,10 @@ { - "name": "usebruno", + "name": "@usebruno/cli", "version": "0.1.0", "main": "src/index.js", + "bin": { + "bru": "./bin/bru.js" + }, "files": [ "src", "package.json" diff --git a/packages/bruno-cli/src/commands/run.js b/packages/bruno-cli/src/commands/run.js new file mode 100644 index 000000000..e3c8c1ab8 --- /dev/null +++ b/packages/bruno-cli/src/commands/run.js @@ -0,0 +1,18 @@ +const chalk = require('chalk'); + +const command = 'run'; +const desc = 'Run request'; + +const builder = async (yargs) => { + try { + console.log(chalk.yellow('Running request')); + } catch (err) { + console.error(err); + } +}; + +module.exports = { + command, + desc, + builder +}; diff --git a/packages/bruno-cli/src/constants.js b/packages/bruno-cli/src/constants.js new file mode 100644 index 000000000..a952f893b --- /dev/null +++ b/packages/bruno-cli/src/constants.js @@ -0,0 +1,9 @@ +const { version } = require('../package.json'); + +const CLI_EPILOGUE = `Documentation: https://docs.usebruno.com (v${version})`; +const CLI_VERSION = version; + +module.exports = { + CLI_EPILOGUE, + CLI_VERSION +}; diff --git a/packages/bruno-cli/src/index.js b/packages/bruno-cli/src/index.js index 367aa0f32..875f166ec 100644 --- a/packages/bruno-cli/src/index.js +++ b/packages/bruno-cli/src/index.js @@ -1 +1,31 @@ -console.log("This is bruno cli"); \ No newline at end of file +const yargs = require('yargs'); +const chalk = require('chalk'); + +const { CLI_EPILOGUE, CLI_VERSION } = require('./constants'); + + +const printBanner = () => { + console.log(chalk.yellow(`Bru CLI ${CLI_VERSION}`)); +} + +const run = async () => { + const argLength = process.argv.length; + const commandsToPrintBanner = ['--help', '-h']; + + if (argLength <= 2 || process.argv.find((arg) => commandsToPrintBanner.includes(arg))) { + printBanner(); + } + + const { argv } = yargs + .strict() + .commandDir('commands') + .epilogue(CLI_EPILOGUE) + .usage('Usage: $0 [options]') + .demandCommand(1, "Woof !! Let's play with some apis !!") + .help('h') + .alias('h', 'help'); +}; + +module.exports = { + run +};