@thegetty/quire-cli 1.0.0-rc.45 → 1.0.0-rc.47
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 +10 -27
- 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/man/quire.1 +0 -341
- package/man/quire.1.md +0 -232
- 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,212 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
## CLI Reporter Module
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
This module wraps [ora](https://github.com/sindresorhus/ora) to provide:
|
|
8
|
-
|
|
9
|
-
- Consistent progress indicators across all CLI commands
|
|
10
|
-
- Automatic suppression in quiet mode, JSON mode, and non-TTY environments
|
|
11
|
-
- Elapsed time display for long-running operations
|
|
12
|
-
- Multi-phase operation support
|
|
13
|
-
|
|
14
|
-
## Usage
|
|
15
|
-
|
|
16
|
-
### Basic Usage
|
|
17
|
-
|
|
18
|
-
```javascript
|
|
19
|
-
import reporter from '#lib/reporter/index.js'
|
|
20
|
-
|
|
21
|
-
// Start a spinner
|
|
22
|
-
reporter.start('Building site...')
|
|
23
|
-
|
|
24
|
-
// Do work...
|
|
25
|
-
await build()
|
|
26
|
-
|
|
27
|
-
// Mark as complete
|
|
28
|
-
reporter.succeed('Build complete')
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
### Multi-Phase Operations
|
|
32
|
-
|
|
33
|
-
```javascript
|
|
34
|
-
reporter.start('Cloning starter project...')
|
|
35
|
-
await git.clone(starter, '.')
|
|
36
|
-
|
|
37
|
-
reporter.update('Initializing repository...')
|
|
38
|
-
await git.init()
|
|
39
|
-
|
|
40
|
-
reporter.update('Installing dependencies...')
|
|
41
|
-
await npm.install()
|
|
42
|
-
|
|
43
|
-
reporter.succeed('Project created')
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
### Error Handling
|
|
47
|
-
|
|
48
|
-
```javascript
|
|
49
|
-
reporter.start('Generating PDF...')
|
|
50
|
-
try {
|
|
51
|
-
await generatePdf()
|
|
52
|
-
reporter.succeed('PDF generated')
|
|
53
|
-
} catch (error) {
|
|
54
|
-
reporter.fail('PDF generation failed')
|
|
55
|
-
throw error
|
|
56
|
-
}
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
### Elapsed Time Display
|
|
60
|
-
|
|
61
|
-
For operations with unpredictable duration:
|
|
62
|
-
|
|
63
|
-
```javascript
|
|
64
|
-
reporter.start('Building site...', { showElapsed: true })
|
|
65
|
-
// Shows: ⠋ Building site... (12s)
|
|
66
|
-
await build()
|
|
67
|
-
reporter.succeed('Build complete')
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
### Configuration
|
|
71
|
-
|
|
72
|
-
Configure the reporter to respect command options:
|
|
73
|
-
|
|
74
|
-
```javascript
|
|
75
|
-
async action(options) {
|
|
76
|
-
// Call at start of action() to respect --quiet, --json flags
|
|
77
|
-
reporter.configure(options)
|
|
78
|
-
|
|
79
|
-
reporter.start('Working...')
|
|
80
|
-
// ...
|
|
81
|
-
}
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
| Option | Effect |
|
|
85
|
-
|--------|--------|
|
|
86
|
-
| `quiet: true` | Suppress all spinner output |
|
|
87
|
-
| `json: true` | Suppress spinner (JSON-only output) |
|
|
88
|
-
| `verbose: true` | (Reserved for future use) |
|
|
89
|
-
|
|
90
|
-
## API Reference
|
|
91
|
-
|
|
92
|
-
### `reporter.configure(options)`
|
|
93
|
-
|
|
94
|
-
Configure reporter for current command context.
|
|
95
|
-
|
|
96
|
-
```javascript
|
|
97
|
-
reporter.configure({ quiet: true, json: false })
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
### `reporter.start(text, options)`
|
|
101
|
-
|
|
102
|
-
Start a new spinner.
|
|
103
|
-
|
|
104
|
-
| Parameter | Type | Description |
|
|
105
|
-
|-----------|------|-------------|
|
|
106
|
-
| `text` | `string` | Spinner text |
|
|
107
|
-
| `options.showElapsed` | `boolean` | Show elapsed time (default: `false`) |
|
|
108
|
-
|
|
109
|
-
### `reporter.update(text)`
|
|
110
|
-
|
|
111
|
-
Update spinner text while running.
|
|
112
|
-
|
|
113
|
-
### `reporter.succeed(text)`
|
|
114
|
-
|
|
115
|
-
Mark operation as successful. Uses current text if `text` not provided.
|
|
116
|
-
|
|
117
|
-
### `reporter.fail(text)`
|
|
118
|
-
|
|
119
|
-
Mark operation as failed.
|
|
120
|
-
|
|
121
|
-
### `reporter.warn(text)`
|
|
122
|
-
|
|
123
|
-
Mark operation with a warning.
|
|
124
|
-
|
|
125
|
-
### `reporter.info(text)`
|
|
126
|
-
|
|
127
|
-
Display an info message.
|
|
128
|
-
|
|
129
|
-
### `reporter.stop()`
|
|
130
|
-
|
|
131
|
-
Stop spinner without status indicator.
|
|
132
|
-
|
|
133
|
-
### `reporter.isSpinning()`
|
|
134
|
-
|
|
135
|
-
Returns `true` if a spinner is currently running.
|
|
136
|
-
|
|
137
|
-
### `reporter.getElapsed()`
|
|
138
|
-
|
|
139
|
-
Returns elapsed time in milliseconds since `start()`, or `null` if not started.
|
|
140
|
-
|
|
141
|
-
### `reporter.reset()`
|
|
142
|
-
|
|
143
|
-
Reset all reporter state. Useful in tests.
|
|
144
|
-
|
|
145
|
-
## Testing
|
|
146
|
-
|
|
147
|
-
### Mocking in Tests
|
|
148
|
-
|
|
149
|
-
```javascript
|
|
150
|
-
import esmock from 'esmock'
|
|
151
|
-
import sinon from 'sinon'
|
|
152
|
-
|
|
153
|
-
const mockReporter = {
|
|
154
|
-
start: sinon.stub().returnsThis(),
|
|
155
|
-
update: sinon.stub().returnsThis(),
|
|
156
|
-
succeed: sinon.stub().returnsThis(),
|
|
157
|
-
fail: sinon.stub().returnsThis(),
|
|
158
|
-
configure: sinon.stub().returnsThis(),
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
const MyCommand = await esmock('./mycommand.js', {
|
|
162
|
-
'#lib/reporter/index.js': { default: mockReporter }
|
|
163
|
-
})
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
### Verifying Calls
|
|
167
|
-
|
|
168
|
-
```javascript
|
|
169
|
-
test('shows progress during build', async (t) => {
|
|
170
|
-
await command.action(options)
|
|
171
|
-
|
|
172
|
-
t.true(mockReporter.start.calledWith('Building...'))
|
|
173
|
-
t.true(mockReporter.succeed.calledWith('Build complete'))
|
|
174
|
-
})
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
## Design Decisions
|
|
178
|
-
|
|
179
|
-
### Why ora?
|
|
180
|
-
|
|
181
|
-
Automatic supression of output when the `--quiet` or `--json` flags are set or TTY is detected support the four primary user-groups/use-cases: non-technical, developer, maintainer, and programmatic use.
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
| Factor | ora | Alternatives |
|
|
185
|
-
|--------|-----|--------------|
|
|
186
|
-
| Bundle size | 30.4 kB | cli-progress: 62.2 kB |
|
|
187
|
-
| Maintenance | Active | progress: 7 years dormant |
|
|
188
|
-
| Complexity | Simple | listr2: over-engineered |
|
|
189
|
-
|
|
190
|
-
### Singleton Pattern
|
|
191
|
-
|
|
192
|
-
Follows the established pattern from `lib/logger`, `lib/git`, and `lib/npm`:
|
|
193
|
-
|
|
194
|
-
```javascript
|
|
195
|
-
// Singleton export
|
|
196
|
-
export default new Reporter()
|
|
197
|
-
|
|
198
|
-
// Class export for testing
|
|
199
|
-
export { Reporter }
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
### Automatic TTY Detection
|
|
203
|
-
|
|
204
|
-
Spinners are automatically suppressed when:
|
|
205
|
-
|
|
206
|
-
1. `--quiet` flag is set
|
|
207
|
-
2. `--json` flag is set
|
|
208
|
-
3. `process.stdout.isTTY` is `false` (CI environments, piped output)
|
|
209
|
-
|
|
210
|
-
## Related
|
|
211
|
-
|
|
212
|
-
- [lib/logger](../logger/) - Logging abstraction (different concern)
|
|
3
|
+
Th `Reporter` module implements a logging concern for the Quire CLI, collecting output from commands and managing render of messages to the console.
|