1
0
Fork 0
mirror of https://github.com/kou029w/_.git synced 2025-01-30 22:08:02 +00:00
This commit is contained in:
Nebel 2022-04-15 15:57:00 +09:00
parent d977571425
commit 3e29baac96
16 changed files with 1128 additions and 2259 deletions

View file

@ -1,11 +0,0 @@
root = true
[*]
indent_style = space
indent_size = 2
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false

View file

@ -1 +0,0 @@
/dist

View file

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

View file

@ -1,12 +0,0 @@
{
"require": [
"test/helpers/init.js",
"ts-node/register"
],
"watch-extensions": [
"ts"
],
"recursive": true,
"reporter": "spec",
"timeout": 60000
}

View file

@ -1,46 +1,33 @@
oclif-hello-world
=================
# Hello World CLI
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)
- [Usage](#usage)
- [Commands](#commands)
<!-- toc -->
* [Usage](#usage)
* [Commands](#commands)
<!-- tocstop -->
<!-- prettier-ignore-start -->
# Usage
<!-- usage -->
```sh-session
$ npm install -g hello-world
$ npm install -g @kou029w/hello-world
$ hello-world COMMAND
running command...
$ hello-world (--version)
hello-world/0.0.0 linux-x64 node-v16.14.2
@kou029w/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 hello:world`](#hello-world-helloworld)
* [`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`
@ -64,15 +51,13 @@ EXAMPLES
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`
## `hello-world hello:world`
Say hello world
```
USAGE
$ hello-world hello world
$ hello-world hello:world
DESCRIPTION
Say hello world
@ -100,235 +85,6 @@ 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.
```
_See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v5.1.12/src/commands/help.ts)_
<!-- commandsstop -->
<!-- prettier-ignore-end -->

View file

@ -1,17 +1,8 @@
#!/usr/bin/env node
const oclif = require('@oclif/core')
process.env.NODE_ENV = "development";
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
require("esbuild-register")
const oclif = require("@oclif/core");
oclif.settings.debug = true;
// Start the CLI
oclif.run().then(oclif.flush).catch(oclif.Errors.handle)
oclif.run().then(oclif.flush).catch(oclif.Errors.handle);

View file

@ -1,5 +1,4 @@
#!/usr/bin/env node
const oclif = require('@oclif/core')
oclif.run().then(require('@oclif/core/flush')).catch(require('@oclif/core/handle'))
const oclif = require("@oclif/core");
oclif.run().then(oclif.flush).catch(oclif.Errors.handle);

View file

@ -1,73 +1,39 @@
{
"name": "hello-world",
"name": "@kou029w/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",
"bin": "bin/run",
"files": [
"/bin",
"/dist",
"/npm-shrinkwrap.json",
"/oclif.manifest.json"
"bin",
"dist",
"oclif.manifest.json"
],
"scripts": {
"build": "run-s build:{te,manifest,readme}",
"build:ts": "tsup src --clean",
"build:manifest": "oclif manifest",
"build:readme": "oclif readme",
"test": "vitest run",
"prepack": "npm run build"
},
"dependencies": {
"@oclif/core": "^1",
"@oclif/plugin-help": "^5",
"@oclif/plugin-plugins": "^2.0.1"
"@oclif/plugin-help": "^5"
},
"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"
"esbuild-register": "^3.3.2",
"npm-run-all": "^4.1.5",
"oclif": "^3.0.0",
"tsup": "^5.12.5",
"typescript": "^4.6.3",
"vitest": "^0.9.3"
},
"oclif": {
"bin": "hello-world",
"dirname": "hello-world",
"commands": "./dist/commands",
"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"
"@oclif/plugin-help"
]
}
}

View file

@ -1,10 +0,0 @@
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

@ -1,10 +0,0 @@
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

@ -1,6 +0,0 @@
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

View file

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

View file

@ -0,0 +1,8 @@
import { test, expect } from "vitest";
import run from "../../run";
import Hello from "../../../src/commands/hello/index";
test("hello", async () => {
const res = await run(() => Hello.run(["friend", "--from=oclif"]));
expect(res).toContain("hello friend from oclif!");
});

View file

@ -0,0 +1,13 @@
import { test, expect } from "vitest";
import run from "../../run";
import World from "../../../src/commands/hello/world";
test("hello world", async () => {
const res = await run(() => World.run());
expect(res).toContain("hello world!");
});
test("hello world", async () => {
const res = await run(() => World.run());
expect(res).toContain("hello world!");
});

19
oclif/tests/run.ts Normal file
View file

@ -0,0 +1,19 @@
import { vi } from "vitest";
/**
*
* @param proc
* @return
*/
async function run(proc: () => PromiseLike<void>): Promise<string> {
const out: string[] = [];
const stdout = vi.spyOn(process.stdout, "write").mockImplementation((val) => {
out.push(val as string);
return true;
});
await proc();
stdout.mockRestore();
return out.join("");
}
export default run;

File diff suppressed because it is too large Load diff