andrud 1.0.1 → 1.0.2
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/README.md +295 -306
- package/dist/__tests__/context.test.d.ts +5 -0
- package/dist/__tests__/context.test.d.ts.map +1 -0
- package/dist/__tests__/context.test.js +86 -0
- package/dist/__tests__/context.test.js.map +1 -0
- package/dist/__tests__/generator.test.d.ts +5 -0
- package/dist/__tests__/generator.test.d.ts.map +1 -0
- package/dist/__tests__/generator.test.js +83 -0
- package/dist/__tests__/generator.test.js.map +1 -0
- package/dist/__tests__/validation.test.d.ts +5 -0
- package/dist/__tests__/validation.test.d.ts.map +1 -0
- package/dist/__tests__/validation.test.js +81 -0
- package/dist/__tests__/validation.test.js.map +1 -0
- package/dist/cli/commands/create.d.ts +10 -0
- package/dist/cli/commands/create.d.ts.map +1 -0
- package/dist/cli/commands/create.js +203 -0
- package/dist/cli/commands/create.js.map +1 -0
- package/dist/cli/commands/info.d.ts +13 -0
- package/dist/cli/commands/info.d.ts.map +1 -0
- package/dist/cli/commands/info.js +153 -0
- package/dist/cli/commands/info.js.map +1 -0
- package/dist/cli/commands/init.d.ts +15 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +141 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/list.d.ts +18 -0
- package/dist/cli/commands/list.d.ts.map +1 -0
- package/dist/cli/commands/list.js +122 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/dist/cli/commands/new.d.ts +22 -0
- package/dist/cli/commands/new.d.ts.map +1 -0
- package/dist/cli/commands/new.js +245 -0
- package/dist/cli/commands/new.js.map +1 -0
- package/dist/cli/index.d.ts +5 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +99 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/config.d.ts +89 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +151 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/context.d.ts +47 -0
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/context.js +175 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/generator.d.ts +44 -0
- package/dist/core/generator.d.ts.map +1 -0
- package/{src/core/generator.ts → dist/core/generator.js} +394 -484
- package/dist/core/generator.js.map +1 -0
- package/dist/core/types.d.ts +125 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +22 -0
- package/dist/core/types.js.map +1 -0
- package/dist/templates/index.d.ts +36 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/dist/templates/index.js +141 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/ui/colors.d.ts +40 -0
- package/dist/ui/colors.d.ts.map +1 -0
- package/dist/ui/colors.js +117 -0
- package/dist/ui/colors.js.map +1 -0
- package/dist/ui/output.d.ts +69 -0
- package/dist/ui/output.d.ts.map +1 -0
- package/dist/ui/output.js +199 -0
- package/dist/ui/output.js.map +1 -0
- package/dist/ui/prompts.d.ts +20 -0
- package/dist/ui/prompts.d.ts.map +1 -0
- package/dist/ui/prompts.js +118 -0
- package/dist/ui/prompts.js.map +1 -0
- package/dist/ui/spinners.d.ts +30 -0
- package/dist/ui/spinners.d.ts.map +1 -0
- package/dist/ui/spinners.js +74 -0
- package/dist/ui/spinners.js.map +1 -0
- package/dist/ui/types.d.ts +35 -0
- package/dist/ui/types.d.ts.map +1 -0
- package/dist/ui/types.js +5 -0
- package/dist/ui/types.js.map +1 -0
- package/dist/utils/filesystem.d.ts +38 -0
- package/dist/utils/filesystem.d.ts.map +1 -0
- package/dist/utils/filesystem.js +181 -0
- package/dist/utils/filesystem.js.map +1 -0
- package/dist/utils/logger.d.ts +27 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +52 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/object.d.ts +140 -0
- package/dist/utils/object.d.ts.map +1 -0
- package/dist/utils/object.js +385 -0
- package/dist/utils/object.js.map +1 -0
- package/dist/utils/validation.d.ts +35 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +270 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +10 -21
- package/CHANGELOG.md +0 -70
- package/CONTRIBUTING.md +0 -132
- package/sc.png +0 -0
- package/src/__tests__/context.test.ts +0 -133
- package/src/__tests__/generator.test.ts +0 -107
- package/src/__tests__/validation.test.ts +0 -105
- package/src/cli/commands/create.ts +0 -252
- package/src/cli/commands/info.ts +0 -178
- package/src/cli/commands/init.ts +0 -186
- package/src/cli/commands/list.ts +0 -156
- package/src/cli/commands/new.ts +0 -316
- package/src/cli/index.ts +0 -116
- package/src/core/config.ts +0 -172
- package/src/core/context.ts +0 -212
- package/src/core/types.ts +0 -184
- package/src/templates/index.ts +0 -162
- package/src/types/gradient-string.d.ts +0 -25
- package/src/ui/colors.ts +0 -139
- package/src/ui/output.ts +0 -230
- package/src/ui/prompts.ts +0 -170
- package/src/ui/spinners.ts +0 -95
- package/src/ui/types.ts +0 -41
- package/src/utils/filesystem.ts +0 -222
- package/src/utils/logger.ts +0 -67
- package/src/utils/object.ts +0 -456
- package/src/utils/validation.ts +0 -345
- package/tsconfig.json +0 -25
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* New project creation command with interactive prompts
|
|
3
|
+
*/
|
|
4
|
+
import { select, text, multiselect, isCancel, cancel } from '@clack/prompts';
|
|
5
|
+
import { printWelcome, printSuccess, printError, printSection, printKeyValue, printGoodbye, printSteps } from '../../ui/output.js';
|
|
6
|
+
import { validateAppName, validatePackageStructure, validateDirectoryPath } from '../../utils/validation.js';
|
|
7
|
+
import { generateProject } from '../../core/generator.js';
|
|
8
|
+
import { buildDefaultProjectContext, buildTemplateContext } from '../../core/context.js';
|
|
9
|
+
import { exists } from '../../utils/filesystem.js';
|
|
10
|
+
import { getTemplateMetadata, getAllTemplates } from '../../templates/index.js';
|
|
11
|
+
import pc from 'picocolors';
|
|
12
|
+
/**
|
|
13
|
+
* Create a new Android project
|
|
14
|
+
*/
|
|
15
|
+
export async function createNewCommand(name, options = {}) {
|
|
16
|
+
try {
|
|
17
|
+
// Print welcome banner
|
|
18
|
+
printWelcome();
|
|
19
|
+
// Get all available templates
|
|
20
|
+
const templates = getAllTemplates();
|
|
21
|
+
// Step 1: Select template
|
|
22
|
+
let selectedTemplate;
|
|
23
|
+
if (options.template) {
|
|
24
|
+
const meta = getTemplateMetadata(options.template);
|
|
25
|
+
if (!meta) {
|
|
26
|
+
printError(`Unknown template: ${options.template}`);
|
|
27
|
+
console.log('Available templates:');
|
|
28
|
+
templates.forEach(t => console.log(` - ${t.id}`));
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
selectedTemplate = options.template;
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
const templateOptions = templates.map(t => ({
|
|
35
|
+
label: `${t.name}`,
|
|
36
|
+
value: t.id,
|
|
37
|
+
hint: t.keywords.slice(0, 2).join(', ')
|
|
38
|
+
}));
|
|
39
|
+
const templateResult = await select({
|
|
40
|
+
message: '? Select a project template',
|
|
41
|
+
options: templateOptions
|
|
42
|
+
});
|
|
43
|
+
if (isCancel(templateResult)) {
|
|
44
|
+
cancel();
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
selectedTemplate = templateResult;
|
|
48
|
+
}
|
|
49
|
+
printSection(`Template: ${selectedTemplate}`);
|
|
50
|
+
// Step 2: Get app name
|
|
51
|
+
let appName;
|
|
52
|
+
if (name) {
|
|
53
|
+
const validation = validateAppName(name);
|
|
54
|
+
if (!validation.valid) {
|
|
55
|
+
printError('Invalid app name', validation.errors.join(', '));
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
appName = validation.normalized ?? name;
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
const nameResult = await text({
|
|
62
|
+
message: '? What is the app name?',
|
|
63
|
+
placeholder: 'MyAwesomeApp',
|
|
64
|
+
defaultValue: 'MyAwesomeApp',
|
|
65
|
+
validate: (value) => {
|
|
66
|
+
const result = validateAppName(value);
|
|
67
|
+
if (!result.valid) {
|
|
68
|
+
return result.errors[0];
|
|
69
|
+
}
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
if (isCancel(nameResult)) {
|
|
74
|
+
cancel();
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const validation = validateAppName(nameResult);
|
|
78
|
+
if (!validation.valid) {
|
|
79
|
+
printError('Invalid app name', validation.errors.join(', '));
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
appName = validation.normalized ?? nameResult;
|
|
83
|
+
}
|
|
84
|
+
// Step 3: Get package name
|
|
85
|
+
let packageName;
|
|
86
|
+
if (options.packageName) {
|
|
87
|
+
const validation = validatePackageStructure(options.packageName);
|
|
88
|
+
if (!validation.valid) {
|
|
89
|
+
printError('Invalid package name', validation.errors.join(', '));
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
packageName = options.packageName;
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
// Generate default package name from app name
|
|
96
|
+
const defaultPackage = `com.example.${appName.toLowerCase().replace(/[^a-z0-9]/g, '')}`;
|
|
97
|
+
const packageResult = await text({
|
|
98
|
+
message: '? What is the package name?',
|
|
99
|
+
placeholder: 'com.example.myapp',
|
|
100
|
+
defaultValue: defaultPackage,
|
|
101
|
+
validate: (value) => {
|
|
102
|
+
const result = validatePackageStructure(value);
|
|
103
|
+
if (!result.valid) {
|
|
104
|
+
return result.errors[0];
|
|
105
|
+
}
|
|
106
|
+
return undefined;
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
if (isCancel(packageResult)) {
|
|
110
|
+
cancel();
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const validation = validatePackageStructure(packageResult);
|
|
114
|
+
if (!validation.valid) {
|
|
115
|
+
printError('Invalid package name', validation.errors.join(', '));
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
packageName = packageResult;
|
|
119
|
+
}
|
|
120
|
+
// Step 4: Get project directory
|
|
121
|
+
let projectDirectory;
|
|
122
|
+
if (options.directory) {
|
|
123
|
+
const validation = validateDirectoryPath(options.directory);
|
|
124
|
+
if (!validation.valid) {
|
|
125
|
+
printError('Invalid directory', validation.errors.join(', '));
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
projectDirectory = validation.normalized ?? options.directory;
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
const defaultDir = `./${appName.toLowerCase().replace(/[^a-z0-9]/g, '-')}`;
|
|
132
|
+
const dirResult = await text({
|
|
133
|
+
message: '? In which directory should the project be created?',
|
|
134
|
+
placeholder: defaultDir,
|
|
135
|
+
defaultValue: defaultDir,
|
|
136
|
+
validate: (value) => {
|
|
137
|
+
const result = validateDirectoryPath(value);
|
|
138
|
+
if (!result.valid) {
|
|
139
|
+
return result.errors[0];
|
|
140
|
+
}
|
|
141
|
+
return undefined;
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
if (isCancel(dirResult)) {
|
|
145
|
+
cancel();
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
const validation = validateDirectoryPath(dirResult);
|
|
149
|
+
if (!validation.valid) {
|
|
150
|
+
printError('Invalid directory', validation.errors.join(', '));
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
projectDirectory = validation.normalized ?? dirResult;
|
|
154
|
+
}
|
|
155
|
+
// Step 5: Optional features
|
|
156
|
+
const featureOptions = [
|
|
157
|
+
{ label: 'Git repository', value: 'git', hint: 'Initialize with git' },
|
|
158
|
+
{ label: 'README.md', value: 'readme', hint: 'Generate readme' },
|
|
159
|
+
{ label: 'AndroidX libraries', value: 'androidX', hint: 'Use AndroidX (recommended)', selected: true },
|
|
160
|
+
{ label: 'Kotlin DSL', value: 'kotlinDsl', hint: 'Use Kotlin DSL for Gradle', selected: true }
|
|
161
|
+
];
|
|
162
|
+
const featuresResult = await multiselect({
|
|
163
|
+
message: '? Select additional features (optional)',
|
|
164
|
+
options: featureOptions,
|
|
165
|
+
required: false
|
|
166
|
+
});
|
|
167
|
+
if (isCancel(featuresResult)) {
|
|
168
|
+
cancel();
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
const selectedFeatures = featuresResult;
|
|
172
|
+
const features = {
|
|
173
|
+
git: selectedFeatures.includes('git') || options.git === true,
|
|
174
|
+
readme: selectedFeatures.includes('readme'),
|
|
175
|
+
androidX: selectedFeatures.includes('androidX'),
|
|
176
|
+
kotlinDsl: selectedFeatures.includes('kotlinDsl')
|
|
177
|
+
};
|
|
178
|
+
// Build context
|
|
179
|
+
const baseContext = buildDefaultProjectContext(appName, packageName, projectDirectory, selectedTemplate, features, options.minSdk, options.targetSdk);
|
|
180
|
+
const context = buildTemplateContext({
|
|
181
|
+
appName: baseContext.appName,
|
|
182
|
+
packageName: baseContext.packageName,
|
|
183
|
+
projectDirectory: baseContext.projectDirectory,
|
|
184
|
+
template: baseContext.template,
|
|
185
|
+
uiFramework: baseContext.uiFramework,
|
|
186
|
+
language: baseContext.language,
|
|
187
|
+
android: baseContext.android,
|
|
188
|
+
gradle: baseContext.gradle,
|
|
189
|
+
features: baseContext,
|
|
190
|
+
nativeCpp: baseContext.nativeCpp
|
|
191
|
+
});
|
|
192
|
+
// Check if directory exists
|
|
193
|
+
const dirExists = await exists(projectDirectory);
|
|
194
|
+
if (dirExists && !options.force) {
|
|
195
|
+
printError(`Directory "${projectDirectory}" already exists`, 'Use --force to overwrite existing files');
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
// Generate project
|
|
199
|
+
console.log('');
|
|
200
|
+
printSection('Generating Project');
|
|
201
|
+
const result = await generateProject(context, {
|
|
202
|
+
overwrite: options.force,
|
|
203
|
+
dryRun: false,
|
|
204
|
+
skipInstall: options.skipInstall,
|
|
205
|
+
verbose: options.verbose ?? false
|
|
206
|
+
});
|
|
207
|
+
if (result.success) {
|
|
208
|
+
printSuccess('Project generated successfully!');
|
|
209
|
+
printKeyValue([
|
|
210
|
+
{ key: 'Project', value: appName },
|
|
211
|
+
{ key: 'Package', value: packageName },
|
|
212
|
+
{ key: 'Template', value: selectedTemplate },
|
|
213
|
+
{ key: 'Location', value: projectDirectory },
|
|
214
|
+
{ key: 'Files created', value: result.generatedFiles.length.toString() },
|
|
215
|
+
{ key: 'Duration', value: `${(result.duration / 1000).toFixed(1)}s` }
|
|
216
|
+
]);
|
|
217
|
+
console.log('');
|
|
218
|
+
printSteps([
|
|
219
|
+
`cd ${projectDirectory}`,
|
|
220
|
+
'Open in Android Studio: studio .',
|
|
221
|
+
'Or build from command line: ./gradlew assembleDebug'
|
|
222
|
+
]);
|
|
223
|
+
printGoodbye(true);
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
printError('Project generation failed');
|
|
227
|
+
if (result.errors.length > 0) {
|
|
228
|
+
console.log('');
|
|
229
|
+
result.errors.forEach(err => {
|
|
230
|
+
console.log(` ${pc.red('•')} ${err.file ? `${err.file}: ` : ''}${err.message}`);
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
printGoodbye(false);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
catch (error) {
|
|
237
|
+
printError('An unexpected error occurred', error.message);
|
|
238
|
+
if (process.env.DEBUG || process.env.VERBOSE) {
|
|
239
|
+
console.error(error);
|
|
240
|
+
}
|
|
241
|
+
printGoodbye(false);
|
|
242
|
+
process.exit(1);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
//# sourceMappingURL=new.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../../src/cli/commands/new.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AA+EH,wBAAgB,MAAM,IAAI,IAAI,CAgC7B"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command registration and main CLI entry point
|
|
3
|
+
*/
|
|
4
|
+
import { cac } from 'cac';
|
|
5
|
+
import pc from 'picocolors';
|
|
6
|
+
import { createCommand } from './commands/create.js';
|
|
7
|
+
import { createNewCommand } from './commands/new.js';
|
|
8
|
+
import { createInitCommand } from './commands/init.js';
|
|
9
|
+
import { createInfoCommand } from './commands/info.js';
|
|
10
|
+
import { createListCommand } from './commands/list.js';
|
|
11
|
+
const pkg = { version: '1.0.0' };
|
|
12
|
+
const cli = cac('andrud');
|
|
13
|
+
cli.version(pkg.version);
|
|
14
|
+
// Clean minimal help
|
|
15
|
+
function printHelp() {
|
|
16
|
+
console.log('');
|
|
17
|
+
console.log(` ${pc.cyan('andrud')} - Android Project Scaffolding`);
|
|
18
|
+
console.log('');
|
|
19
|
+
console.log(` ${pc.gray('andrud create')} Create a new project`);
|
|
20
|
+
console.log(` ${pc.gray('andrud list')} Show available templates`);
|
|
21
|
+
console.log(` ${pc.gray('andrud info <template>')} View template details`);
|
|
22
|
+
console.log('');
|
|
23
|
+
console.log(` ${pc.gray('andrud create MyApp')} Create with name`);
|
|
24
|
+
console.log('');
|
|
25
|
+
}
|
|
26
|
+
// Commands
|
|
27
|
+
cli
|
|
28
|
+
.command('create', 'Create a new Android project')
|
|
29
|
+
.alias('c')
|
|
30
|
+
.option('-f, --force', 'Overwrite existing files')
|
|
31
|
+
.example('andrud create')
|
|
32
|
+
.example('andrud create --force')
|
|
33
|
+
.action(createCommand);
|
|
34
|
+
cli
|
|
35
|
+
.command('new [name]', 'Create a new project')
|
|
36
|
+
.alias('n')
|
|
37
|
+
.option('-t, --template <type>', 'Template type')
|
|
38
|
+
.option('-p, --package <name>', 'Package name')
|
|
39
|
+
.option('-f, --force', 'Overwrite')
|
|
40
|
+
.example('andrud new MyApp -t kotlin-compose')
|
|
41
|
+
.action(createNewCommand);
|
|
42
|
+
cli
|
|
43
|
+
.command('init', 'Initialize in current directory')
|
|
44
|
+
.alias('i')
|
|
45
|
+
.option('-f, --force', 'Overwrite')
|
|
46
|
+
.example('andrud init')
|
|
47
|
+
.action(createInitCommand);
|
|
48
|
+
cli
|
|
49
|
+
.command('info [template]', 'Show template info')
|
|
50
|
+
.example('andrud info kotlin-compose')
|
|
51
|
+
.action(createInfoCommand);
|
|
52
|
+
cli
|
|
53
|
+
.command('list', 'List all templates')
|
|
54
|
+
.alias('ls')
|
|
55
|
+
.option('--json', 'Output as JSON')
|
|
56
|
+
.action(createListCommand);
|
|
57
|
+
cli.on('command:!', () => {
|
|
58
|
+
console.error(pc.red(` Unknown command. See ${pc.cyan('--help')}\n`));
|
|
59
|
+
});
|
|
60
|
+
process.on('uncaughtException', (error) => {
|
|
61
|
+
console.error(pc.red(` ${error.message}\n`));
|
|
62
|
+
process.exit(1);
|
|
63
|
+
});
|
|
64
|
+
process.on('unhandledRejection', (reason) => {
|
|
65
|
+
console.error(pc.red(` ${reason}\n`));
|
|
66
|
+
process.exit(1);
|
|
67
|
+
});
|
|
68
|
+
export function runCli() {
|
|
69
|
+
try {
|
|
70
|
+
const args = process.argv.slice(2);
|
|
71
|
+
// Show help
|
|
72
|
+
if (args.includes('--help') || args.includes('-h')) {
|
|
73
|
+
printHelp();
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
// Show version
|
|
77
|
+
if (args.includes('--version') || args.includes('-V')) {
|
|
78
|
+
console.log(pkg.version);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
// Quick help on no args
|
|
82
|
+
if (args.length === 0) {
|
|
83
|
+
console.log('');
|
|
84
|
+
console.log(` ${pc.cyan('andrud')} - Create Android projects`);
|
|
85
|
+
console.log('');
|
|
86
|
+
console.log(` ${pc.gray('andrud create')} Start interactive setup`);
|
|
87
|
+
console.log(` ${pc.gray('andrud --help')} Show all commands`);
|
|
88
|
+
console.log('');
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
cli.parse(process.argv, { run: true });
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
console.error(pc.red(` ${error.message}\n`));
|
|
95
|
+
process.exit(1);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// Note: runCli() is called from bin/andrud.js
|
|
99
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration constants for Android and Gradle versions
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Default Android SDK configuration
|
|
6
|
+
*/
|
|
7
|
+
export declare const ANDROID_SDK_DEFAULTS: {
|
|
8
|
+
MIN_SDK: number;
|
|
9
|
+
TARGET_SDK: number;
|
|
10
|
+
COMPILE_SDK: number;
|
|
11
|
+
BUILD_TOOLS_VERSION: string;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Gradle-related versions
|
|
15
|
+
*/
|
|
16
|
+
export declare const GRADLE_VERSIONS: {
|
|
17
|
+
AGP: string;
|
|
18
|
+
GRADLE: string;
|
|
19
|
+
KOTLIN: string;
|
|
20
|
+
COMPOSE_COMPILER: string;
|
|
21
|
+
COMPOSE_BOM: string;
|
|
22
|
+
NDK: string;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* AndroidX library versions
|
|
26
|
+
*/
|
|
27
|
+
export declare const ANDROIDX_VERSIONS: {
|
|
28
|
+
CORE_KTX: string;
|
|
29
|
+
APP_COMPAT: string;
|
|
30
|
+
MATERIAL: string;
|
|
31
|
+
LIFECYCLE: string;
|
|
32
|
+
ACTIVITY: string;
|
|
33
|
+
CONSTRAINT_LAYOUT: string;
|
|
34
|
+
RECYCLER_VIEW: string;
|
|
35
|
+
CARD_VIEW: string;
|
|
36
|
+
SWIPE_REFRESH: string;
|
|
37
|
+
NAVIGATION: string;
|
|
38
|
+
ROOM: string;
|
|
39
|
+
WORK: string;
|
|
40
|
+
HILT: string;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Compose versions
|
|
44
|
+
*/
|
|
45
|
+
export declare const COMPOSE_VERSIONS: {
|
|
46
|
+
BOM: string;
|
|
47
|
+
UI: string;
|
|
48
|
+
UI_GRAPHICS: string;
|
|
49
|
+
UI_TOOLING: string;
|
|
50
|
+
MATERIAL3: string;
|
|
51
|
+
MATERIAL_ICONS: string;
|
|
52
|
+
FOUNDATION: string;
|
|
53
|
+
ACTIVITY: string;
|
|
54
|
+
LIFECYCLE: string;
|
|
55
|
+
NAVIGATION: string;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Default Gradle properties for Android projects
|
|
59
|
+
*/
|
|
60
|
+
export declare function getDefaultGradleProperties(): Record<string, string | number | boolean>;
|
|
61
|
+
/**
|
|
62
|
+
* Get recommended minimum SDK based on year
|
|
63
|
+
*/
|
|
64
|
+
export declare function getRecommendedMinSdk(): number;
|
|
65
|
+
/**
|
|
66
|
+
* Get target SDK for a given year
|
|
67
|
+
*/
|
|
68
|
+
export declare function getTargetSdkForYear(year: number): number;
|
|
69
|
+
/**
|
|
70
|
+
* Template-specific configurations
|
|
71
|
+
*/
|
|
72
|
+
export interface TemplateConfig {
|
|
73
|
+
language: 'kotlin' | 'java';
|
|
74
|
+
uiFramework: 'xml' | 'compose' | 'none';
|
|
75
|
+
minSdk: number;
|
|
76
|
+
targetSdk: number;
|
|
77
|
+
compileSdk: number;
|
|
78
|
+
kotlinVersion: string;
|
|
79
|
+
agpVersion: string;
|
|
80
|
+
gradleVersion: string;
|
|
81
|
+
composeEnabled: boolean;
|
|
82
|
+
ndkVersion?: string;
|
|
83
|
+
}
|
|
84
|
+
export declare const TEMPLATE_CONFIGS: Record<string, TemplateConfig>;
|
|
85
|
+
/**
|
|
86
|
+
* Get template configuration
|
|
87
|
+
*/
|
|
88
|
+
export declare function getTemplateConfig(template: string): TemplateConfig;
|
|
89
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;CAKhC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;CAO3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;CAc7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;CAW5B,CAAC;AAEF;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAYtF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAWxD;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC5B,WAAW,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CA8C3D,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAGlE"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration constants for Android and Gradle versions
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Default Android SDK configuration
|
|
6
|
+
*/
|
|
7
|
+
export const ANDROID_SDK_DEFAULTS = {
|
|
8
|
+
MIN_SDK: 24,
|
|
9
|
+
TARGET_SDK: 36,
|
|
10
|
+
COMPILE_SDK: 36,
|
|
11
|
+
BUILD_TOOLS_VERSION: '36.0.0'
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Gradle-related versions
|
|
15
|
+
*/
|
|
16
|
+
export const GRADLE_VERSIONS = {
|
|
17
|
+
AGP: '8.7.3',
|
|
18
|
+
GRADLE: '8.14',
|
|
19
|
+
KOTLIN: '2.0.21',
|
|
20
|
+
COMPOSE_COMPILER: '1.5.14',
|
|
21
|
+
COMPOSE_BOM: '2024.09.03',
|
|
22
|
+
NDK: '28.2.13676358'
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* AndroidX library versions
|
|
26
|
+
*/
|
|
27
|
+
export const ANDROIDX_VERSIONS = {
|
|
28
|
+
CORE_KTX: '1.15.0',
|
|
29
|
+
APP_COMPAT: '1.7.0',
|
|
30
|
+
MATERIAL: '1.12.0',
|
|
31
|
+
LIFECYCLE: '2.8.7',
|
|
32
|
+
ACTIVITY: '1.9.3',
|
|
33
|
+
CONSTRAINT_LAYOUT: '2.2.0',
|
|
34
|
+
RECYCLER_VIEW: '1.3.2',
|
|
35
|
+
CARD_VIEW: '1.0.0',
|
|
36
|
+
SWIPE_REFRESH: '1.1.0',
|
|
37
|
+
NAVIGATION: '2.8.4',
|
|
38
|
+
ROOM: '2.6.1',
|
|
39
|
+
WORK: '2.10.0',
|
|
40
|
+
HILT: '2.52'
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Compose versions
|
|
44
|
+
*/
|
|
45
|
+
export const COMPOSE_VERSIONS = {
|
|
46
|
+
BOM: '2025.01.00',
|
|
47
|
+
UI: '1.3.0',
|
|
48
|
+
UI_GRAPHICS: '1.3.0',
|
|
49
|
+
UI_TOOLING: '1.3.0',
|
|
50
|
+
MATERIAL3: '1.3.0',
|
|
51
|
+
MATERIAL_ICONS: '1.3.0',
|
|
52
|
+
FOUNDATION: '1.3.0',
|
|
53
|
+
ACTIVITY: '1.9.3',
|
|
54
|
+
LIFECYCLE: '2.8.7',
|
|
55
|
+
NAVIGATION: '2.8.4'
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Default Gradle properties for Android projects
|
|
59
|
+
*/
|
|
60
|
+
export function getDefaultGradleProperties() {
|
|
61
|
+
return {
|
|
62
|
+
'org.gradle.jvmargs': '-Xmx2048m -Dfile.encoding=UTF-8',
|
|
63
|
+
'android.useAndroidX': true,
|
|
64
|
+
'android.enableJetifier': true,
|
|
65
|
+
'kotlin.code.style': 'official',
|
|
66
|
+
'org.gradle.parallel': true,
|
|
67
|
+
'org.gradle.caching': true,
|
|
68
|
+
'org.gradle.configureondemand': true,
|
|
69
|
+
'android.nonTransitiveRClass': true,
|
|
70
|
+
'android.defaults.buildfeatures.buildconfig': true
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Get recommended minimum SDK based on year
|
|
75
|
+
*/
|
|
76
|
+
export function getRecommendedMinSdk() {
|
|
77
|
+
return 24; // Android 7.0 Nougat
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get target SDK for a given year
|
|
81
|
+
*/
|
|
82
|
+
export function getTargetSdkForYear(year) {
|
|
83
|
+
// By default, target the latest stable SDK
|
|
84
|
+
if (year >= 2024) {
|
|
85
|
+
return 35; // Android 15
|
|
86
|
+
}
|
|
87
|
+
else if (year >= 2023) {
|
|
88
|
+
return 34; // Android 14
|
|
89
|
+
}
|
|
90
|
+
else if (year >= 2022) {
|
|
91
|
+
return 33; // Android 13
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
return 32; // Android 12L
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
export const TEMPLATE_CONFIGS = {
|
|
98
|
+
'kotlin-compose': {
|
|
99
|
+
language: 'kotlin',
|
|
100
|
+
uiFramework: 'compose',
|
|
101
|
+
minSdk: 31,
|
|
102
|
+
targetSdk: 36,
|
|
103
|
+
compileSdk: 36,
|
|
104
|
+
kotlinVersion: GRADLE_VERSIONS.KOTLIN,
|
|
105
|
+
agpVersion: GRADLE_VERSIONS.AGP,
|
|
106
|
+
gradleVersion: GRADLE_VERSIONS.GRADLE,
|
|
107
|
+
composeEnabled: true
|
|
108
|
+
},
|
|
109
|
+
'kotlin-xml': {
|
|
110
|
+
language: 'kotlin',
|
|
111
|
+
uiFramework: 'xml',
|
|
112
|
+
minSdk: 31,
|
|
113
|
+
targetSdk: 36,
|
|
114
|
+
compileSdk: 36,
|
|
115
|
+
kotlinVersion: GRADLE_VERSIONS.KOTLIN,
|
|
116
|
+
agpVersion: GRADLE_VERSIONS.AGP,
|
|
117
|
+
gradleVersion: GRADLE_VERSIONS.GRADLE,
|
|
118
|
+
composeEnabled: false
|
|
119
|
+
},
|
|
120
|
+
'java-xml': {
|
|
121
|
+
language: 'java',
|
|
122
|
+
uiFramework: 'xml',
|
|
123
|
+
minSdk: 31,
|
|
124
|
+
targetSdk: 36,
|
|
125
|
+
compileSdk: 36,
|
|
126
|
+
kotlinVersion: '', // Not used for Java
|
|
127
|
+
agpVersion: GRADLE_VERSIONS.AGP,
|
|
128
|
+
gradleVersion: GRADLE_VERSIONS.GRADLE,
|
|
129
|
+
composeEnabled: false
|
|
130
|
+
},
|
|
131
|
+
'native-cpp': {
|
|
132
|
+
language: 'kotlin',
|
|
133
|
+
uiFramework: 'xml',
|
|
134
|
+
minSdk: 31,
|
|
135
|
+
targetSdk: 36,
|
|
136
|
+
compileSdk: 36,
|
|
137
|
+
kotlinVersion: GRADLE_VERSIONS.KOTLIN,
|
|
138
|
+
agpVersion: GRADLE_VERSIONS.AGP,
|
|
139
|
+
gradleVersion: GRADLE_VERSIONS.GRADLE,
|
|
140
|
+
composeEnabled: false,
|
|
141
|
+
ndkVersion: GRADLE_VERSIONS.NDK
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
/**
|
|
145
|
+
* Get template configuration
|
|
146
|
+
*/
|
|
147
|
+
export function getTemplateConfig(template) {
|
|
148
|
+
const config = TEMPLATE_CONFIGS[template];
|
|
149
|
+
return config ?? TEMPLATE_CONFIGS['kotlin-xml'];
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,OAAO,EAAE,EAAE;IACX,UAAU,EAAE,EAAE;IACd,WAAW,EAAE,EAAE;IACf,mBAAmB,EAAE,QAAQ;CAC9B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,GAAG,EAAE,OAAO;IACZ,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,QAAQ;IAChB,gBAAgB,EAAE,QAAQ;IAC1B,WAAW,EAAE,YAAY;IACzB,GAAG,EAAE,eAAe;CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,OAAO;IACnB,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,OAAO;IAClB,QAAQ,EAAE,OAAO;IACjB,iBAAiB,EAAE,OAAO;IAC1B,aAAa,EAAE,OAAO;IACtB,SAAS,EAAE,OAAO;IAClB,aAAa,EAAE,OAAO;IACtB,UAAU,EAAE,OAAO;IACnB,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,MAAM;CACb,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,GAAG,EAAE,YAAY;IACjB,EAAE,EAAE,OAAO;IACX,WAAW,EAAE,OAAO;IACpB,UAAU,EAAE,OAAO;IACnB,SAAS,EAAE,OAAO;IAClB,cAAc,EAAE,OAAO;IACvB,UAAU,EAAE,OAAO;IACnB,QAAQ,EAAE,OAAO;IACjB,SAAS,EAAE,OAAO;IAClB,UAAU,EAAE,OAAO;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,0BAA0B;IACxC,OAAO;QACL,oBAAoB,EAAE,iCAAiC;QACvD,qBAAqB,EAAE,IAAI;QAC3B,wBAAwB,EAAE,IAAI;QAC9B,mBAAmB,EAAE,UAAU;QAC/B,qBAAqB,EAAE,IAAI;QAC3B,oBAAoB,EAAE,IAAI;QAC1B,8BAA8B,EAAE,IAAI;QACpC,6BAA6B,EAAE,IAAI;QACnC,4CAA4C,EAAE,IAAI;KACnD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,EAAE,CAAC,CAAC,qBAAqB;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,2CAA2C;IAC3C,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,OAAO,EAAE,CAAC,CAAC,aAAa;IAC1B,CAAC;SAAM,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC,CAAC,aAAa;IAC1B,CAAC;SAAM,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC,CAAC,aAAa;IAC1B,CAAC;SAAM,CAAC;QACN,OAAO,EAAE,CAAC,CAAC,cAAc;IAC3B,CAAC;AACH,CAAC;AAkBD,MAAM,CAAC,MAAM,gBAAgB,GAAmC;IAC9D,gBAAgB,EAAE;QAChB,QAAQ,EAAE,QAAQ;QAClB,WAAW,EAAE,SAAS;QACtB,MAAM,EAAE,EAAE;QACV,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,EAAE;QACd,aAAa,EAAE,eAAe,CAAC,MAAM;QACrC,UAAU,EAAE,eAAe,CAAC,GAAG;QAC/B,aAAa,EAAE,eAAe,CAAC,MAAM;QACrC,cAAc,EAAE,IAAI;KACrB;IACD,YAAY,EAAE;QACZ,QAAQ,EAAE,QAAQ;QAClB,WAAW,EAAE,KAAK;QAClB,MAAM,EAAE,EAAE;QACV,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,EAAE;QACd,aAAa,EAAE,eAAe,CAAC,MAAM;QACrC,UAAU,EAAE,eAAe,CAAC,GAAG;QAC/B,aAAa,EAAE,eAAe,CAAC,MAAM;QACrC,cAAc,EAAE,KAAK;KACtB;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM;QAChB,WAAW,EAAE,KAAK;QAClB,MAAM,EAAE,EAAE;QACV,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,EAAE;QACd,aAAa,EAAE,EAAE,EAAE,oBAAoB;QACvC,UAAU,EAAE,eAAe,CAAC,GAAG;QAC/B,aAAa,EAAE,eAAe,CAAC,MAAM;QACrC,cAAc,EAAE,KAAK;KACtB;IACD,YAAY,EAAE;QACZ,QAAQ,EAAE,QAAQ;QAClB,WAAW,EAAE,KAAK;QAClB,MAAM,EAAE,EAAE;QACV,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,EAAE;QACd,aAAa,EAAE,eAAe,CAAC,MAAM;QACrC,UAAU,EAAE,eAAe,CAAC,GAAG;QAC/B,aAAa,EAAE,eAAe,CAAC,MAAM;QACrC,cAAc,EAAE,KAAK;QACrB,UAAU,EAAE,eAAe,CAAC,GAAG;KAChC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC1C,OAAO,MAAM,IAAI,gBAAgB,CAAC,YAAY,CAAE,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context builder for generating Android project context
|
|
3
|
+
*/
|
|
4
|
+
import type { TemplateType, TemplateContext, ProjectFeatures } from './types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Build default context from basic parameters
|
|
7
|
+
*/
|
|
8
|
+
export declare function buildDefaultProjectContext(appName: string, packageName: string, projectDirectory: string, template: TemplateType, features?: Partial<ProjectFeatures>, minSdk?: number, targetSdk?: number): Omit<TemplateContext, 'packagePath' | 'appNameSnake' | 'appNameKebab' | 'appNamePascal' | 'appNameCamel' | 'appNameLower' | 'year' | 'generatorVersion'>;
|
|
9
|
+
/**
|
|
10
|
+
* Build full template context with all derived values
|
|
11
|
+
*/
|
|
12
|
+
export declare function buildTemplateContext(context: {
|
|
13
|
+
appName: string;
|
|
14
|
+
packageName: string;
|
|
15
|
+
projectDirectory: string;
|
|
16
|
+
template: string;
|
|
17
|
+
uiFramework: string;
|
|
18
|
+
language: 'kotlin' | 'java';
|
|
19
|
+
android: {
|
|
20
|
+
minSdk: number;
|
|
21
|
+
targetSdk: number;
|
|
22
|
+
compileSdk: number;
|
|
23
|
+
};
|
|
24
|
+
gradle: {
|
|
25
|
+
agpVersion: string;
|
|
26
|
+
gradleVersion: string;
|
|
27
|
+
kotlinVersion?: string;
|
|
28
|
+
composeCompilerVersion?: string;
|
|
29
|
+
composeBomVersion?: string;
|
|
30
|
+
};
|
|
31
|
+
features: Record<string, boolean>;
|
|
32
|
+
nativeCpp?: {
|
|
33
|
+
cppStandard: string;
|
|
34
|
+
ndkVersion?: string;
|
|
35
|
+
stlType?: string;
|
|
36
|
+
abiFilters?: string[];
|
|
37
|
+
};
|
|
38
|
+
year?: string;
|
|
39
|
+
}): TemplateContext;
|
|
40
|
+
/**
|
|
41
|
+
* Validate context has all required fields
|
|
42
|
+
*/
|
|
43
|
+
export declare function validateContext(context: Partial<TemplateContext>): {
|
|
44
|
+
valid: boolean;
|
|
45
|
+
errors: string[];
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=context.d.ts.map
|