npx oclif generate kingoftime-cli
This commit is contained in:
commit
3a8b0d0430
19 changed files with 571 additions and 0 deletions
11
.editorconfig
Normal file
11
.editorconfig
Normal file
|
@ -0,0 +1,11 @@
|
|||
root = true
|
||||
|
||||
[*]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
1
.eslintignore
Normal file
1
.eslintignore
Normal file
|
@ -0,0 +1 @@
|
|||
/dist
|
6
.eslintrc
Normal file
6
.eslintrc
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"extends": [
|
||||
"oclif",
|
||||
"oclif-typescript"
|
||||
]
|
||||
}
|
10
.gitignore
vendored
Normal file
10
.gitignore
vendored
Normal file
|
@ -0,0 +1,10 @@
|
|||
*-debug.log
|
||||
*-error.log
|
||||
/.nyc_output
|
||||
/dist
|
||||
/lib
|
||||
/package-lock.json
|
||||
/tmp
|
||||
/yarn.lock
|
||||
node_modules
|
||||
oclif.manifest.json
|
12
.mocharc.json
Normal file
12
.mocharc.json
Normal file
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"require": [
|
||||
"test/helpers/init.js",
|
||||
"ts-node/register"
|
||||
],
|
||||
"watch-extensions": [
|
||||
"ts"
|
||||
],
|
||||
"recursive": true,
|
||||
"reporter": "spec",
|
||||
"timeout": 60000
|
||||
}
|
337
README.md
Normal file
337
README.md
Normal file
|
@ -0,0 +1,337 @@
|
|||
oclif-hello-world
|
||||
=================
|
||||
|
||||
oclif example Hello World CLI
|
||||
|
||||
[![oclif](https://img.shields.io/badge/cli-oclif-brightgreen.svg)](https://oclif.io)
|
||||
[![Version](https://img.shields.io/npm/v/oclif-hello-world.svg)](https://npmjs.org/package/oclif-hello-world)
|
||||
[![CircleCI](https://circleci.com/gh/oclif/hello-world/tree/main.svg?style=shield)](https://circleci.com/gh/oclif/hello-world/tree/main)
|
||||
[![Downloads/week](https://img.shields.io/npm/dw/oclif-hello-world.svg)](https://npmjs.org/package/oclif-hello-world)
|
||||
[![License](https://img.shields.io/npm/l/oclif-hello-world.svg)](https://github.com/oclif/hello-world/blob/main/package.json)
|
||||
|
||||
<!-- toc -->
|
||||
* [Usage](#usage)
|
||||
* [Commands](#commands)
|
||||
<!-- tocstop -->
|
||||
# Usage
|
||||
<!-- usage -->
|
||||
```sh-session
|
||||
$ npm install -g kingoftime-cli
|
||||
$ kot COMMAND
|
||||
running command...
|
||||
$ kot (--version)
|
||||
kingoftime-cli/0.0.0 darwin-x64 node-v18.15.0
|
||||
$ kot --help [COMMAND]
|
||||
USAGE
|
||||
$ kot COMMAND
|
||||
...
|
||||
```
|
||||
<!-- usagestop -->
|
||||
# Commands
|
||||
<!-- commands -->
|
||||
* [`kot hello PERSON`](#kot-hello-person)
|
||||
* [`kot hello world`](#kot-hello-world)
|
||||
* [`kot help [COMMANDS]`](#kot-help-commands)
|
||||
* [`kot plugins`](#kot-plugins)
|
||||
* [`kot plugins:install PLUGIN...`](#kot-pluginsinstall-plugin)
|
||||
* [`kot plugins:inspect PLUGIN...`](#kot-pluginsinspect-plugin)
|
||||
* [`kot plugins:install PLUGIN...`](#kot-pluginsinstall-plugin-1)
|
||||
* [`kot plugins:link PLUGIN`](#kot-pluginslink-plugin)
|
||||
* [`kot plugins:uninstall PLUGIN...`](#kot-pluginsuninstall-plugin)
|
||||
* [`kot plugins:uninstall PLUGIN...`](#kot-pluginsuninstall-plugin-1)
|
||||
* [`kot plugins:uninstall PLUGIN...`](#kot-pluginsuninstall-plugin-2)
|
||||
* [`kot plugins update`](#kot-plugins-update)
|
||||
|
||||
## `kot hello PERSON`
|
||||
|
||||
Say hello
|
||||
|
||||
```
|
||||
USAGE
|
||||
$ kot hello PERSON -f <value>
|
||||
|
||||
ARGUMENTS
|
||||
PERSON Person to say hello to
|
||||
|
||||
FLAGS
|
||||
-f, --from=<value> (required) Who is saying hello
|
||||
|
||||
DESCRIPTION
|
||||
Say hello
|
||||
|
||||
EXAMPLES
|
||||
$ oex hello friend --from oclif
|
||||
hello friend from oclif! (./src/commands/hello/index.ts)
|
||||
```
|
||||
|
||||
_See code: [dist/commands/hello/index.ts](https://github.com/adamu/kingoftime-cli/blob/v0.0.0/dist/commands/hello/index.ts)_
|
||||
|
||||
## `kot hello world`
|
||||
|
||||
Say hello world
|
||||
|
||||
```
|
||||
USAGE
|
||||
$ kot hello world
|
||||
|
||||
DESCRIPTION
|
||||
Say hello world
|
||||
|
||||
EXAMPLES
|
||||
$ kot hello world
|
||||
hello world! (./src/commands/hello/world.ts)
|
||||
```
|
||||
|
||||
## `kot help [COMMANDS]`
|
||||
|
||||
Display help for kot.
|
||||
|
||||
```
|
||||
USAGE
|
||||
$ kot help [COMMANDS] [-n]
|
||||
|
||||
ARGUMENTS
|
||||
COMMANDS Command to show help for.
|
||||
|
||||
FLAGS
|
||||
-n, --nested-commands Include all nested commands in the output.
|
||||
|
||||
DESCRIPTION
|
||||
Display help for kot.
|
||||
```
|
||||
|
||||
_See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v5.2.9/src/commands/help.ts)_
|
||||
|
||||
## `kot plugins`
|
||||
|
||||
List installed plugins.
|
||||
|
||||
```
|
||||
USAGE
|
||||
$ kot plugins [--core]
|
||||
|
||||
FLAGS
|
||||
--core Show core plugins.
|
||||
|
||||
DESCRIPTION
|
||||
List installed plugins.
|
||||
|
||||
EXAMPLES
|
||||
$ kot plugins
|
||||
```
|
||||
|
||||
_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v2.4.4/src/commands/plugins/index.ts)_
|
||||
|
||||
## `kot plugins:install PLUGIN...`
|
||||
|
||||
Installs a plugin into the CLI.
|
||||
|
||||
```
|
||||
USAGE
|
||||
$ kot plugins:install PLUGIN...
|
||||
|
||||
ARGUMENTS
|
||||
PLUGIN Plugin to install.
|
||||
|
||||
FLAGS
|
||||
-f, --force Run yarn install with force flag.
|
||||
-h, --help Show CLI help.
|
||||
-v, --verbose
|
||||
|
||||
DESCRIPTION
|
||||
Installs a plugin into the CLI.
|
||||
Can be installed from npm or a git url.
|
||||
|
||||
Installation of a user-installed plugin will override a core plugin.
|
||||
|
||||
e.g. If you have a core plugin that has a 'hello' command, installing a user-installed plugin with a 'hello' command
|
||||
will override the core plugin implementation. This is useful if a user needs to update core plugin functionality in
|
||||
the CLI without the need to patch and update the whole CLI.
|
||||
|
||||
|
||||
ALIASES
|
||||
$ kot plugins add
|
||||
|
||||
EXAMPLES
|
||||
$ kot plugins:install myplugin
|
||||
|
||||
$ kot plugins:install https://github.com/someuser/someplugin
|
||||
|
||||
$ kot plugins:install someuser/someplugin
|
||||
```
|
||||
|
||||
## `kot plugins:inspect PLUGIN...`
|
||||
|
||||
Displays installation properties of a plugin.
|
||||
|
||||
```
|
||||
USAGE
|
||||
$ kot plugins:inspect PLUGIN...
|
||||
|
||||
ARGUMENTS
|
||||
PLUGIN [default: .] Plugin to inspect.
|
||||
|
||||
FLAGS
|
||||
-h, --help Show CLI help.
|
||||
-v, --verbose
|
||||
|
||||
GLOBAL FLAGS
|
||||
--json Format output as json.
|
||||
|
||||
DESCRIPTION
|
||||
Displays installation properties of a plugin.
|
||||
|
||||
EXAMPLES
|
||||
$ kot plugins:inspect myplugin
|
||||
```
|
||||
|
||||
## `kot plugins:install PLUGIN...`
|
||||
|
||||
Installs a plugin into the CLI.
|
||||
|
||||
```
|
||||
USAGE
|
||||
$ kot plugins:install PLUGIN...
|
||||
|
||||
ARGUMENTS
|
||||
PLUGIN Plugin to install.
|
||||
|
||||
FLAGS
|
||||
-f, --force Run yarn install with force flag.
|
||||
-h, --help Show CLI help.
|
||||
-v, --verbose
|
||||
|
||||
DESCRIPTION
|
||||
Installs a plugin into the CLI.
|
||||
Can be installed from npm or a git url.
|
||||
|
||||
Installation of a user-installed plugin will override a core plugin.
|
||||
|
||||
e.g. If you have a core plugin that has a 'hello' command, installing a user-installed plugin with a 'hello' command
|
||||
will override the core plugin implementation. This is useful if a user needs to update core plugin functionality in
|
||||
the CLI without the need to patch and update the whole CLI.
|
||||
|
||||
|
||||
ALIASES
|
||||
$ kot plugins add
|
||||
|
||||
EXAMPLES
|
||||
$ kot plugins:install myplugin
|
||||
|
||||
$ kot plugins:install https://github.com/someuser/someplugin
|
||||
|
||||
$ kot plugins:install someuser/someplugin
|
||||
```
|
||||
|
||||
## `kot plugins:link PLUGIN`
|
||||
|
||||
Links a plugin into the CLI for development.
|
||||
|
||||
```
|
||||
USAGE
|
||||
$ kot plugins:link PLUGIN
|
||||
|
||||
ARGUMENTS
|
||||
PATH [default: .] path to plugin
|
||||
|
||||
FLAGS
|
||||
-h, --help Show CLI help.
|
||||
-v, --verbose
|
||||
|
||||
DESCRIPTION
|
||||
Links a plugin into the CLI for development.
|
||||
Installation of a linked plugin will override a user-installed or core plugin.
|
||||
|
||||
e.g. If you have a user-installed or core plugin that has a 'hello' command, installing a linked plugin with a 'hello'
|
||||
command will override the user-installed or core plugin implementation. This is useful for development work.
|
||||
|
||||
|
||||
EXAMPLES
|
||||
$ kot plugins:link myplugin
|
||||
```
|
||||
|
||||
## `kot plugins:uninstall PLUGIN...`
|
||||
|
||||
Removes a plugin from the CLI.
|
||||
|
||||
```
|
||||
USAGE
|
||||
$ kot plugins:uninstall PLUGIN...
|
||||
|
||||
ARGUMENTS
|
||||
PLUGIN plugin to uninstall
|
||||
|
||||
FLAGS
|
||||
-h, --help Show CLI help.
|
||||
-v, --verbose
|
||||
|
||||
DESCRIPTION
|
||||
Removes a plugin from the CLI.
|
||||
|
||||
ALIASES
|
||||
$ kot plugins unlink
|
||||
$ kot plugins remove
|
||||
```
|
||||
|
||||
## `kot plugins:uninstall PLUGIN...`
|
||||
|
||||
Removes a plugin from the CLI.
|
||||
|
||||
```
|
||||
USAGE
|
||||
$ kot plugins:uninstall PLUGIN...
|
||||
|
||||
ARGUMENTS
|
||||
PLUGIN plugin to uninstall
|
||||
|
||||
FLAGS
|
||||
-h, --help Show CLI help.
|
||||
-v, --verbose
|
||||
|
||||
DESCRIPTION
|
||||
Removes a plugin from the CLI.
|
||||
|
||||
ALIASES
|
||||
$ kot plugins unlink
|
||||
$ kot plugins remove
|
||||
```
|
||||
|
||||
## `kot plugins:uninstall PLUGIN...`
|
||||
|
||||
Removes a plugin from the CLI.
|
||||
|
||||
```
|
||||
USAGE
|
||||
$ kot plugins:uninstall PLUGIN...
|
||||
|
||||
ARGUMENTS
|
||||
PLUGIN plugin to uninstall
|
||||
|
||||
FLAGS
|
||||
-h, --help Show CLI help.
|
||||
-v, --verbose
|
||||
|
||||
DESCRIPTION
|
||||
Removes a plugin from the CLI.
|
||||
|
||||
ALIASES
|
||||
$ kot plugins unlink
|
||||
$ kot plugins remove
|
||||
```
|
||||
|
||||
## `kot plugins update`
|
||||
|
||||
Update installed plugins.
|
||||
|
||||
```
|
||||
USAGE
|
||||
$ kot plugins update [-h] [-v]
|
||||
|
||||
FLAGS
|
||||
-h, --help Show CLI help.
|
||||
-v, --verbose
|
||||
|
||||
DESCRIPTION
|
||||
Update installed plugins.
|
||||
```
|
||||
<!-- commandsstop -->
|
17
bin/dev
Executable file
17
bin/dev
Executable file
|
@ -0,0 +1,17 @@
|
|||
#!/usr/bin/env node
|
||||
|
||||
const oclif = require('@oclif/core')
|
||||
|
||||
const path = require('path')
|
||||
const project = path.join(__dirname, '..', 'tsconfig.json')
|
||||
|
||||
// In dev mode -> use ts-node and dev plugins
|
||||
process.env.NODE_ENV = 'development'
|
||||
|
||||
require('ts-node').register({project})
|
||||
|
||||
// In dev mode, always show stack traces
|
||||
oclif.settings.debug = true;
|
||||
|
||||
// Start the CLI
|
||||
oclif.run().then(oclif.flush).catch(oclif.Errors.handle)
|
3
bin/dev.cmd
Normal file
3
bin/dev.cmd
Normal file
|
@ -0,0 +1,3 @@
|
|||
@echo off
|
||||
|
||||
node "%~dp0\dev" %*
|
5
bin/run
Executable file
5
bin/run
Executable file
|
@ -0,0 +1,5 @@
|
|||
#!/usr/bin/env node
|
||||
|
||||
const oclif = require('@oclif/core')
|
||||
|
||||
oclif.run().then(require('@oclif/core/flush')).catch(require('@oclif/core/handle'))
|
3
bin/run.cmd
Normal file
3
bin/run.cmd
Normal file
|
@ -0,0 +1,3 @@
|
|||
@echo off
|
||||
|
||||
node "%~dp0\run" %*
|
72
package.json
Normal file
72
package.json
Normal file
|
@ -0,0 +1,72 @@
|
|||
{
|
||||
"name": "kingoftime-cli",
|
||||
"version": "0.0.0",
|
||||
"description": "King of Time CLI",
|
||||
"author": "Adam Millerchip @adamu",
|
||||
"bin": {
|
||||
"kot": "./bin/run"
|
||||
},
|
||||
"homepage": "https://github.com/adamu/kingoftime-cli",
|
||||
"license": "MIT",
|
||||
"main": "dist/index.js",
|
||||
"repository": "adamu/kingoftime-cli",
|
||||
"files": [
|
||||
"/bin",
|
||||
"/dist",
|
||||
"/npm-shrinkwrap.json",
|
||||
"/oclif.manifest.json"
|
||||
],
|
||||
"dependencies": {
|
||||
"@oclif/core": "^2",
|
||||
"@oclif/plugin-help": "^5",
|
||||
"@oclif/plugin-plugins": "^2.4.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@oclif/test": "^2.3.14",
|
||||
"@types/chai": "^4",
|
||||
"@types/mocha": "^9.0.0",
|
||||
"@types/node": "^16.18.23",
|
||||
"chai": "^4",
|
||||
"eslint": "^7.32.0",
|
||||
"eslint-config-oclif": "^4",
|
||||
"eslint-config-oclif-typescript": "^1.0.3",
|
||||
"mocha": "^9",
|
||||
"oclif": "^3",
|
||||
"shx": "^0.3.3",
|
||||
"ts-node": "^10.9.1",
|
||||
"tslib": "^2.5.0",
|
||||
"typescript": "^4.9.5"
|
||||
},
|
||||
"oclif": {
|
||||
"bin": "kot",
|
||||
"dirname": "kot",
|
||||
"commands": "./dist/commands",
|
||||
"plugins": [
|
||||
"@oclif/plugin-help",
|
||||
"@oclif/plugin-plugins"
|
||||
],
|
||||
"topicSeparator": " ",
|
||||
"topics": {
|
||||
"hello": {
|
||||
"description": "Say hello to the world and others"
|
||||
}
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"build": "shx rm -rf dist && tsc -b",
|
||||
"lint": "eslint . --ext .ts --config .eslintrc",
|
||||
"postpack": "shx rm -f oclif.manifest.json",
|
||||
"posttest": "npm run lint",
|
||||
"prepack": "npm run build && oclif manifest && oclif readme",
|
||||
"test": "mocha --forbid-only \"test/**/*.test.ts\"",
|
||||
"version": "oclif readme && git add README.md"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12.0.0"
|
||||
},
|
||||
"bugs": "https://github.com/adamu/kingoftime-cli/issues",
|
||||
"keywords": [
|
||||
"oclif"
|
||||
],
|
||||
"types": "dist/index.d.ts"
|
||||
}
|
25
src/commands/hello/index.ts
Normal file
25
src/commands/hello/index.ts
Normal file
|
@ -0,0 +1,25 @@
|
|||
import {Args, Command, Flags} from '@oclif/core'
|
||||
|
||||
export default class Hello extends Command {
|
||||
static description = 'Say hello'
|
||||
|
||||
static examples = [
|
||||
`$ oex hello friend --from oclif
|
||||
hello friend from oclif! (./src/commands/hello/index.ts)
|
||||
`,
|
||||
]
|
||||
|
||||
static flags = {
|
||||
from: Flags.string({char: 'f', description: 'Who is saying hello', required: true}),
|
||||
}
|
||||
|
||||
static args = {
|
||||
person: Args.string({description: 'Person to say hello to', required: true}),
|
||||
}
|
||||
|
||||
async run(): Promise<void> {
|
||||
const {args, flags} = await this.parse(Hello)
|
||||
|
||||
this.log(`hello ${args.person} from ${flags.from}! (./src/commands/hello/index.ts)`)
|
||||
}
|
||||
}
|
19
src/commands/hello/world.ts
Normal file
19
src/commands/hello/world.ts
Normal file
|
@ -0,0 +1,19 @@
|
|||
import {Command} from '@oclif/core'
|
||||
|
||||
export default class World extends Command {
|
||||
static description = 'Say hello world'
|
||||
|
||||
static examples = [
|
||||
`<%= config.bin %> <%= command.id %>
|
||||
hello world! (./src/commands/hello/world.ts)
|
||||
`,
|
||||
]
|
||||
|
||||
static flags = {}
|
||||
|
||||
static args = {}
|
||||
|
||||
async run(): Promise<void> {
|
||||
this.log('hello world! (./src/commands/hello/world.ts)')
|
||||
}
|
||||
}
|
1
src/index.ts
Normal file
1
src/index.ts
Normal file
|
@ -0,0 +1 @@
|
|||
export {run} from '@oclif/core'
|
10
test/commands/hello/index.test.ts
Normal file
10
test/commands/hello/index.test.ts
Normal file
|
@ -0,0 +1,10 @@
|
|||
import {expect, test} from '@oclif/test'
|
||||
|
||||
describe('hello', () => {
|
||||
test
|
||||
.stdout()
|
||||
.command(['hello', 'friend', '--from=oclif'])
|
||||
.it('runs hello cmd', ctx => {
|
||||
expect(ctx.stdout).to.contain('hello friend from oclif!')
|
||||
})
|
||||
})
|
10
test/commands/hello/world.test.ts
Normal file
10
test/commands/hello/world.test.ts
Normal file
|
@ -0,0 +1,10 @@
|
|||
import {expect, test} from '@oclif/test'
|
||||
|
||||
describe('hello world', () => {
|
||||
test
|
||||
.stdout()
|
||||
.command(['hello:world'])
|
||||
.it('runs hello world cmd', ctx => {
|
||||
expect(ctx.stdout).to.contain('hello world!')
|
||||
})
|
||||
})
|
6
test/helpers/init.js
Normal file
6
test/helpers/init.js
Normal file
|
@ -0,0 +1,6 @@
|
|||
const path = require('path')
|
||||
process.env.TS_NODE_PROJECT = path.resolve('test/tsconfig.json')
|
||||
process.env.NODE_ENV = 'development'
|
||||
|
||||
global.oclif = global.oclif || {}
|
||||
global.oclif.columns = 80
|
9
test/tsconfig.json
Normal file
9
test/tsconfig.json
Normal file
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"extends": "../tsconfig",
|
||||
"compilerOptions": {
|
||||
"noEmit": true
|
||||
},
|
||||
"references": [
|
||||
{"path": ".."}
|
||||
]
|
||||
}
|
14
tsconfig.json
Normal file
14
tsconfig.json
Normal file
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"declaration": true,
|
||||
"importHelpers": true,
|
||||
"module": "commonjs",
|
||||
"outDir": "dist",
|
||||
"rootDir": "src",
|
||||
"strict": true,
|
||||
"target": "es2019"
|
||||
},
|
||||
"include": [
|
||||
"src/**/*"
|
||||
]
|
||||
}
|
Loading…
Reference in a new issue