@rokkit/cli 1.3.0 → 1.3.1
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/package.json +2 -2
- package/src/config.js +1 -0
- package/src/convert.js +5 -0
- package/src/doctor.js +5 -0
- package/src/init.js +4 -0
- package/src/upgrade.js +3 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rokkit/cli",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.1",
|
|
4
4
|
"description": "Command line utilities for icon bundling and conversion.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"@mdi/svg": "^7.4.47",
|
|
30
|
-
"@rokkit/unocss": "1.3.
|
|
30
|
+
"@rokkit/unocss": "1.3.1",
|
|
31
31
|
"sade": "^1.8.1",
|
|
32
32
|
"@iconify/tools": "5.0.3",
|
|
33
33
|
"@iconify/types": "^2.0.0",
|
package/src/config.js
CHANGED
|
@@ -16,6 +16,7 @@ export async function loadConfig(adapters) {
|
|
|
16
16
|
|
|
17
17
|
try {
|
|
18
18
|
const { default: config } = await import(`file://${configPath}?t=${Date.now()}`)
|
|
19
|
+
/* v8 ignore next -- dynamic import succeeds only in real Node, not JSDOM */
|
|
19
20
|
return config
|
|
20
21
|
} catch {
|
|
21
22
|
return null
|
package/src/convert.js
CHANGED
|
@@ -47,6 +47,9 @@ export function processIcons(iconSet, color) {
|
|
|
47
47
|
try {
|
|
48
48
|
cleanAndOptimizeIcon(svg, color)
|
|
49
49
|
} catch (err) {
|
|
50
|
+
/* v8 ignore next 6 -- catch body requires an iconify-tools internal parse
|
|
51
|
+
error; the err1 fixture exercises this path but the exception propagates
|
|
52
|
+
at importDirectory level before processIcons is reached */
|
|
50
53
|
console.error(`Error parsing ${name}: ${err.reason}`)
|
|
51
54
|
iconSet.remove(name)
|
|
52
55
|
return
|
|
@@ -116,6 +119,8 @@ export async function convert(folder, options) {
|
|
|
116
119
|
|
|
117
120
|
// Create the target directory if it doesn't exist
|
|
118
121
|
const targetDir = path.resolve(options.target)
|
|
122
|
+
/* v8 ignore next 4 -- bundle() (called above) always creates targetDir first;
|
|
123
|
+
this guard is unreachable in practice but kept as a defensive fallback */
|
|
119
124
|
if (!fs.existsSync(targetDir)) {
|
|
120
125
|
fs.mkdirSync(targetDir, { recursive: true })
|
|
121
126
|
}
|
package/src/doctor.js
CHANGED
|
@@ -240,6 +240,9 @@ function applyPatchHtml(cwd, label) {
|
|
|
240
240
|
* @param {string} cwd
|
|
241
241
|
* @param {string} label
|
|
242
242
|
*/
|
|
243
|
+
/* v8 ignore next 16 -- chart-config check emits 'warn' (not 'fail'); applyCheckFix
|
|
244
|
+
only processes 'fail' statuses, making this handler unreachable via the normal
|
|
245
|
+
fix flow. Kept for potential future use if the check severity changes. */
|
|
243
246
|
function applyPatchChartConfig(cwd, label) {
|
|
244
247
|
const configPath = resolve(cwd, 'rokkit.config.js')
|
|
245
248
|
if (!existsSync(configPath)) return false
|
|
@@ -418,6 +421,8 @@ export async function doctor(opts = {}) {
|
|
|
418
421
|
|
|
419
422
|
const parsed = await loadParsedConfig({ cwd })
|
|
420
423
|
const shapeChecks = validateConfigShape(parsed)
|
|
424
|
+
/* v8 ignore next 8 -- loadConfig uses dynamic file:// import which always fails in
|
|
425
|
+
JSDOM; validateConfigShape(null) returns [] so this branch is unreachable in tests */
|
|
421
426
|
if (shapeChecks.length > 0) {
|
|
422
427
|
console.info('\nConfig shape:')
|
|
423
428
|
for (const c of shapeChecks) {
|
package/src/init.js
CHANGED
|
@@ -408,6 +408,7 @@ const PROMPTS_CONFIG = [
|
|
|
408
408
|
type: (prev) => (prev?.length > 1 ? 'select' : null),
|
|
409
409
|
name: 'defaultTheme',
|
|
410
410
|
message: 'Default theme style',
|
|
411
|
+
/* v8 ignore next 2 -- prompts.inject bypasses choices callback evaluation in tests */
|
|
411
412
|
choices: (prev) =>
|
|
412
413
|
prev.map((t) => ({ title: t.charAt(0).toUpperCase() + t.slice(1), value: t }))
|
|
413
414
|
},
|
|
@@ -547,6 +548,9 @@ export async function init(_opts = {}, adapters = {}) {
|
|
|
547
548
|
|
|
548
549
|
const response = await prompts(PROMPTS_CONFIG)
|
|
549
550
|
|
|
551
|
+
/* v8 ignore next 10 -- prompts mutates PROMPTS_CONFIG[n].type in-place on the
|
|
552
|
+
first call, so the conditional primary/accent/surface prompts always resolve
|
|
553
|
+
to null on subsequent runs; the branch is tested via generateConfig directly */
|
|
550
554
|
if (response.palette === 'custom') {
|
|
551
555
|
response.customColors = {
|
|
552
556
|
primary: response.primary,
|
package/src/upgrade.js
CHANGED
|
@@ -57,10 +57,13 @@ function resolveUpgradeAdapters(adapters) {
|
|
|
57
57
|
exists: adapters.exists ?? ((p) => existsSync(p)),
|
|
58
58
|
fetchVersion:
|
|
59
59
|
adapters.fetchVersion ??
|
|
60
|
+
/* v8 ignore next 8 -- default fetchVersion calls real npm; tests always inject
|
|
61
|
+
fetchVersion so this closure is never executed in the test environment */
|
|
60
62
|
((name) => {
|
|
61
63
|
try {
|
|
62
64
|
return execFileSync('npm', ['view', name, 'version'], { encoding: 'utf-8' }).trim()
|
|
63
65
|
} catch {
|
|
66
|
+
// npm binary absent or network error — treat as unknown version
|
|
64
67
|
return null
|
|
65
68
|
}
|
|
66
69
|
}),
|