english-lang 0.2.0 → 0.2.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/dist/cli/engc.js +45 -1
- package/package.json +1 -1
package/dist/cli/engc.js
CHANGED
|
@@ -77,6 +77,42 @@ screen HomeScreen:
|
|
|
77
77
|
button "Say Hello"
|
|
78
78
|
button "Reset"
|
|
79
79
|
`;
|
|
80
|
+
// ── Dev ───────────────────────────────────────────────────────
|
|
81
|
+
function devProject(projectDir) {
|
|
82
|
+
const screensDir = path.join(projectDir, 'screens');
|
|
83
|
+
const rnDir = path.join(projectDir, 'rn');
|
|
84
|
+
const rnSrcDir = path.join(rnDir, 'src');
|
|
85
|
+
if (!fs.existsSync(screensDir) || !fs.existsSync(rnDir)) {
|
|
86
|
+
console.error('[engc] Not an english-lang project. Run engc init <name> first.');
|
|
87
|
+
process.exit(1);
|
|
88
|
+
}
|
|
89
|
+
console.log('[engc] Starting dev mode ...\n');
|
|
90
|
+
// Spawn Metro bundler
|
|
91
|
+
const metro = childProcess.spawn('npx', ['react-native', 'start'], {
|
|
92
|
+
cwd: rnDir,
|
|
93
|
+
stdio: 'inherit',
|
|
94
|
+
shell: true,
|
|
95
|
+
});
|
|
96
|
+
metro.on('error', (err) => {
|
|
97
|
+
console.error('[engc] Metro error:', err.message);
|
|
98
|
+
});
|
|
99
|
+
// Watch .eng files
|
|
100
|
+
compileDir(screensDir, rnSrcDir);
|
|
101
|
+
console.log(`[engc] Watching screens/ ...\n`);
|
|
102
|
+
fs.watch(screensDir, { recursive: false }, (event, filename) => {
|
|
103
|
+
if (!filename || !filename.endsWith('.eng'))
|
|
104
|
+
return;
|
|
105
|
+
const filePath = path.join(screensDir, filename);
|
|
106
|
+
if (!fs.existsSync(filePath))
|
|
107
|
+
return;
|
|
108
|
+
compileFile(filePath, rnSrcDir);
|
|
109
|
+
});
|
|
110
|
+
// Keep alive — exit both on Ctrl+C
|
|
111
|
+
process.on('SIGINT', () => {
|
|
112
|
+
metro.kill();
|
|
113
|
+
process.exit(0);
|
|
114
|
+
});
|
|
115
|
+
}
|
|
80
116
|
// ── Init ──────────────────────────────────────────────────────
|
|
81
117
|
function initProject(name) {
|
|
82
118
|
const projectDir = path.resolve(name);
|
|
@@ -99,6 +135,7 @@ function initProject(name) {
|
|
|
99
135
|
version: '0.0.1',
|
|
100
136
|
private: true,
|
|
101
137
|
scripts: {
|
|
138
|
+
'dev': 'engc dev',
|
|
102
139
|
'compile': 'engc compile screens/ --out rn/src/',
|
|
103
140
|
'watch': 'engc watch screens/ --out rn/src/',
|
|
104
141
|
},
|
|
@@ -127,7 +164,7 @@ function initProject(name) {
|
|
|
127
164
|
[engc] Done! Your project is ready.
|
|
128
165
|
|
|
129
166
|
cd ${name}
|
|
130
|
-
npm run
|
|
167
|
+
npm run dev ← starts Metro + watches .eng files
|
|
131
168
|
cd rn && npx react-native run-ios
|
|
132
169
|
`);
|
|
133
170
|
}
|
|
@@ -183,6 +220,7 @@ English Compiler (engc)
|
|
|
183
220
|
|
|
184
221
|
Usage:
|
|
185
222
|
engc init <name> scaffold a new project
|
|
223
|
+
engc dev start Metro + watch .eng files
|
|
186
224
|
engc <file.eng> compile → .tsx alongside source
|
|
187
225
|
engc <file.eng> --out <dir> compile → specific output directory
|
|
188
226
|
engc <file.eng> -o <output.tsx> compile → specific output file
|
|
@@ -194,12 +232,18 @@ Usage:
|
|
|
194
232
|
|
|
195
233
|
Examples:
|
|
196
234
|
engc init my-app
|
|
235
|
+
engc dev
|
|
197
236
|
engc screens/HomeScreen.eng --out rn/src/
|
|
198
237
|
engc compile screens/ --out rn/src/
|
|
199
238
|
engc watch screens/ --out rn/src/
|
|
200
239
|
`.trim());
|
|
201
240
|
process.exit(0);
|
|
202
241
|
}
|
|
242
|
+
// engc dev
|
|
243
|
+
if (args[0] === 'dev') {
|
|
244
|
+
devProject(process.cwd());
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
203
247
|
// engc init <name>
|
|
204
248
|
if (args[0] === 'init') {
|
|
205
249
|
const name = args[1];
|