@newlogic-digital/cli 1.5.0-next.6 → 1.5.0-next.7

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/index.mjs CHANGED
@@ -70,7 +70,6 @@ function printUnknownCommand(command) {
70
70
  console.log(lines.join('\n'))
71
71
  }
72
72
 
73
-
74
73
  const rawArgs = process.argv.slice(2)
75
74
  const command = rawArgs[0]
76
75
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@newlogic-digital/cli",
3
- "version": "1.5.0-next.6",
3
+ "version": "1.5.0-next.7",
4
4
  "main": "index.mjs",
5
5
  "bin": {
6
6
  "newlogic-cli": "index.mjs",
@@ -1,3 +1,4 @@
1
+ import { spinner as createSpinner } from '@clack/prompts'
1
2
  import { styleText } from 'node:util'
2
3
  import { createBlocksService } from './service.mjs'
3
4
 
@@ -39,6 +40,7 @@ function formatErrorMessage(message) {
39
40
  function createSilentLogger() {
40
41
  return {
41
42
  info() {},
43
+ progress() {},
42
44
  warn() {},
43
45
  }
44
46
  }
@@ -100,14 +102,45 @@ function formatInfoMessage(message) {
100
102
  }
101
103
 
102
104
  function createCliLogger() {
105
+ const progress = createSpinner()
106
+ let hasActiveProgress = false
107
+
108
+ function clearProgress() {
109
+ if (!hasActiveProgress) {
110
+ return
111
+ }
112
+
113
+ progress.clear()
114
+ hasActiveProgress = false
115
+ }
116
+
103
117
  return {
118
+ progress(message) {
119
+ if (!message) {
120
+ clearProgress()
121
+ return
122
+ }
123
+
124
+ if (!hasActiveProgress) {
125
+ progress.start(message)
126
+ hasActiveProgress = true
127
+ return
128
+ }
129
+
130
+ progress.message(message)
131
+ },
132
+
104
133
  info(message) {
134
+ clearProgress()
105
135
  console.log(formatInfoMessage(message))
106
136
  },
107
137
 
108
138
  warn(message) {
139
+ clearProgress()
109
140
  console.log(`${label('yellow', 'warn')} ${styleText('yellow', highlightTokens(message))}`)
110
141
  },
142
+
143
+ clearProgress,
111
144
  }
112
145
  }
113
146
 
@@ -148,6 +181,8 @@ function printBlocksUsage() {
148
181
  }
149
182
 
150
183
  export default async function blocks(action, names = [], options = {}) {
184
+ let activeLogger
185
+
151
186
  if (!action || action === 'help' || action === '--help') {
152
187
  printBlocksUsage()
153
188
  return
@@ -167,7 +202,8 @@ export default async function blocks(action, names = [], options = {}) {
167
202
  throw new Error('Missing block name for "newlogic blocks add"')
168
203
  }
169
204
 
170
- const service = createBlocksService({ logger: createCliLogger() })
205
+ activeLogger = createCliLogger()
206
+ const service = createBlocksService({ logger: activeLogger })
171
207
  await service.addBlocks(names, {
172
208
  target: options.target,
173
209
  })
@@ -179,13 +215,15 @@ export default async function blocks(action, names = [], options = {}) {
179
215
  throw new Error('Missing block name for "newlogic blocks remove"')
180
216
  }
181
217
 
182
- const service = createBlocksService({ logger: createCliLogger() })
218
+ activeLogger = createCliLogger()
219
+ const service = createBlocksService({ logger: activeLogger })
183
220
  await service.removeBlocks(names)
184
221
  return
185
222
  }
186
223
 
187
224
  if (action === 'update') {
188
- const service = createBlocksService({ logger: createCliLogger() })
225
+ activeLogger = createCliLogger()
226
+ const service = createBlocksService({ logger: activeLogger })
189
227
  await service.updateBlocks()
190
228
  return
191
229
  }
@@ -193,6 +231,7 @@ export default async function blocks(action, names = [], options = {}) {
193
231
  throw new Error(`Unknown blocks action "${action}"`)
194
232
  }
195
233
  catch (error) {
234
+ activeLogger?.clearProgress?.()
196
235
  console.log(`${label('red', 'error')} ${formatErrorMessage(error.message)}`)
197
236
  process.exit(1)
198
237
  }
@@ -13,6 +13,7 @@ const BLOCK_TARGETS = new Set(['ui', 'cms'])
13
13
  function defaultLogger() {
14
14
  return {
15
15
  info: message => console.log(message),
16
+ progress() {},
16
17
  warn: message => console.warn(message),
17
18
  }
18
19
  }
@@ -264,7 +265,7 @@ function saveProjectConfig(configPath, config, blocks) {
264
265
  blocks: Object.fromEntries(
265
266
  blocks.map(block => [
266
267
  block.name,
267
- { ...(block.config ?? {}) },
268
+ { ...block.config },
268
269
  ]),
269
270
  ),
270
271
  }
@@ -396,6 +397,8 @@ export function createBlocksService({
396
397
  assertBlockName(normalizedName)
397
398
 
398
399
  if (!metaCache.has(normalizedName)) {
400
+ validatorPromise ||= createMetaValidator(repository)
401
+ logger.progress?.(`Downloading block metadata: ${normalizedName}`)
399
402
  const meta = await repository.getMeta(normalizedName)
400
403
  await validateMeta(meta, `block "${normalizedName}"`)
401
404
  metaCache.set(normalizedName, meta)
@@ -546,6 +549,7 @@ export function createBlocksService({
546
549
  }
547
550
  }
548
551
 
552
+ logger.progress?.(`Downloading ${relativeTargetPath}`)
549
553
  const contents = await repository.getFileBuffer(blockName, rule.source)
550
554
 
551
555
  fse.ensureDirSync(path.dirname(targetPath))