Skip to content
This repository was archived by the owner on Aug 22, 2023. It is now read-only.

Commit 7d145e1

Browse files
committed
fix: make this.log() behave more like console.log()
1 parent e794c49 commit 7d145e1

File tree

4 files changed

+26
-89
lines changed

4 files changed

+26
-89
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
"@types/node": "^9.6.2",
2727
"@types/semver": "^5.5.0",
2828
"chai": "^4.1.2",
29-
"fancy-test": "^1.0.1",
29+
"fancy-test": "^1.0.3",
3030
"mocha": "^5.0.5",
3131
"ts-node": "^5.0.1",
3232
"tslint": "^5.9.1",

src/command.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import * as Config from '@oclif/config'
44
import * as Errors from '@oclif/errors'
55
import * as Parser from '@oclif/parser'
66
import Help from '@oclif/plugin-help'
7-
import {inspect} from 'util'
7+
import {format, inspect} from 'util'
88

99
import * as flags from './flags'
1010

@@ -67,9 +67,10 @@ export default abstract class Command {
6767
error(input: string | Error, options: {code?: string, exit?: number} = {}) {
6868
Errors.error(input, options)
6969
}
70-
log(message: any = '') {
70+
log(message = '', ...args: any[]) {
71+
// tslint:disable-next-line strict-type-predicates
7172
message = typeof message === 'string' ? message : inspect(message)
72-
process.stdout.write(message + '\n')
73+
process.stdout.write(format(message, ...args) + '\n')
7374
}
7475

7576
/**

test/command.test.ts

+13
Original file line numberDiff line numberDiff line change
@@ -260,4 +260,17 @@ USAGE
260260
`)
261261
})
262262
})
263+
264+
describe('.log()', () => {
265+
fancy
266+
.stdout()
267+
.do(async () => {
268+
class CMD extends Command {
269+
async run() { this.log('json output: %j', {a: 'foobar'}) }
270+
}
271+
await CMD.run([])
272+
})
273+
.do(ctx => expect(ctx.stdout).to.equal('json output: {"a":"foobar"}\n'))
274+
.it('uses util.format()')
275+
})
263276
})

yarn.lock

+8-85
Original file line numberDiff line numberDiff line change
@@ -130,10 +130,6 @@ ansi-escapes@^3.0.0:
130130
version "3.0.0"
131131
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92"
132132

133-
ansi-regex@^0.2.0, ansi-regex@^0.2.1:
134-
version "0.2.1"
135-
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-0.2.1.tgz#0d8e946967a3d8143f93e24e298525fc1b2235f9"
136-
137133
ansi-regex@^2.0.0:
138134
version "2.1.1"
139135
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
@@ -142,10 +138,6 @@ ansi-regex@^3.0.0:
142138
version "3.0.0"
143139
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
144140

145-
ansi-styles@^1.1.0:
146-
version "1.1.0"
147-
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz#eaecbf66cd706882760b2f4691582b8f55d7a7de"
148-
149141
ansi-styles@^2.2.1:
150142
version "2.2.1"
151143
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
@@ -219,16 +211,6 @@ chai@^4.1.2:
219211
pathval "^1.0.0"
220212
type-detect "^4.0.0"
221213

222-
223-
version "0.5.1"
224-
resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.5.1.tgz#663b3a648b68b55d04690d49167aa837858f2174"
225-
dependencies:
226-
ansi-styles "^1.1.0"
227-
escape-string-regexp "^1.0.0"
228-
has-ansi "^0.1.0"
229-
strip-ansi "^0.3.0"
230-
supports-color "^0.2.0"
231-
232214
chalk@^1.1.3:
233215
version "1.1.3"
234216
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
@@ -288,10 +270,6 @@ [email protected]:
288270
version "2.11.0"
289271
resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
290272

291-
292-
version "2.6.0"
293-
resolved "https://registry.yarnpkg.com/commander/-/commander-2.6.0.tgz#9df7e52fb2a0cb0fb89058ee80c3104225f37e1d"
294-
295273
commander@^2.12.1:
296274
version "2.15.1"
297275
resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f"
@@ -300,19 +278,6 @@ [email protected]:
300278
version "0.0.1"
301279
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
302280

303-
concurrently@^3.5.1:
304-
version "3.5.1"
305-
resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-3.5.1.tgz#ee8b60018bbe86b02df13e5249453c6ececd2521"
306-
dependencies:
307-
chalk "0.5.1"
308-
commander "2.6.0"
309-
date-fns "^1.23.0"
310-
lodash "^4.5.1"
311-
rx "2.3.24"
312-
spawn-command "^0.0.2-1"
313-
supports-color "^3.2.3"
314-
tree-kill "^1.1.0"
315-
316281
content-type@^1.0.4:
317282
version "1.0.4"
318283
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
@@ -325,10 +290,6 @@ cross-spawn@^5.1.0:
325290
shebang-command "^1.2.0"
326291
which "^1.2.9"
327292

328-
date-fns@^1.23.0:
329-
version "1.29.0"
330-
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6"
331-
332293
[email protected], debug@^3.1.0:
333294
version "3.1.0"
334295
resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
@@ -358,7 +319,7 @@ error-ex@^1.3.1:
358319
dependencies:
359320
is-arrayish "^0.2.1"
360321

361-
[email protected], escape-string-regexp@^1.0.0, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
322+
[email protected], escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
362323
version "1.0.5"
363324
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
364325

@@ -382,12 +343,12 @@ extract-stack@^1.0.0:
382343
version "1.0.0"
383344
resolved "https://registry.yarnpkg.com/extract-stack/-/extract-stack-1.0.0.tgz#b97acaf9441eea2332529624b732fc5a1c8165fa"
384345

385-
fancy-test@^1.0.1:
386-
version "1.0.1"
387-
resolved "https://registry.yarnpkg.com/fancy-test/-/fancy-test-1.0.1.tgz#28eb801dffc341d7202ed90b6944019922b08b5b"
346+
fancy-test@^1.0.3:
347+
version "1.0.3"
348+
resolved "https://registry.yarnpkg.com/fancy-test/-/fancy-test-1.0.3.tgz#9a1a109973f39eeecb5f35c9df0e1700214cf2a0"
388349
dependencies:
389-
lodash "^4.17.4"
390-
stdout-stderr "^0.1.6"
350+
lodash "^4.17.5"
351+
stdout-stderr "^0.1.7"
391352

392353
fs-extra@^5.0.0:
393354
version "5.0.0"
@@ -428,22 +389,12 @@ [email protected]:
428389
version "1.10.3"
429390
resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f"
430391

431-
has-ansi@^0.1.0:
432-
version "0.1.0"
433-
resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-0.1.0.tgz#84f265aae8c0e6a88a12d7022894b7568894c62e"
434-
dependencies:
435-
ansi-regex "^0.2.0"
436-
437392
has-ansi@^2.0.0:
438393
version "2.0.0"
439394
resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
440395
dependencies:
441396
ansi-regex "^2.0.0"
442397

443-
has-flag@^1.0.0:
444-
version "1.0.0"
445-
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
446-
447398
has-flag@^2.0.0:
448399
version "2.0.0"
449400
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
@@ -557,7 +508,7 @@ lodash.templatesettings@^4.0.0:
557508
dependencies:
558509
lodash._reinterpolate "~3.0.0"
559510

560-
lodash@^4.17.4, lodash@^4.17.5, lodash@^4.5.1:
511+
lodash@^4.17.5:
561512
version "4.17.5"
562513
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511"
563514

@@ -677,10 +628,6 @@ resolve@^1.3.2:
677628
dependencies:
678629
path-parse "^1.0.5"
679630

680-
681-
version "2.3.24"
682-
resolved "https://registry.yarnpkg.com/rx/-/rx-2.3.24.tgz#14f950a4217d7e35daa71bbcbe58eff68ea4b2b7"
683-
684631
safe-buffer@^5.0.1:
685632
version "5.1.1"
686633
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
@@ -709,15 +656,11 @@ source-map@^0.6.0:
709656
version "0.6.1"
710657
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
711658

712-
spawn-command@^0.0.2-1:
713-
version "0.0.2-1"
714-
resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0"
715-
716659
sprintf-js@~1.0.2:
717660
version "1.0.3"
718661
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
719662

720-
stdout-stderr@^0.1.6:
663+
stdout-stderr@^0.1.7:
721664
version "0.1.7"
722665
resolved "https://registry.yarnpkg.com/stdout-stderr/-/stdout-stderr-0.1.7.tgz#f3f69391f3e721c2c52aa92fbfa18b8a6e9ce3df"
723666
dependencies:
@@ -730,12 +673,6 @@ string-width@^2.1.1:
730673
is-fullwidth-code-point "^2.0.0"
731674
strip-ansi "^4.0.0"
732675

733-
strip-ansi@^0.3.0:
734-
version "0.3.0"
735-
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.3.0.tgz#25f48ea22ca79187f3174a4db8759347bb126220"
736-
dependencies:
737-
ansi-regex "^0.2.1"
738-
739676
strip-ansi@^3.0.0:
740677
version "3.0.1"
741678
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
@@ -758,30 +695,16 @@ [email protected]:
758695
dependencies:
759696
has-flag "^2.0.0"
760697

761-
supports-color@^0.2.0:
762-
version "0.2.0"
763-
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a"
764-
765698
supports-color@^2.0.0:
766699
version "2.0.0"
767700
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
768701

769-
supports-color@^3.2.3:
770-
version "3.2.3"
771-
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
772-
dependencies:
773-
has-flag "^1.0.0"
774-
775702
supports-color@^5.1.0, supports-color@^5.3.0:
776703
version "5.3.0"
777704
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.3.0.tgz#5b24ac15db80fa927cf5227a4a33fd3c4c7676c0"
778705
dependencies:
779706
has-flag "^3.0.0"
780707

781-
tree-kill@^1.1.0:
782-
version "1.2.0"
783-
resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.0.tgz#5846786237b4239014f05db156b643212d4c6f36"
784-
785708
ts-node@^5.0.1:
786709
version "5.0.1"
787710
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-5.0.1.tgz#78e5d1cb3f704de1b641e43b76be2d4094f06f81"

0 commit comments

Comments
 (0)