Skip to content

Commit

Permalink
fix: conversion of spaced commands to colon commands (#164)
Browse files Browse the repository at this point in the history
  • Loading branch information
mdonnalley committed May 17, 2021
1 parent 1ef9672 commit 9503d32
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 12 deletions.
6 changes: 3 additions & 3 deletions src/help/index.ts
Expand Up @@ -9,9 +9,9 @@ import {renderList} from './list'
import RootHelp from './root'
import {stdtermwidth} from '../screen'
import {compact, sortBy, uniqBy} from '../util'
import {standarizeIDFromArgv, template} from './util'
import {standardizeIDFromArgv, template} from './util'

export {standarizeIDFromArgv, getHelpClass} from './util'
export {standardizeIDFromArgv, getHelpClass} from './util'

const wrap = require('wrap-ansi')
const {
Expand Down Expand Up @@ -94,7 +94,7 @@ export class Help extends HelpBase {
}

public showHelp(argv: string[]) {
if (this.config.topicSeparator !== ':') argv = standarizeIDFromArgv(argv, this.config)
if (this.config.topicSeparator !== ':') argv = standardizeIDFromArgv(argv, this.config)
const subject = getHelpSubject(argv)
if (!subject) {
if (this.config.pjson.oclif.default) {
Expand Down
2 changes: 1 addition & 1 deletion src/help/util.ts
Expand Up @@ -85,7 +85,7 @@ export function toConfiguredId(commandID: string, config: IConfig): string {
return commandID.replace(new RegExp(':', 'g'), config.topicSeparator)
}

export function standarizeIDFromArgv(argv: string[], config: IConfig): string[] {
export function standardizeIDFromArgv(argv: string[], config: IConfig): string[] {
if (argv.length === 0) return argv
if (config.topicSeparator === ' ') argv = collateSpacedCmdIDFromArgs(argv, config)
else if (config.topicSeparator !== ':') argv[0] = toStandardizedId(argv[0], config)
Expand Down
6 changes: 3 additions & 3 deletions src/main.ts
Expand Up @@ -2,7 +2,7 @@ import {format, inspect} from 'util'

import * as Interfaces from './interfaces'
import {Config} from './config'
import {getHelpClass, standarizeIDFromArgv} from './help'
import {getHelpClass, standardizeIDFromArgv} from './help'

const log = (message = '', ...args: any[]) => {
// tslint:disable-next-line strict-type-predicates
Expand All @@ -28,9 +28,9 @@ export async function run(argv = process.argv.slice(2), options?: Interfaces.Loa
// return Main.run(argv, options)
const config = await Config.load(options || (module.parent && module.parent.parent && module.parent.parent.filename) || __dirname) as Config

// run init hook
if (config.topicSeparator !== ':') argv = standarizeIDFromArgv(argv, config)
if (config.topicSeparator !== ':' && !argv[0].includes(':')) argv = standardizeIDFromArgv(argv, config)
let [id, ...argvSlice] = argv
// run init hook
await config.runHook('init', {id, argv: argvSlice})

// display version if applicable
Expand Down
10 changes: 5 additions & 5 deletions test/help/util.test.ts
Expand Up @@ -2,7 +2,7 @@
import {resolve} from 'path'
import {Config, Interfaces} from '../../src'
import {expect, test} from '@oclif/test'
import {getHelpClass, standarizeIDFromArgv} from '../../src/help'
import {getHelpClass, standardizeIDFromArgv} from '../../src/help'
import configuredHelpClass from '../../src/help/_test-help-class'

describe('util', () => {
Expand Down Expand Up @@ -42,27 +42,27 @@ describe('util', () => {
})
})

describe('#standarizeIDFromArgv', () => {
describe('#standardizeIDFromArgv', () => {
test
.it('should return standardized id when topic separator is a colon', () => {
config.pjson.oclif.topicSeparator = ':'
const actual = standarizeIDFromArgv(['foo:bar', '--baz'], config)
const actual = standardizeIDFromArgv(['foo:bar', '--baz'], config)
expect(actual).to.deep.equal(['foo:bar', '--baz'])
})

test
.stub(Config.prototype, 'commandIDs', () => ['foo', 'foo:bar'])
.it('should return standardized id when topic separator is a space', () => {
config.topicSeparator = ' '
const actual = standarizeIDFromArgv(['foo', 'bar', '--baz'], config)
const actual = standardizeIDFromArgv(['foo', 'bar', '--baz'], config)
expect(actual).to.deep.equal(['foo:bar', '--baz'])
})

test
.stub(Config.prototype, 'commandIDs', () => ['foo', 'foo:bar'])
.it('should return standardized id when topic separator is a space and command is misspelled', () => {
config.topicSeparator = ' '
const actual = standarizeIDFromArgv(['foo', 'ba', '--baz'], config)
const actual = standardizeIDFromArgv(['foo', 'ba', '--baz'], config)
expect(actual).to.deep.equal(['foo:ba', '--baz'])
})
})
Expand Down

0 comments on commit 9503d32

Please sign in to comment.