@thegetty/quire-cli 1.0.0-rc.44 → 1.0.0-rc.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +0 -36
- package/README.md +0 -9
- package/bin/cli.js +1 -46
- package/package.json +9 -25
- package/src/Command.js +6 -26
- package/src/commands/README.md +122 -213
- package/src/commands/build.js +37 -45
- package/src/commands/clean.js +19 -33
- package/src/commands/conf.js +43 -0
- package/src/commands/create.js +14 -42
- package/src/commands/epub.js +31 -67
- package/src/commands/index.js +2 -9
- package/src/commands/info.js +86 -88
- package/src/commands/pdf.js +82 -63
- package/src/commands/preview.js +31 -32
- package/src/commands/validate.js +20 -64
- package/src/commands/version.js +43 -0
- package/src/errors/validation/validation-error.js +11 -20
- package/src/helpers/clean.js +1 -1
- package/src/helpers/is-quire.js +31 -0
- package/src/helpers/test-cwd.js +6 -5
- package/src/helpers/which.js +4 -10
- package/src/lib/11ty/README.md +19 -135
- package/src/lib/11ty/api.js +93 -235
- package/src/lib/11ty/cli.js +37 -112
- package/src/lib/11ty/index.js +5 -64
- package/src/lib/11ty/paths.js +103 -0
- package/src/lib/README.md +0 -330
- package/src/lib/conf/README.md +69 -86
- package/src/lib/conf/config.js +3 -5
- package/src/lib/conf/defaults.js +0 -65
- package/src/lib/conf/schema.js +9 -103
- package/src/lib/epub/README.md +2 -133
- package/src/lib/epub/epub.js +11 -36
- package/src/lib/epub/index.js +21 -111
- package/src/lib/epub/pandoc.js +4 -33
- package/src/lib/git/README.md +2 -151
- package/src/lib/git/index.js +13 -217
- package/src/lib/i18n/README.md +3 -0
- package/src/lib/i18n/config.js +53 -0
- package/src/lib/i18n/index.js +43 -0
- package/src/lib/i18n/localeService.js +58 -0
- package/src/lib/pdf/README.md +0 -131
- package/src/lib/pdf/index.js +21 -124
- package/src/lib/pdf/paged.js +52 -100
- package/src/lib/pdf/prince.js +37 -115
- package/src/lib/pdf/split.js +33 -61
- package/src/lib/quire/README.md +19 -0
- package/src/lib/quire/index.js +353 -0
- package/src/lib/reporter/README.md +2 -211
- package/src/lib/reporter/index.js +0 -607
- package/src/main.js +48 -221
- package/src/packageConfig.js +0 -17
- package/src/validators/utils.js +1 -2
- package/schemas/config.schema.json +0 -194
- package/schemas/figures.schema.json +0 -56
- package/schemas/layout.schema.json +0 -5
- package/schemas/objects.schema.json +0 -62
- package/schemas/publication.schema.json +0 -140
- package/schemas/references.schema.json +0 -29
- package/src/Command.spec.js +0 -99
- package/src/commands/build.spec.js +0 -113
- package/src/commands/build.test.js +0 -397
- package/src/commands/clean.spec.js +0 -118
- package/src/commands/clean.test.js +0 -382
- package/src/commands/config.js +0 -238
- package/src/commands/config.spec.js +0 -107
- package/src/commands/config.test.js +0 -845
- package/src/commands/create.spec.js +0 -112
- package/src/commands/create.test.js +0 -415
- package/src/commands/doctor.js +0 -251
- package/src/commands/doctor.spec.js +0 -115
- package/src/commands/doctor.test.js +0 -1409
- package/src/commands/epub.spec.js +0 -114
- package/src/commands/epub.test.js +0 -503
- package/src/commands/help.js +0 -60
- package/src/commands/help.test.js +0 -132
- package/src/commands/info.spec.js +0 -72
- package/src/commands/info.test.js +0 -512
- package/src/commands/pdf.spec.js +0 -114
- package/src/commands/pdf.test.js +0 -464
- package/src/commands/preview.spec.js +0 -97
- package/src/commands/preview.test.js +0 -250
- package/src/commands/use.js +0 -56
- package/src/commands/use.spec.js +0 -61
- package/src/commands/use.test.js +0 -280
- package/src/commands/validate.spec.js +0 -90
- package/src/commands/validate.test.js +0 -378
- package/src/commands/workflows.js +0 -70
- package/src/errors/build/build-failed-error.js +0 -19
- package/src/errors/build/config-field-missing-error.js +0 -20
- package/src/errors/build/config-file-not-found-error.js +0 -20
- package/src/errors/build/index.js +0 -11
- package/src/errors/help/help-topic-not-found-error.js +0 -30
- package/src/errors/help/index.js +0 -8
- package/src/errors/index.js +0 -58
- package/src/errors/input/index.js +0 -8
- package/src/errors/input/invalid-input-error.js +0 -21
- package/src/errors/install/dependency-install-error.js +0 -19
- package/src/errors/install/directory-not-empty-error.js +0 -25
- package/src/errors/install/index.js +0 -12
- package/src/errors/install/invalid-path-error.js +0 -31
- package/src/errors/install/invalid-starter-error.js +0 -27
- package/src/errors/install/version-not-found-error.js +0 -35
- package/src/errors/output/epub-generation-error.js +0 -19
- package/src/errors/output/index.js +0 -14
- package/src/errors/output/invalid-epub-library-error.js +0 -20
- package/src/errors/output/invalid-pdf-library-error.js +0 -20
- package/src/errors/output/missing-build-output-error.js +0 -21
- package/src/errors/output/pdf-generation-error.js +0 -24
- package/src/errors/output/tool-not-found-error.js +0 -37
- package/src/errors/project/index.js +0 -10
- package/src/errors/project/not-in-project-error.js +0 -20
- package/src/errors/project/project-create-error.js +0 -21
- package/src/errors/quire-error.js +0 -27
- package/src/errors/validation/index.js +0 -3
- package/src/errors/validation/unknown-config-key-error.js +0 -27
- package/src/errors/validation/unknown-config-operation-error.js +0 -24
- package/src/helpers/docs-url.js +0 -32
- package/src/helpers/pager.js +0 -59
- package/src/helpers/pager.test.js +0 -85
- package/src/helpers/suggest-similar.js +0 -124
- package/src/helpers/suggest-similar.test.js +0 -108
- package/src/helpers/test-cwd.test.js +0 -192
- package/src/lib/11ty/index.test.js +0 -655
- package/src/lib/commander/index.js +0 -103
- package/src/lib/commander/index.test.js +0 -86
- package/src/lib/commander/options.js +0 -237
- package/src/lib/commander/options.test.js +0 -205
- package/src/lib/conf/build-status.js +0 -103
- package/src/lib/conf/build-status.test.js +0 -247
- package/src/lib/conf/config.test.js +0 -281
- package/src/lib/conf/format.js +0 -60
- package/src/lib/conf/format.test.js +0 -106
- package/src/lib/conf/helpers.js +0 -91
- package/src/lib/conf/helpers.test.js +0 -136
- package/src/lib/conf/index.js +0 -22
- package/src/lib/constants.js +0 -28
- package/src/lib/doctor/README.md +0 -667
- package/src/lib/doctor/checks/environment/cli-version.js +0 -62
- package/src/lib/doctor/checks/environment/cli-version.test.js +0 -132
- package/src/lib/doctor/checks/environment/git-available.js +0 -77
- package/src/lib/doctor/checks/environment/git-available.test.js +0 -52
- package/src/lib/doctor/checks/environment/index.js +0 -13
- package/src/lib/doctor/checks/environment/node-version.js +0 -66
- package/src/lib/doctor/checks/environment/node-version.test.js +0 -17
- package/src/lib/doctor/checks/environment/npm-available.js +0 -66
- package/src/lib/doctor/checks/environment/npm-available.test.js +0 -52
- package/src/lib/doctor/checks/environment/os-info.js +0 -48
- package/src/lib/doctor/checks/environment/os-info.test.js +0 -81
- package/src/lib/doctor/checks/environment/runtime-info.js +0 -51
- package/src/lib/doctor/checks/environment/runtime-info.test.js +0 -132
- package/src/lib/doctor/checks/outputs/epub-output.js +0 -119
- package/src/lib/doctor/checks/outputs/epub-output.test.js +0 -277
- package/src/lib/doctor/checks/outputs/index.js +0 -10
- package/src/lib/doctor/checks/outputs/pdf-output.js +0 -144
- package/src/lib/doctor/checks/outputs/pdf-output.test.js +0 -377
- package/src/lib/doctor/checks/outputs/stale-build.js +0 -122
- package/src/lib/doctor/checks/outputs/stale-build.test.js +0 -282
- package/src/lib/doctor/checks/project/data-files.js +0 -56
- package/src/lib/doctor/checks/project/data-files.test.js +0 -125
- package/src/lib/doctor/checks/project/dependencies.js +0 -53
- package/src/lib/doctor/checks/project/dependencies.test.js +0 -71
- package/src/lib/doctor/checks/project/index.js +0 -11
- package/src/lib/doctor/checks/project/quire-11ty.js +0 -98
- package/src/lib/doctor/checks/project/quire-11ty.test.js +0 -170
- package/src/lib/doctor/checks/project/quire-project.js +0 -38
- package/src/lib/doctor/checks/project/quire-project.test.js +0 -47
- package/src/lib/doctor/checks/tools/index.js +0 -10
- package/src/lib/doctor/checks/tools/pandoc-available.js +0 -82
- package/src/lib/doctor/checks/tools/pandoc-available.test.js +0 -73
- package/src/lib/doctor/checks/tools/prince-available.js +0 -81
- package/src/lib/doctor/checks/tools/prince-available.test.js +0 -73
- package/src/lib/doctor/constants.js +0 -39
- package/src/lib/doctor/formatDuration.js +0 -108
- package/src/lib/doctor/formatDuration.test.js +0 -76
- package/src/lib/doctor/formatters/human.js +0 -257
- package/src/lib/doctor/formatters/human.test.js +0 -463
- package/src/lib/doctor/formatters/index.js +0 -8
- package/src/lib/doctor/formatters/json.js +0 -78
- package/src/lib/doctor/formatters/json.test.js +0 -174
- package/src/lib/doctor/formatters/shared.js +0 -129
- package/src/lib/doctor/formatters/shared.test.js +0 -194
- package/src/lib/doctor/index.js +0 -271
- package/src/lib/doctor/index.test.js +0 -797
- package/src/lib/epub/engines.js +0 -46
- package/src/lib/epub/index.test.js +0 -518
- package/src/lib/epub/pandoc.test.js +0 -122
- package/src/lib/epub/schema.js +0 -21
- package/src/lib/error/README.md +0 -170
- package/src/lib/error/handler.js +0 -107
- package/src/lib/git/index.spec.js +0 -80
- package/src/lib/git/index.test.js +0 -453
- package/src/lib/help/frontmatter.js +0 -77
- package/src/lib/help/frontmatter.test.js +0 -139
- package/src/lib/help/index.js +0 -146
- package/src/lib/help/index.test.js +0 -188
- package/src/lib/help/topics/configuration.md +0 -77
- package/src/lib/help/topics/debugging.md +0 -69
- package/src/lib/help/topics/epub.md +0 -74
- package/src/lib/help/topics/pdf.md +0 -74
- package/src/lib/help/topics/publishing.md +0 -80
- package/src/lib/help/topics/workflows.md +0 -50
- package/src/lib/installer/index.js +0 -309
- package/src/lib/installer/index.spec.js +0 -83
- package/src/lib/installer/index.test.js +0 -545
- package/src/lib/logger/README.md +0 -424
- package/src/lib/logger/debug.js +0 -132
- package/src/lib/logger/debug.spec.js +0 -130
- package/src/lib/logger/debug.test.js +0 -128
- package/src/lib/logger/index.js +0 -228
- package/src/lib/logger/index.spec.js +0 -131
- package/src/lib/logger/index.test.js +0 -578
- package/src/lib/npm/README.md +0 -127
- package/src/lib/npm/index.js +0 -198
- package/src/lib/npm/index.spec.js +0 -60
- package/src/lib/npm/index.test.js +0 -355
- package/src/lib/pdf/engines.js +0 -46
- package/src/lib/pdf/index.test.js +0 -708
- package/src/lib/pdf/paged.test.js +0 -366
- package/src/lib/pdf/prince.test.js +0 -202
- package/src/lib/pdf/schema.js +0 -21
- package/src/lib/pdf/split.test.js +0 -445
- package/src/lib/platform.js +0 -95
- package/src/lib/process/manager.js +0 -110
- package/src/lib/process/manager.test.js +0 -55
- package/src/lib/project/build.js +0 -162
- package/src/lib/project/build.test.js +0 -275
- package/src/lib/project/config.js +0 -48
- package/src/lib/project/config.test.js +0 -134
- package/src/lib/project/detect.js +0 -47
- package/src/lib/project/detect.test.js +0 -157
- package/src/lib/project/index.js +0 -56
- package/src/lib/project/output-paths.js +0 -87
- package/src/lib/project/output-paths.test.js +0 -66
- package/src/lib/project/paths.js +0 -272
- package/src/lib/project/version.js +0 -110
- package/src/lib/project/version.test.js +0 -350
- package/src/lib/reporter/index.test.js +0 -862
- package/src/main.spec.js +0 -61
- package/src/main.test.js +0 -347
- package/src/validators/validate-data-files.js +0 -154
- package/src/validators/validate-data-files.test.js +0 -217
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
import esmock from 'esmock'
|
|
2
|
-
import sinon from 'sinon'
|
|
3
|
-
import test from 'ava'
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Help Command Integration Tests
|
|
7
|
-
*
|
|
8
|
-
* Tests the help command behavior with mocked dependencies.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
test.serial('help command outputs topic list when called without arguments', async (t) => {
|
|
12
|
-
const sandbox = sinon.createSandbox()
|
|
13
|
-
const stdoutWrite = sandbox.stub(process.stdout, 'write')
|
|
14
|
-
|
|
15
|
-
try {
|
|
16
|
-
const mockList = 'Available help topics:\n debugging Troubleshooting help'
|
|
17
|
-
|
|
18
|
-
const HelpCommand = await esmock('./help.js', {
|
|
19
|
-
'#lib/help/index.js': {
|
|
20
|
-
getTopicList: sandbox.stub().resolves(mockList),
|
|
21
|
-
getTopicContent: sandbox.stub()
|
|
22
|
-
},
|
|
23
|
-
'#helpers/pager.js': {
|
|
24
|
-
outputWithPaging: sandbox.stub()
|
|
25
|
-
}
|
|
26
|
-
})
|
|
27
|
-
|
|
28
|
-
const command = new HelpCommand.default()
|
|
29
|
-
await command.action(undefined, {}, {})
|
|
30
|
-
|
|
31
|
-
t.true(stdoutWrite.calledOnce)
|
|
32
|
-
t.true(stdoutWrite.calledWith(mockList + '\n'))
|
|
33
|
-
} finally {
|
|
34
|
-
sandbox.restore()
|
|
35
|
-
}
|
|
36
|
-
})
|
|
37
|
-
|
|
38
|
-
test.serial('help command outputs topic list when --list flag is provided', async (t) => {
|
|
39
|
-
const sandbox = sinon.createSandbox()
|
|
40
|
-
const stdoutWrite = sandbox.stub(process.stdout, 'write')
|
|
41
|
-
|
|
42
|
-
try {
|
|
43
|
-
const mockList = 'Available help topics:\n pdf PDF generation'
|
|
44
|
-
|
|
45
|
-
const HelpCommand = await esmock('./help.js', {
|
|
46
|
-
'#lib/help/index.js': {
|
|
47
|
-
getTopicList: sandbox.stub().resolves(mockList),
|
|
48
|
-
getTopicContent: sandbox.stub()
|
|
49
|
-
},
|
|
50
|
-
'#helpers/pager.js': {
|
|
51
|
-
outputWithPaging: sandbox.stub()
|
|
52
|
-
}
|
|
53
|
-
})
|
|
54
|
-
|
|
55
|
-
const command = new HelpCommand.default()
|
|
56
|
-
await command.action('ignored', { list: true }, {})
|
|
57
|
-
|
|
58
|
-
t.true(stdoutWrite.calledOnce)
|
|
59
|
-
t.true(stdoutWrite.calledWith(mockList + '\n'))
|
|
60
|
-
} finally {
|
|
61
|
-
sandbox.restore()
|
|
62
|
-
}
|
|
63
|
-
})
|
|
64
|
-
|
|
65
|
-
test('help command outputs topic content with paging when topic is specified', async (t) => {
|
|
66
|
-
const sandbox = sinon.createSandbox()
|
|
67
|
-
|
|
68
|
-
try {
|
|
69
|
-
const mockRendered = 'Rendered workflows content'
|
|
70
|
-
const mockOutputWithPaging = sandbox.stub().resolves()
|
|
71
|
-
|
|
72
|
-
const HelpCommand = await esmock('./help.js', {
|
|
73
|
-
'#lib/help/index.js': {
|
|
74
|
-
getTopicList: sandbox.stub(),
|
|
75
|
-
getTopicContent: sandbox.stub().resolves(mockRendered)
|
|
76
|
-
},
|
|
77
|
-
'#helpers/pager.js': {
|
|
78
|
-
outputWithPaging: mockOutputWithPaging
|
|
79
|
-
}
|
|
80
|
-
})
|
|
81
|
-
|
|
82
|
-
const command = new HelpCommand.default()
|
|
83
|
-
await command.action('workflows', {}, {})
|
|
84
|
-
|
|
85
|
-
t.true(mockOutputWithPaging.calledOnce)
|
|
86
|
-
t.true(mockOutputWithPaging.calledWith(mockRendered))
|
|
87
|
-
} finally {
|
|
88
|
-
sandbox.restore()
|
|
89
|
-
}
|
|
90
|
-
})
|
|
91
|
-
|
|
92
|
-
test('help command propagates HelpTopicNotFoundError from getTopicContent', async (t) => {
|
|
93
|
-
const sandbox = sinon.createSandbox()
|
|
94
|
-
|
|
95
|
-
try {
|
|
96
|
-
const { default: HelpTopicNotFoundError } = await import('#src/errors/help/help-topic-not-found-error.js')
|
|
97
|
-
|
|
98
|
-
const HelpCommand = await esmock('./help.js', {
|
|
99
|
-
'#lib/help/index.js': {
|
|
100
|
-
getTopicList: sandbox.stub(),
|
|
101
|
-
getTopicContent: sandbox.stub().rejects(new HelpTopicNotFoundError('nonexistent'))
|
|
102
|
-
},
|
|
103
|
-
'#helpers/pager.js': {
|
|
104
|
-
outputWithPaging: sandbox.stub()
|
|
105
|
-
}
|
|
106
|
-
})
|
|
107
|
-
|
|
108
|
-
const command = new HelpCommand.default()
|
|
109
|
-
|
|
110
|
-
const error = await t.throwsAsync(
|
|
111
|
-
() => command.action('nonexistent', {}, {}),
|
|
112
|
-
{ name: 'HelpTopicNotFoundError' }
|
|
113
|
-
)
|
|
114
|
-
|
|
115
|
-
t.is(error.code, 'HELP_TOPIC_NOT_FOUND')
|
|
116
|
-
t.is(error.exitCode, 2)
|
|
117
|
-
t.is(error.topic, 'nonexistent')
|
|
118
|
-
} finally {
|
|
119
|
-
sandbox.restore()
|
|
120
|
-
}
|
|
121
|
-
})
|
|
122
|
-
|
|
123
|
-
test('help command has correct definition', async (t) => {
|
|
124
|
-
const HelpCommand = await import('./help.js')
|
|
125
|
-
const command = new HelpCommand.default()
|
|
126
|
-
|
|
127
|
-
t.is(command.name, 'help')
|
|
128
|
-
t.deepEqual(command.aliases, ['h'])
|
|
129
|
-
t.truthy(command.description)
|
|
130
|
-
t.truthy(command.args)
|
|
131
|
-
t.truthy(command.options)
|
|
132
|
-
})
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { Command, Option } from 'commander'
|
|
2
|
-
import program from '#src/main.js'
|
|
3
|
-
import test from 'ava'
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Command Contract/Interface Tests
|
|
7
|
-
*
|
|
8
|
-
* Verifies the command's public API and Commander.js integration.
|
|
9
|
-
* @see docs/testing-commands.md
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
test.before((t) => {
|
|
13
|
-
// Get the registered command (from program.commands) once and share across all tests
|
|
14
|
-
t.context.command = program.commands.find((cmd) => cmd.name() === 'info')
|
|
15
|
-
})
|
|
16
|
-
|
|
17
|
-
test('command is registered in CLI program', (t) => {
|
|
18
|
-
const { command } = t.context
|
|
19
|
-
|
|
20
|
-
t.truthy(command, 'command "info" should be registered in program')
|
|
21
|
-
t.true(command instanceof Command, 'registered command should be Commander.js Command instance')
|
|
22
|
-
})
|
|
23
|
-
|
|
24
|
-
test('registered command has correct metadata', (t) => {
|
|
25
|
-
const { command } = t.context
|
|
26
|
-
|
|
27
|
-
t.is(command.name(), 'info')
|
|
28
|
-
t.truthy(command.description())
|
|
29
|
-
t.is(typeof command._actionHandler, 'function', 'command should have action handler')
|
|
30
|
-
})
|
|
31
|
-
|
|
32
|
-
test('registered command has no arguments', (t) => {
|
|
33
|
-
const { command } = t.context
|
|
34
|
-
const registeredArguments = command.registeredArguments
|
|
35
|
-
|
|
36
|
-
t.is(registeredArguments.length, 0, 'info command should have no arguments')
|
|
37
|
-
})
|
|
38
|
-
|
|
39
|
-
test('registered command has correct options', (t) => {
|
|
40
|
-
const { command } = t.context
|
|
41
|
-
|
|
42
|
-
// Get all options
|
|
43
|
-
const jsonOption = command.options.find((opt) => opt.long === '--json')
|
|
44
|
-
const debugOption = command.options.find((opt) => opt.long === '--debug')
|
|
45
|
-
|
|
46
|
-
// Verify all options exist
|
|
47
|
-
t.truthy(jsonOption, '--json option should exist')
|
|
48
|
-
t.truthy(debugOption, '--debug option should exist')
|
|
49
|
-
|
|
50
|
-
// Verify they are Option instances
|
|
51
|
-
t.true(jsonOption instanceof Option, '--json should be Option instance')
|
|
52
|
-
t.true(debugOption instanceof Option, '--debug should be Option instance')
|
|
53
|
-
|
|
54
|
-
// Verify option properties
|
|
55
|
-
t.is(jsonOption.long, '--json')
|
|
56
|
-
t.truthy(jsonOption.description)
|
|
57
|
-
t.false(jsonOption.required, '--json should not require a value')
|
|
58
|
-
|
|
59
|
-
t.is(debugOption.long, '--debug')
|
|
60
|
-
t.truthy(debugOption.description)
|
|
61
|
-
t.false(debugOption.required, '--debug should not require a value')
|
|
62
|
-
})
|
|
63
|
-
|
|
64
|
-
test('command options are accessible via public API', (t) => {
|
|
65
|
-
const { command } = t.context
|
|
66
|
-
|
|
67
|
-
// Test that options can be accessed the way Commander.js does
|
|
68
|
-
const optionNames = command.options.map((opt) => opt.long)
|
|
69
|
-
|
|
70
|
-
t.true(optionNames.includes('--json'))
|
|
71
|
-
t.true(optionNames.includes('--debug'))
|
|
72
|
-
})
|