npx oclif generate kingoftime-cli

This commit is contained in:
Adam Millerchip 2023-04-14 22:13:50 +09:00
commit 3a8b0d0430
19 changed files with 571 additions and 0 deletions

11
.editorconfig Normal file
View 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
View file

@ -0,0 +1 @@
/dist

6
.eslintrc Normal file
View file

@ -0,0 +1,6 @@
{
"extends": [
"oclif",
"oclif-typescript"
]
}

10
.gitignore vendored Normal file
View 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
View 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
View 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
View 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
View file

@ -0,0 +1,3 @@
@echo off
node "%~dp0\dev" %*

5
bin/run Executable file
View 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
View file

@ -0,0 +1,3 @@
@echo off
node "%~dp0\run" %*

72
package.json Normal file
View 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"
}

View 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)`)
}
}

View 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
View file

@ -0,0 +1 @@
export {run} from '@oclif/core'

View 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!')
})
})

View 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
View 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
View file

@ -0,0 +1,9 @@
{
"extends": "../tsconfig",
"compilerOptions": {
"noEmit": true
},
"references": [
{"path": ".."}
]
}

14
tsconfig.json Normal file
View file

@ -0,0 +1,14 @@
{
"compilerOptions": {
"declaration": true,
"importHelpers": true,
"module": "commonjs",
"outDir": "dist",
"rootDir": "src",
"strict": true,
"target": "es2019"
},
"include": [
"src/**/*"
]
}