@specsafe/cli 0.3.5 ā 0.4.0
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/dist/commands/complete.d.ts.map +1 -1
- package/dist/commands/complete.js +4 -1
- package/dist/commands/complete.js.map +1 -1
- package/dist/commands/done.d.ts +3 -0
- package/dist/commands/done.d.ts.map +1 -0
- package/dist/commands/done.js +237 -0
- package/dist/commands/done.js.map +1 -0
- package/dist/commands/explore.d.ts +3 -0
- package/dist/commands/explore.d.ts.map +1 -0
- package/dist/commands/explore.js +236 -0
- package/dist/commands/explore.js.map +1 -0
- package/dist/commands/new.d.ts.map +1 -1
- package/dist/commands/new.js +312 -27
- package/dist/commands/new.js.map +1 -1
- package/dist/commands/spec.d.ts.map +1 -1
- package/dist/commands/spec.js +257 -25
- package/dist/commands/spec.js.map +1 -1
- package/dist/commands/test-apply.d.ts +3 -0
- package/dist/commands/test-apply.d.ts.map +1 -0
- package/dist/commands/test-apply.js +228 -0
- package/dist/commands/test-apply.js.map +1 -0
- package/dist/commands/test-create.d.ts +3 -0
- package/dist/commands/test-create.d.ts.map +1 -0
- package/dist/commands/{test.js ā test-create.js} +79 -30
- package/dist/commands/test-create.js.map +1 -0
- package/dist/commands/verify.d.ts +3 -0
- package/dist/commands/verify.d.ts.map +1 -0
- package/dist/commands/verify.js +288 -0
- package/dist/commands/verify.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +46 -6
- package/dist/index.js.map +1 -1
- package/dist/rules/registry.js +1 -1
- package/dist/rules/registry.js.map +1 -1
- package/dist/utils/detectTools.js +2 -2
- package/dist/utils/detectTools.js.map +1 -1
- package/dist/utils/generateToolConfig.d.ts +1 -1
- package/dist/utils/generateToolConfig.d.ts.map +1 -1
- package/dist/utils/generateToolConfig.js +990 -207
- package/dist/utils/generateToolConfig.js.map +1 -1
- package/dist/utils/testRunner.d.ts +39 -0
- package/dist/utils/testRunner.d.ts.map +1 -0
- package/dist/utils/testRunner.js +325 -0
- package/dist/utils/testRunner.js.map +1 -0
- package/package.json +3 -3
- package/dist/commands/code.d.ts +0 -3
- package/dist/commands/code.d.ts.map +0 -1
- package/dist/commands/code.js +0 -53
- package/dist/commands/code.js.map +0 -1
- package/dist/commands/test.d.ts +0 -3
- package/dist/commands/test.d.ts.map +0 -1
- package/dist/commands/test.js.map +0 -1
package/dist/commands/new.js
CHANGED
|
@@ -4,12 +4,14 @@ import ora from 'ora';
|
|
|
4
4
|
import { writeFile, mkdir, readdir } from 'fs/promises';
|
|
5
5
|
import { join, basename } from 'path';
|
|
6
6
|
import { Workflow, ProjectTracker } from '@specsafe/core';
|
|
7
|
+
import { input, editor, select } from '@inquirer/prompts';
|
|
7
8
|
export const newCommand = new Command('new')
|
|
8
|
-
.description('Create a new spec')
|
|
9
|
-
.argument('
|
|
9
|
+
.description('Create a new spec with interactive PRD creation')
|
|
10
|
+
.argument('[name]', 'Spec name (kebab-case)')
|
|
10
11
|
.option('-d, --description <desc>', 'Spec description')
|
|
11
12
|
.option('-a, --author <author>', 'Author name', 'developer')
|
|
12
13
|
.option('-n, --dry-run', 'Preview changes without writing files')
|
|
14
|
+
.option('--skip-interactive', 'Skip interactive prompts and use defaults')
|
|
13
15
|
.action(async (name, options) => {
|
|
14
16
|
const spinner = ora('Creating new spec...').start();
|
|
15
17
|
try {
|
|
@@ -45,27 +47,170 @@ export const newCommand = new Command('new')
|
|
|
45
47
|
// Directory doesn't exist yet, that's fine
|
|
46
48
|
}
|
|
47
49
|
const id = `SPEC-${date}-${String(maxSuffix + 1).padStart(3, '0')}`;
|
|
50
|
+
// Interactive mode or defaults
|
|
51
|
+
spinner.stop();
|
|
52
|
+
// Get feature name if not provided
|
|
53
|
+
let featureName = name;
|
|
54
|
+
if (!featureName && !options.skipInteractive) {
|
|
55
|
+
featureName = await input({
|
|
56
|
+
message: 'Feature name (kebab-case):',
|
|
57
|
+
validate: (value) => value.length > 0 || 'Feature name is required'
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
else if (!featureName) {
|
|
61
|
+
featureName = 'untitled-feature';
|
|
62
|
+
}
|
|
63
|
+
// Interactive PRD + BRD creation
|
|
64
|
+
let problemStatement = '';
|
|
65
|
+
let userStories = '';
|
|
66
|
+
let acceptanceCriteria = '';
|
|
67
|
+
let technicalConsiderations = '';
|
|
68
|
+
let businessJustification = '';
|
|
69
|
+
let successMetrics = '';
|
|
70
|
+
let stakeholders = '';
|
|
71
|
+
let timeline = '';
|
|
72
|
+
let priority = 'P1';
|
|
73
|
+
if (!options.skipInteractive && !options.dryRun) {
|
|
74
|
+
console.log(chalk.blue('\nš Let\'s create a Product Requirements Document (PRD)\n'));
|
|
75
|
+
problemStatement = await editor({
|
|
76
|
+
message: 'Problem Statement (what problem does this solve?):',
|
|
77
|
+
default: '<!-- Describe the problem this feature solves -->'
|
|
78
|
+
});
|
|
79
|
+
userStories = await editor({
|
|
80
|
+
message: 'User Stories (who benefits and how?):',
|
|
81
|
+
default: `As a [type of user]
|
|
82
|
+
I want [some goal]
|
|
83
|
+
So that [some reason]
|
|
84
|
+
|
|
85
|
+
<!-- Add more user stories as needed -->`
|
|
86
|
+
});
|
|
87
|
+
acceptanceCriteria = await editor({
|
|
88
|
+
message: 'Acceptance Criteria (how do we know it\'s done?):',
|
|
89
|
+
default: `- [ ] Criterion 1
|
|
90
|
+
- [ ] Criterion 2
|
|
91
|
+
- [ ] Criterion 3`
|
|
92
|
+
});
|
|
93
|
+
const technicalConsiderations = await editor({
|
|
94
|
+
message: 'Technical Requirements (dependencies, constraints, stack):',
|
|
95
|
+
default: `<!-- Technical constraints, dependencies, integrations needed -->
|
|
96
|
+
- Required APIs:
|
|
97
|
+
- Data storage:
|
|
98
|
+
- Security requirements:`
|
|
99
|
+
});
|
|
100
|
+
console.log(chalk.blue('\nš¼ Now let\'s create a Business Requirements Document (BRD)\n'));
|
|
101
|
+
businessJustification = await editor({
|
|
102
|
+
message: 'Business Justification (why invest in this?):',
|
|
103
|
+
default: `<!-- Why should we build this? Business value, market need, strategic alignment -->`
|
|
104
|
+
});
|
|
105
|
+
successMetrics = await editor({
|
|
106
|
+
message: 'Success Metrics (how do we measure success?):',
|
|
107
|
+
default: `- Metric 1: [e.g., "Reduce processing time by 50%"]
|
|
108
|
+
- Metric 2: [e.g., "Increase user engagement by 20%"]
|
|
109
|
+
- Metric 3: [e.g., "Zero critical bugs in production"]`
|
|
110
|
+
});
|
|
111
|
+
stakeholders = await editor({
|
|
112
|
+
message: 'Stakeholders (who cares about this?):',
|
|
113
|
+
default: `| Role | Name/Team | Responsibility |
|
|
114
|
+
|------|-----------|----------------|
|
|
115
|
+
| Product Owner | | Decision maker |
|
|
116
|
+
| Engineering Lead | | Technical oversight |
|
|
117
|
+
| QA Lead | | Quality assurance |`
|
|
118
|
+
});
|
|
119
|
+
timeline = await editor({
|
|
120
|
+
message: 'Timeline (key milestones):',
|
|
121
|
+
default: `| Phase | Milestone | Target Date |
|
|
122
|
+
|-------|-----------|-------------|
|
|
123
|
+
| 1 | Requirements final | |
|
|
124
|
+
| 2 | Development complete | |
|
|
125
|
+
| 3 | QA complete | |
|
|
126
|
+
| 4 | Release | |`
|
|
127
|
+
});
|
|
128
|
+
priority = await select({
|
|
129
|
+
message: 'Priority:',
|
|
130
|
+
choices: [
|
|
131
|
+
{ name: 'P0 - Critical (blocks release)', value: 'P0' },
|
|
132
|
+
{ name: 'P1 - High (should have)', value: 'P1' },
|
|
133
|
+
{ name: 'P2 - Medium (nice to have)', value: 'P2' },
|
|
134
|
+
],
|
|
135
|
+
default: 'P1'
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
spinner.start('Creating spec files...');
|
|
48
139
|
// Create spec
|
|
49
|
-
const spec = workflow.createSpec(id,
|
|
50
|
-
// Create spec content
|
|
51
|
-
const specContent = `# ${
|
|
140
|
+
const spec = workflow.createSpec(id, featureName, options.description || `Spec for ${featureName}`, options.author, basename(process.cwd()));
|
|
141
|
+
// Create PRD + BRD-enhanced spec content
|
|
142
|
+
const specContent = `# ${featureName} Specification
|
|
52
143
|
|
|
53
|
-
**ID:** ${id}
|
|
54
|
-
**Status:** SPEC
|
|
55
|
-
**Created:** ${new Date().toISOString().split('T')[0]}
|
|
144
|
+
**ID:** ${id}
|
|
145
|
+
**Status:** SPEC
|
|
146
|
+
**Created:** ${new Date().toISOString().split('T')[0]}
|
|
56
147
|
**Author:** ${options.author}
|
|
148
|
+
**Priority:** ${priority}
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## PRD (Product Requirements Document)
|
|
153
|
+
|
|
154
|
+
### Problem Statement
|
|
155
|
+
${problemStatement || '<!-- Describe the problem this feature solves -->'}
|
|
156
|
+
|
|
157
|
+
### User Stories
|
|
158
|
+
${userStories || `As a [type of user]
|
|
159
|
+
I want [some goal]
|
|
160
|
+
So that [some reason]
|
|
161
|
+
|
|
162
|
+
<!-- Add more user stories as needed -->`}
|
|
163
|
+
|
|
164
|
+
### Acceptance Criteria
|
|
165
|
+
${acceptanceCriteria || `- [ ] Criterion 1
|
|
166
|
+
- [ ] Criterion 2
|
|
167
|
+
- [ ] Criterion 3`}
|
|
168
|
+
|
|
169
|
+
### Technical Requirements
|
|
170
|
+
${technicalConsiderations || `<!-- Technical constraints, dependencies, integrations needed -->
|
|
171
|
+
- Required APIs:
|
|
172
|
+
- Data storage:
|
|
173
|
+
- Security requirements:`}
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## BRD (Business Requirements Document)
|
|
178
|
+
|
|
179
|
+
### Business Justification
|
|
180
|
+
${businessJustification || '<!-- Why should we build this? Business value, market need, strategic alignment -->'}
|
|
181
|
+
|
|
182
|
+
### Success Metrics
|
|
183
|
+
${successMetrics || `- Metric 1: [e.g., "Reduce processing time by 50%"]
|
|
184
|
+
- Metric 2: [e.g., "Increase user engagement by 20%"]
|
|
185
|
+
- Metric 3: [e.g., "Zero critical bugs in production"]`}
|
|
186
|
+
|
|
187
|
+
### Stakeholders
|
|
188
|
+
${stakeholders || `| Role | Name/Team | Responsibility |
|
|
189
|
+
|------|-----------|----------------|
|
|
190
|
+
| Product Owner | | Decision maker |
|
|
191
|
+
| Engineering Lead | | Technical oversight |
|
|
192
|
+
| QA Lead | | Quality assurance |`}
|
|
193
|
+
|
|
194
|
+
### Timeline
|
|
195
|
+
${timeline || `| Phase | Milestone | Target Date |
|
|
196
|
+
|-------|-----------|-------------|
|
|
197
|
+
| 1 | Requirements final | |
|
|
198
|
+
| 2 | Development complete | |
|
|
199
|
+
| 3 | QA complete | |
|
|
200
|
+
| 4 | Release | |`}
|
|
57
201
|
|
|
58
|
-
|
|
59
|
-
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## Scope (WHAT)
|
|
60
205
|
|
|
61
|
-
## 2. Scope (WHAT)
|
|
62
206
|
### In Scope
|
|
63
|
-
-
|
|
207
|
+
-
|
|
64
208
|
|
|
65
209
|
### Out of Scope
|
|
66
|
-
-
|
|
210
|
+
-
|
|
211
|
+
|
|
212
|
+
## Requirements
|
|
67
213
|
|
|
68
|
-
## 3. Requirements
|
|
69
214
|
### Functional Requirements
|
|
70
215
|
| ID | Requirement | Priority | Acceptance Criteria |
|
|
71
216
|
|----|-------------|----------|---------------------|
|
|
@@ -76,32 +221,53 @@ export const newCommand = new Command('new')
|
|
|
76
221
|
|----|-------------|--------|
|
|
77
222
|
| NFR-1 | | |
|
|
78
223
|
|
|
79
|
-
##
|
|
224
|
+
## Scenarios (Given/When/Then)
|
|
225
|
+
|
|
226
|
+
### Scenario 1: [Name]
|
|
227
|
+
- **Given** [initial context]
|
|
228
|
+
- **When** [action/event occurs]
|
|
229
|
+
- **Then** [expected outcome]
|
|
230
|
+
|
|
231
|
+
## Technical Approach (HOW)
|
|
232
|
+
|
|
233
|
+
### Tech Stack
|
|
234
|
+
<!-- Refer to .specsafe/tech-stack.md -->
|
|
235
|
+
|
|
236
|
+
### Architecture
|
|
237
|
+
|
|
238
|
+
### Dependencies
|
|
239
|
+
|
|
240
|
+
## Test Strategy (TDD)
|
|
80
241
|
|
|
81
|
-
## 5. Test Strategy (TDD)
|
|
82
242
|
### Unit Tests
|
|
83
|
-
-
|
|
243
|
+
-
|
|
84
244
|
|
|
85
245
|
### Integration Tests
|
|
86
|
-
-
|
|
246
|
+
-
|
|
247
|
+
|
|
248
|
+
## Implementation Plan
|
|
87
249
|
|
|
88
|
-
## 6. Implementation Plan
|
|
89
250
|
| Phase | Task | Est. Time | Dependencies |
|
|
90
251
|
|-------|------|-----------|--------------|
|
|
91
252
|
| 1 | | | |
|
|
92
253
|
|
|
93
|
-
##
|
|
254
|
+
## Success Criteria
|
|
94
255
|
- [ ] All P0 requirements met
|
|
95
256
|
- [ ] All tests passing
|
|
96
257
|
- [ ] Documentation complete
|
|
97
258
|
|
|
98
|
-
##
|
|
259
|
+
## Risks & Mitigations
|
|
260
|
+
|
|
99
261
|
| Risk | Probability | Impact | Mitigation |
|
|
100
262
|
|------|-------------|--------|------------|
|
|
101
263
|
| | | | |
|
|
102
264
|
|
|
103
|
-
##
|
|
104
|
-
-
|
|
265
|
+
## Notes & References
|
|
266
|
+
-
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
*Generated by SpecSafe v0.4.0 - OpenSpec Workflow*
|
|
105
271
|
`;
|
|
106
272
|
const specPath = join('specs/active', `${id}.md`);
|
|
107
273
|
// Handle dry-run mode
|
|
@@ -109,23 +275,138 @@ export const newCommand = new Command('new')
|
|
|
109
275
|
spinner.stop();
|
|
110
276
|
console.log(chalk.cyan('[DRY RUN] Would create the following files:\n'));
|
|
111
277
|
console.log(chalk.cyan(` ${specPath}`));
|
|
112
|
-
console.log(chalk.cyan(`\nContent preview (first
|
|
113
|
-
const previewLines = specContent.split('\n').slice(0,
|
|
278
|
+
console.log(chalk.cyan(`\nContent preview (first 30 lines):\n`));
|
|
279
|
+
const previewLines = specContent.split('\n').slice(0, 30).join('\n');
|
|
114
280
|
console.log(chalk.gray(previewLines));
|
|
115
|
-
if (specContent.split('\n').length >
|
|
281
|
+
if (specContent.split('\n').length > 30) {
|
|
116
282
|
console.log(chalk.gray(' ... (truncated)'));
|
|
117
283
|
}
|
|
118
284
|
console.log(chalk.cyan(`\nWould update PROJECT_STATE.md with spec: ${id}`));
|
|
119
285
|
process.exit(0);
|
|
120
286
|
}
|
|
287
|
+
// Create .specsafe directory and supporting files
|
|
288
|
+
await mkdir('.specsafe', { recursive: true });
|
|
289
|
+
// Create tech-stack.md if it doesn't exist
|
|
290
|
+
const techStackPath = join('.specsafe', 'tech-stack.md');
|
|
291
|
+
const techStackContent = `# Tech Stack
|
|
292
|
+
|
|
293
|
+
**Project:** ${basename(process.cwd())}
|
|
294
|
+
**Last Updated:** ${new Date().toISOString().split('T')[0]}
|
|
295
|
+
|
|
296
|
+
## Core Technologies
|
|
297
|
+
|
|
298
|
+
| Category | Technology | Version | Purpose |
|
|
299
|
+
|----------|------------|---------|---------|
|
|
300
|
+
| Language | TypeScript | ^5.0 | Primary language |
|
|
301
|
+
| Testing | Vitest | ^1.0 | Unit testing |
|
|
302
|
+
| Linting | ESLint | ^8.0 | Code quality |
|
|
303
|
+
|
|
304
|
+
## Project Structure
|
|
305
|
+
|
|
306
|
+
\`\`\`
|
|
307
|
+
src/
|
|
308
|
+
āāā components/ # UI components
|
|
309
|
+
āāā utils/ # Utility functions
|
|
310
|
+
āāā index.ts # Entry point
|
|
311
|
+
|
|
312
|
+
tests/
|
|
313
|
+
āāā *.test.ts # Test files
|
|
314
|
+
|
|
315
|
+
specs/
|
|
316
|
+
āāā active/ # Active specs
|
|
317
|
+
āāā completed/ # Completed specs
|
|
318
|
+
āāā archive/ # Archived specs
|
|
319
|
+
\`\`\`
|
|
320
|
+
|
|
321
|
+
## Dependencies
|
|
322
|
+
|
|
323
|
+
### Production
|
|
324
|
+
- None yet
|
|
325
|
+
|
|
326
|
+
### Development
|
|
327
|
+
- @specsafe/core
|
|
328
|
+
- @specsafe/cli
|
|
329
|
+
- @specsafe/test-gen
|
|
330
|
+
|
|
331
|
+
## Guidelines
|
|
332
|
+
|
|
333
|
+
1. Follow existing code patterns
|
|
334
|
+
2. Write tests before implementation
|
|
335
|
+
3. Update specs as requirements change
|
|
336
|
+
4. Use TypeScript strict mode
|
|
337
|
+
|
|
338
|
+
---
|
|
339
|
+
|
|
340
|
+
*Auto-generated by specsafe new*
|
|
341
|
+
`;
|
|
342
|
+
// Create rules.md if it doesn't exist
|
|
343
|
+
const rulesContent = `# Project Rules
|
|
344
|
+
|
|
345
|
+
**Project:** ${basename(process.cwd())}
|
|
346
|
+
**Last Updated:** ${new Date().toISOString().split('T')[0]}
|
|
347
|
+
|
|
348
|
+
## Coding Standards
|
|
349
|
+
|
|
350
|
+
1. **TypeScript First**: All code must be TypeScript with strict mode enabled
|
|
351
|
+
2. **Test-Driven**: Write tests before implementation
|
|
352
|
+
3. **Documentation**: Document all public APIs
|
|
353
|
+
4. **Error Handling**: Always handle errors gracefully
|
|
354
|
+
|
|
355
|
+
## SpecSafe Workflow Rules
|
|
356
|
+
|
|
357
|
+
1. **SPEC Stage**: Requirements must be clear and testable
|
|
358
|
+
2. **TEST Stage**: All tests must be written before code
|
|
359
|
+
3. **CODE Stage**: Implementation follows tests exactly
|
|
360
|
+
4. **QA Stage**: All tests must pass before completion
|
|
361
|
+
5. **COMPLETE Stage**: Archive spec after completion
|
|
362
|
+
|
|
363
|
+
## AI Assistant Guidelines
|
|
364
|
+
|
|
365
|
+
When assisting with this project:
|
|
366
|
+
|
|
367
|
+
1. Always read the relevant spec before making changes
|
|
368
|
+
2. Follow the acceptance criteria in the PRD
|
|
369
|
+
3. Update spec status as work progresses
|
|
370
|
+
4. Suggest running \`specsafe verify\` after changes
|
|
371
|
+
5. Respect the out-of-scope section
|
|
372
|
+
|
|
373
|
+
## Communication Style
|
|
374
|
+
|
|
375
|
+
- Be concise but thorough
|
|
376
|
+
- Provide code examples when helpful
|
|
377
|
+
- Explain the "why" behind suggestions
|
|
378
|
+
- Flag any spec violations immediately
|
|
379
|
+
|
|
380
|
+
---
|
|
381
|
+
|
|
382
|
+
*Auto-generated by specsafe new*
|
|
383
|
+
`;
|
|
121
384
|
// Create spec file
|
|
122
385
|
await mkdir('specs/active', { recursive: true });
|
|
123
386
|
await writeFile(specPath, specContent);
|
|
387
|
+
// Create supporting files (only if they don't exist)
|
|
388
|
+
try {
|
|
389
|
+
await writeFile(techStackPath, techStackContent, { flag: 'wx' });
|
|
390
|
+
}
|
|
391
|
+
catch {
|
|
392
|
+
// File already exists, skip
|
|
393
|
+
}
|
|
394
|
+
try {
|
|
395
|
+
await writeFile(join('.specsafe', 'rules.md'), rulesContent, { flag: 'wx' });
|
|
396
|
+
}
|
|
397
|
+
catch {
|
|
398
|
+
// File already exists, skip
|
|
399
|
+
}
|
|
124
400
|
// Update project state
|
|
125
401
|
await tracker.addSpec(spec);
|
|
126
402
|
spinner.succeed(chalk.green(`Created spec: ${id}`));
|
|
127
403
|
console.log(chalk.blue(` Location: ${specPath}`));
|
|
128
|
-
console.log(chalk.
|
|
404
|
+
console.log(chalk.blue(` Tech Stack: .specsafe/tech-stack.md`));
|
|
405
|
+
console.log(chalk.blue(` Rules: .specsafe/rules.md`));
|
|
406
|
+
console.log(chalk.gray('\n Next steps:'));
|
|
407
|
+
console.log(chalk.gray(` 1. Edit ${specPath} to refine requirements`));
|
|
408
|
+
console.log(chalk.gray(` 2. Run: specsafe spec ${id}`));
|
|
409
|
+
console.log(chalk.gray(` 3. Or explore: specsafe explore`));
|
|
129
410
|
}
|
|
130
411
|
catch (error) {
|
|
131
412
|
spinner.fail(chalk.red(`Failed to create spec: ${error.message}`));
|
|
@@ -135,6 +416,10 @@ export const newCommand = new Command('new')
|
|
|
135
416
|
else if (error.message.includes('already exists')) {
|
|
136
417
|
console.log(chalk.gray('š” Tip: Use a different spec name or delete the existing spec first.'));
|
|
137
418
|
}
|
|
419
|
+
else if (error.message.includes('User force closed')) {
|
|
420
|
+
console.log(chalk.gray('š” Tip: Creation was cancelled.'));
|
|
421
|
+
process.exit(0);
|
|
422
|
+
}
|
|
138
423
|
process.exit(1);
|
|
139
424
|
}
|
|
140
425
|
});
|
package/dist/commands/new.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../../src/commands/spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../../src/commands/spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,WAAW,SA2NpB,CAAC"}
|