andrud 1.0.1 → 1.0.3
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 +157 -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,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":"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"}
|
|
@@ -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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAkC,eAAe,EAAmB,MAAM,YAAY,CAAC;AAIlI;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,YAAY,EACtB,QAAQ,GAAE,OAAO,CAAC,eAAe,CAAM,EACvC,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI,CAAC,eAAe,EAAE,aAAa,GAAG,cAAc,GAAG,cAAc,GAAG,eAAe,GAAG,cAAc,GAAG,cAAc,GAAG,MAAM,GAAG,kBAAkB,CAAC,CAiE1J;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE;IACP,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC5B,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IACnE,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,sBAAsB,CAAC,EAAE,MAAM,CAAC;QAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,SAAS,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAClG,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GACA,eAAe,CAuEjB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAwBvG"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context builder for generating Android project context
|
|
3
|
+
*/
|
|
4
|
+
import { camelCase, kebabCase, pascalCase, snakeCase } from '../utils/validation.js';
|
|
5
|
+
import { GRADLE_VERSIONS, ANDROID_SDK_DEFAULTS, getTemplateConfig } from './config.js';
|
|
6
|
+
const GENERATOR_VERSION = '1.0.0';
|
|
7
|
+
/**
|
|
8
|
+
* Build default context from basic parameters
|
|
9
|
+
*/
|
|
10
|
+
export function buildDefaultProjectContext(appName, packageName, projectDirectory, template, features = {}, minSdk, targetSdk) {
|
|
11
|
+
// Determine language and UI framework from template
|
|
12
|
+
const isCompose = template === 'kotlin-compose';
|
|
13
|
+
const isNativeCpp = template === 'native-cpp';
|
|
14
|
+
const isKotlin = template !== 'java-xml';
|
|
15
|
+
const isXml = !isCompose;
|
|
16
|
+
// Get template config for version info
|
|
17
|
+
const templateConfig = getTemplateConfig(template);
|
|
18
|
+
// Create Android SDK config
|
|
19
|
+
const android = {
|
|
20
|
+
minSdk: minSdk ?? templateConfig.minSdk,
|
|
21
|
+
targetSdk: targetSdk ?? templateConfig.targetSdk,
|
|
22
|
+
compileSdk: templateConfig.compileSdk,
|
|
23
|
+
buildToolsVersion: ANDROID_SDK_DEFAULTS.BUILD_TOOLS_VERSION
|
|
24
|
+
};
|
|
25
|
+
// Create Gradle config
|
|
26
|
+
const gradle = {
|
|
27
|
+
agpVersion: templateConfig.agpVersion,
|
|
28
|
+
gradleVersion: templateConfig.gradleVersion,
|
|
29
|
+
kotlinVersion: isKotlin ? templateConfig.kotlinVersion : undefined,
|
|
30
|
+
composeCompilerVersion: isCompose ? GRADLE_VERSIONS.COMPOSE_COMPILER : undefined,
|
|
31
|
+
composeBomVersion: isCompose ? GRADLE_VERSIONS.COMPOSE_BOM : undefined
|
|
32
|
+
};
|
|
33
|
+
// Build project features
|
|
34
|
+
const projectFeatures = {
|
|
35
|
+
git: features.git ?? true,
|
|
36
|
+
readme: features.readme ?? true,
|
|
37
|
+
androidX: features.androidX ?? true,
|
|
38
|
+
kotlinDsl: features.kotlinDsl ?? true,
|
|
39
|
+
adaptiveIcon: features.adaptiveIcon ?? true,
|
|
40
|
+
material3: isCompose || (features.material3 ?? true),
|
|
41
|
+
viewBinding: features.viewBinding ?? isXml,
|
|
42
|
+
dataBinding: features.dataBinding ?? false,
|
|
43
|
+
jetpackCompose: isCompose ? true : (features.jetpackCompose ?? false)
|
|
44
|
+
};
|
|
45
|
+
// Build native C++ config if needed
|
|
46
|
+
const nativeCpp = isNativeCpp ? {
|
|
47
|
+
cppStandard: 'c++17',
|
|
48
|
+
ndkVersion: templateConfig.ndkVersion ?? GRADLE_VERSIONS.NDK,
|
|
49
|
+
stlType: 'c++_shared',
|
|
50
|
+
abiFilters: ['armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64']
|
|
51
|
+
} : undefined;
|
|
52
|
+
// Build base context - spread features at top level to match TemplateContext (which extends ProjectFeatures)
|
|
53
|
+
const baseContext = {
|
|
54
|
+
appName,
|
|
55
|
+
packageName,
|
|
56
|
+
projectDirectory,
|
|
57
|
+
template,
|
|
58
|
+
language: templateConfig.language,
|
|
59
|
+
uiFramework: templateConfig.uiFramework,
|
|
60
|
+
android,
|
|
61
|
+
gradle,
|
|
62
|
+
...projectFeatures,
|
|
63
|
+
nativeCpp
|
|
64
|
+
};
|
|
65
|
+
// Cast to Omit<TemplateContext, ...> for the fields that buildTemplateContext adds
|
|
66
|
+
const contextForBuildTemplate = baseContext;
|
|
67
|
+
return contextForBuildTemplate;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Build full template context with all derived values
|
|
71
|
+
*/
|
|
72
|
+
export function buildTemplateContext(context) {
|
|
73
|
+
// Transform app name to various cases
|
|
74
|
+
const normalizedAppName = context.appName.replace(/\s+/g, '_');
|
|
75
|
+
const appNameSnake = snakeCase(context.appName);
|
|
76
|
+
const appNameKebab = kebabCase(context.appName);
|
|
77
|
+
const appNamePascal = pascalCase(context.appName);
|
|
78
|
+
const appNameCamel = camelCase(context.appName);
|
|
79
|
+
const appNameLower = context.appName.toLowerCase().replace(/\s+/g, '');
|
|
80
|
+
// Convert package name to path format (e.g., "com.example.myapp" -> "com/example/myapp")
|
|
81
|
+
const packagePath = context.packageName.replace(/\./g, '/');
|
|
82
|
+
// Get current year
|
|
83
|
+
const year = context.year ?? new Date().getFullYear().toString();
|
|
84
|
+
// Build native C++ config
|
|
85
|
+
const nativeCpp = context.nativeCpp ? {
|
|
86
|
+
cppStandard: (context.nativeCpp.cppStandard === 'c++20' ? 'c++20' : 'c++17'),
|
|
87
|
+
ndkVersion: context.nativeCpp.ndkVersion,
|
|
88
|
+
stlType: context.nativeCpp.stlType ?? 'c++_shared',
|
|
89
|
+
abiFilters: context.nativeCpp.abiFilters
|
|
90
|
+
} : undefined;
|
|
91
|
+
// Build project features from context (features may be at top level or nested)
|
|
92
|
+
const featuresObj = context.features || {};
|
|
93
|
+
const features = {
|
|
94
|
+
git: typeof featuresObj.git === 'boolean' ? featuresObj.git : true,
|
|
95
|
+
readme: typeof featuresObj.readme === 'boolean' ? featuresObj.readme : true,
|
|
96
|
+
androidX: typeof featuresObj.androidX === 'boolean' ? featuresObj.androidX : true,
|
|
97
|
+
kotlinDsl: typeof featuresObj.kotlinDsl === 'boolean' ? featuresObj.kotlinDsl : true,
|
|
98
|
+
adaptiveIcon: typeof featuresObj.adaptiveIcon === 'boolean' ? featuresObj.adaptiveIcon : true,
|
|
99
|
+
material3: typeof featuresObj.material3 === 'boolean' ? featuresObj.material3 : true,
|
|
100
|
+
viewBinding: typeof featuresObj.viewBinding === 'boolean' ? featuresObj.viewBinding : undefined,
|
|
101
|
+
dataBinding: typeof featuresObj.dataBinding === 'boolean' ? featuresObj.dataBinding : undefined,
|
|
102
|
+
jetpackCompose: typeof featuresObj.jetpackCompose === 'boolean' ? featuresObj.jetpackCompose : undefined
|
|
103
|
+
};
|
|
104
|
+
// Build the complete template context
|
|
105
|
+
const templateContext = {
|
|
106
|
+
appName: context.appName,
|
|
107
|
+
packageName: context.packageName,
|
|
108
|
+
projectDirectory: context.projectDirectory,
|
|
109
|
+
template: context.template,
|
|
110
|
+
language: context.language,
|
|
111
|
+
uiFramework: context.uiFramework,
|
|
112
|
+
android: {
|
|
113
|
+
minSdk: context.android.minSdk,
|
|
114
|
+
targetSdk: context.android.targetSdk,
|
|
115
|
+
compileSdk: context.android.compileSdk,
|
|
116
|
+
buildToolsVersion: context.android.compileSdk > 34 ? '35.0.0' : '34.0.0'
|
|
117
|
+
},
|
|
118
|
+
gradle: {
|
|
119
|
+
agpVersion: context.gradle.agpVersion,
|
|
120
|
+
gradleVersion: context.gradle.gradleVersion,
|
|
121
|
+
kotlinVersion: context.gradle.kotlinVersion,
|
|
122
|
+
composeCompilerVersion: context.gradle.composeCompilerVersion,
|
|
123
|
+
composeBomVersion: context.gradle.composeBomVersion
|
|
124
|
+
},
|
|
125
|
+
appNameSnake,
|
|
126
|
+
appNameKebab,
|
|
127
|
+
appNamePascal,
|
|
128
|
+
appNameCamel,
|
|
129
|
+
appNameLower,
|
|
130
|
+
packagePath,
|
|
131
|
+
year,
|
|
132
|
+
generatorVersion: GENERATOR_VERSION,
|
|
133
|
+
...features,
|
|
134
|
+
nativeCpp
|
|
135
|
+
};
|
|
136
|
+
return templateContext;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Validate context has all required fields
|
|
140
|
+
*/
|
|
141
|
+
export function validateContext(context) {
|
|
142
|
+
const errors = [];
|
|
143
|
+
if (!context.appName)
|
|
144
|
+
errors.push('appName is required');
|
|
145
|
+
if (!context.packageName)
|
|
146
|
+
errors.push('packageName is required');
|
|
147
|
+
if (!context.projectDirectory)
|
|
148
|
+
errors.push('projectDirectory is required');
|
|
149
|
+
if (!context.template)
|
|
150
|
+
errors.push('template is required');
|
|
151
|
+
if (!context.language)
|
|
152
|
+
errors.push('language is required');
|
|
153
|
+
if (!context.uiFramework)
|
|
154
|
+
errors.push('uiFramework is required');
|
|
155
|
+
if (!context.android)
|
|
156
|
+
errors.push('android config is required');
|
|
157
|
+
if (!context.gradle)
|
|
158
|
+
errors.push('gradle config is required');
|
|
159
|
+
if (context.android) {
|
|
160
|
+
if (!context.android.minSdk)
|
|
161
|
+
errors.push('android.minSdk is required');
|
|
162
|
+
if (!context.android.targetSdk)
|
|
163
|
+
errors.push('android.targetSdk is required');
|
|
164
|
+
if (!context.android.compileSdk)
|
|
165
|
+
errors.push('android.compileSdk is required');
|
|
166
|
+
}
|
|
167
|
+
if (context.gradle) {
|
|
168
|
+
if (!context.gradle.agpVersion)
|
|
169
|
+
errors.push('gradle.agpVersion is required');
|
|
170
|
+
if (!context.gradle.gradleVersion)
|
|
171
|
+
errors.push('gradle.gradleVersion is required');
|
|
172
|
+
}
|
|
173
|
+
return { valid: errors.length === 0, errors };
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project generator - creates Android project structure and files
|
|
3
|
+
*/
|
|
4
|
+
import type { TemplateContext, GenerationResult } from './types.js';
|
|
5
|
+
export interface GeneratorOptions {
|
|
6
|
+
overwrite?: boolean;
|
|
7
|
+
skipInstall?: boolean;
|
|
8
|
+
dryRun?: boolean;
|
|
9
|
+
verbose?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Validate project directory can be used
|
|
13
|
+
*/
|
|
14
|
+
export declare function validateProjectDirectory(projectPath: string, options?: {
|
|
15
|
+
overwrite: boolean;
|
|
16
|
+
}): Promise<{
|
|
17
|
+
valid: boolean;
|
|
18
|
+
error?: string;
|
|
19
|
+
existingFiles?: string[];
|
|
20
|
+
}>;
|
|
21
|
+
/**
|
|
22
|
+
* Validate context has all required fields
|
|
23
|
+
*/
|
|
24
|
+
export declare function validateContext(context: Partial<TemplateContext>): {
|
|
25
|
+
valid: boolean;
|
|
26
|
+
errors: string[];
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Prepare project directory structure
|
|
30
|
+
*/
|
|
31
|
+
export declare function prepareProjectStructure(projectPath: string, context: TemplateContext): Promise<{
|
|
32
|
+
success: boolean;
|
|
33
|
+
createdPaths: string[];
|
|
34
|
+
errors: string[];
|
|
35
|
+
}>;
|
|
36
|
+
/**
|
|
37
|
+
* Generate all project files
|
|
38
|
+
*/
|
|
39
|
+
export declare function generateProject(context: TemplateContext, options?: GeneratorOptions): Promise<GenerationResult>;
|
|
40
|
+
/**
|
|
41
|
+
* Get directory contents
|
|
42
|
+
*/
|
|
43
|
+
export declare function getDirectoryContents(path: string): Promise<string[]>;
|
|
44
|
+
//# sourceMappingURL=generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/core/generator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAiB,MAAM,YAAY,CAAC;AAMnF,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;IAAE,SAAS,EAAE,OAAO,CAAA;CAAyB,GACrD,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAoBvE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAWvG;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAuDzE;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,eAAe,EACxB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,gBAAgB,CAAC,CAsG3B;AAklCD;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAO1E"}
|