1
0
Fork 0
mirror of https://github.com/kou029w/_.git synced 2025-01-31 06:18:07 +00:00

create oclif

This commit is contained in:
Nebel 2022-04-15 10:46:49 +09:00
parent 659934fe3d
commit d977571425
23 changed files with 5811 additions and 0 deletions

View file

@ -0,0 +1,30 @@
---
version: 2.1
orbs:
release-management: salesforce/npm-release-management@4
workflows:
version: 2
test-and-release:
jobs:
- release-management/test-package:
matrix:
parameters:
os:
- linux
- windows
node_version:
- latest
- lts
- maintenance
dependabot-automerge:
triggers:
- schedule:
cron: '0 2,5,8,11 * * *'
filters:
branches:
only:
- main
jobs:
- release-management/dependabot-automerge

11
oclif/.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
oclif/.eslintignore Normal file
View file

@ -0,0 +1 @@
/dist

6
oclif/.eslintrc Normal file
View file

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

16
oclif/.github/dependabot.yml vendored Normal file
View file

@ -0,0 +1,16 @@
version: 2
updates:
- package-ecosystem: "npm"
versioning-strategy: increase
directory: "/"
schedule:
interval: "monthly"
labels:
- "dependencies"
open-pull-requests-limit: 100
pull-request-branch-name:
separator: "-"
ignore:
- dependency-name: "fs-extra"
- dependency-name: "*"
update-types: ["version-update:semver-major"]

9
oclif/.gitignore vendored Normal file
View file

@ -0,0 +1,9 @@
*-debug.log
*-error.log
/.nyc_output
/dist
/lib
/package-lock.json
/tmp
node_modules
oclif.manifest.json

12
oclif/.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
}

21
oclif/LICENSE Normal file
View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2019 Salesforce
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

334
oclif/README.md Normal file
View file

@ -0,0 +1,334 @@
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 hello-world
$ hello-world COMMAND
running command...
$ hello-world (--version)
hello-world/0.0.0 linux-x64 node-v16.14.2
$ hello-world --help [COMMAND]
USAGE
$ hello-world COMMAND
...
```
<!-- usagestop -->
# Commands
<!-- commands -->
* [`hello-world hello PERSON`](#hello-world-hello-person)
* [`hello-world hello world`](#hello-world-hello-world)
* [`hello-world help [COMMAND]`](#hello-world-help-command)
* [`hello-world plugins`](#hello-world-plugins)
* [`hello-world plugins:install PLUGIN...`](#hello-world-pluginsinstall-plugin)
* [`hello-world plugins:inspect PLUGIN...`](#hello-world-pluginsinspect-plugin)
* [`hello-world plugins:install PLUGIN...`](#hello-world-pluginsinstall-plugin-1)
* [`hello-world plugins:link PLUGIN`](#hello-world-pluginslink-plugin)
* [`hello-world plugins:uninstall PLUGIN...`](#hello-world-pluginsuninstall-plugin)
* [`hello-world plugins:uninstall PLUGIN...`](#hello-world-pluginsuninstall-plugin-1)
* [`hello-world plugins:uninstall PLUGIN...`](#hello-world-pluginsuninstall-plugin-2)
* [`hello-world plugins update`](#hello-world-plugins-update)
## `hello-world hello PERSON`
Say hello
```
USAGE
$ hello-world hello [PERSON] -f <value>
ARGUMENTS
PERSON Person to say hello to
FLAGS
-f, --from=<value> (required) Whom 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/kou029w/hello-world/blob/v0.0.0/dist/commands/hello/index.ts)_
## `hello-world hello world`
Say hello world
```
USAGE
$ hello-world hello world
DESCRIPTION
Say hello world
EXAMPLES
$ oex hello world
hello world! (./src/commands/hello/world.ts)
```
## `hello-world help [COMMAND]`
Display help for hello-world.
```
USAGE
$ hello-world help [COMMAND] [-n]
ARGUMENTS
COMMAND Command to show help for.
FLAGS
-n, --nested-commands Include all nested commands in the output.
DESCRIPTION
Display help for hello-world.
```
_See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v5.1.10/src/commands/help.ts)_
## `hello-world plugins`
List installed plugins.
```
USAGE
$ hello-world plugins [--core]
FLAGS
--core Show core plugins.
DESCRIPTION
List installed plugins.
EXAMPLES
$ hello-world plugins
```
_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v2.0.11/src/commands/plugins/index.ts)_
## `hello-world plugins:install PLUGIN...`
Installs a plugin into the CLI.
```
USAGE
$ hello-world 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
$ hello-world plugins add
EXAMPLES
$ hello-world plugins:install myplugin
$ hello-world plugins:install https://github.com/someuser/someplugin
$ hello-world plugins:install someuser/someplugin
```
## `hello-world plugins:inspect PLUGIN...`
Displays installation properties of a plugin.
```
USAGE
$ hello-world plugins:inspect PLUGIN...
ARGUMENTS
PLUGIN [default: .] Plugin to inspect.
FLAGS
-h, --help Show CLI help.
-v, --verbose
DESCRIPTION
Displays installation properties of a plugin.
EXAMPLES
$ hello-world plugins:inspect myplugin
```
## `hello-world plugins:install PLUGIN...`
Installs a plugin into the CLI.
```
USAGE
$ hello-world 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
$ hello-world plugins add
EXAMPLES
$ hello-world plugins:install myplugin
$ hello-world plugins:install https://github.com/someuser/someplugin
$ hello-world plugins:install someuser/someplugin
```
## `hello-world plugins:link PLUGIN`
Links a plugin into the CLI for development.
```
USAGE
$ hello-world 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
$ hello-world plugins:link myplugin
```
## `hello-world plugins:uninstall PLUGIN...`
Removes a plugin from the CLI.
```
USAGE
$ hello-world plugins:uninstall PLUGIN...
ARGUMENTS
PLUGIN plugin to uninstall
FLAGS
-h, --help Show CLI help.
-v, --verbose
DESCRIPTION
Removes a plugin from the CLI.
ALIASES
$ hello-world plugins unlink
$ hello-world plugins remove
```
## `hello-world plugins:uninstall PLUGIN...`
Removes a plugin from the CLI.
```
USAGE
$ hello-world plugins:uninstall PLUGIN...
ARGUMENTS
PLUGIN plugin to uninstall
FLAGS
-h, --help Show CLI help.
-v, --verbose
DESCRIPTION
Removes a plugin from the CLI.
ALIASES
$ hello-world plugins unlink
$ hello-world plugins remove
```
## `hello-world plugins:uninstall PLUGIN...`
Removes a plugin from the CLI.
```
USAGE
$ hello-world plugins:uninstall PLUGIN...
ARGUMENTS
PLUGIN plugin to uninstall
FLAGS
-h, --help Show CLI help.
-v, --verbose
DESCRIPTION
Removes a plugin from the CLI.
ALIASES
$ hello-world plugins unlink
$ hello-world plugins remove
```
## `hello-world plugins update`
Update installed plugins.
```
USAGE
$ hello-world plugins update [-h] [-v]
FLAGS
-h, --help Show CLI help.
-v, --verbose
DESCRIPTION
Update installed plugins.
```
<!-- commandsstop -->

17
oclif/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
oclif/bin/dev.cmd Normal file
View file

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

5
oclif/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
oclif/bin/run.cmd Normal file
View file

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

73
oclif/package.json Normal file
View file

@ -0,0 +1,73 @@
{
"name": "hello-world",
"version": "0.0.0",
"description": "oclif example Hello World CLI",
"author": "Kohei Watanabe @kou029w",
"bin": {
"hello-world": "./bin/run"
},
"homepage": "https://github.com/kou029w/hello-world",
"license": "MIT",
"main": "dist/index.js",
"repository": "kou029w/hello-world",
"files": [
"/bin",
"/dist",
"/npm-shrinkwrap.json",
"/oclif.manifest.json"
],
"dependencies": {
"@oclif/core": "^1",
"@oclif/plugin-help": "^5",
"@oclif/plugin-plugins": "^2.0.1"
},
"devDependencies": {
"@oclif/test": "^2",
"@types/chai": "^4",
"@types/mocha": "^9.0.0",
"@types/node": "^16.9.4",
"chai": "^4",
"eslint": "^7.32.0",
"eslint-config-oclif": "^4",
"eslint-config-oclif-typescript": "^1.0.2",
"globby": "^11",
"mocha": "^9",
"oclif": "^2",
"shx": "^0.3.3",
"ts-node": "^10.2.1",
"tslib": "^2.3.1",
"typescript": "^4.4.3"
},
"oclif": {
"bin": "hello-world",
"dirname": "hello-world",
"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": "yarn lint",
"prepack": "yarn 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/kou029w/hello-world/issues",
"keywords": [
"oclif"
],
"types": "dist/index.d.ts"
}

View file

@ -0,0 +1,23 @@
import {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: 'Whom is saying hello', required: true}),
}
static args = [{name: 'person', 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 = [
`$ oex hello world
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
oclif/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!')
})
})

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
oclif/test/tsconfig.json Normal file
View file

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

14
oclif/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/**/*"
]
}

5178
oclif/yarn.lock Normal file

File diff suppressed because it is too large Load diff