feat: Implement Svelte frontend with OTA update support, build tooling, and deployment documentation.
This commit is contained in:
@@ -6,13 +6,13 @@
|
||||
import { execSync } from 'child_process';
|
||||
import { resolve, dirname } from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
import { existsSync, readFileSync, mkdirSync } from 'fs';
|
||||
import { existsSync, readFileSync, mkdirSync, writeFileSync } from 'fs';
|
||||
|
||||
const __dirname = dirname(fileURLToPath(import.meta.url));
|
||||
const projectRoot = resolve(__dirname, '..');
|
||||
const distDir = resolve(projectRoot, 'dist');
|
||||
const binDir = resolve(projectRoot, 'bin');
|
||||
const outputFile = resolve(binDir, 'www.bin');
|
||||
const versionFile = resolve(projectRoot, 'version.json');
|
||||
|
||||
// Ensure bin directory exists
|
||||
if (!existsSync(binDir)) {
|
||||
@@ -26,6 +26,33 @@ const PAGE_SIZE = 256;
|
||||
|
||||
console.log('--- OTA Packaging ---');
|
||||
|
||||
/**
|
||||
* Handle versioning: Read current version
|
||||
*/
|
||||
function getVersion() {
|
||||
if (existsSync(versionFile)) {
|
||||
try {
|
||||
return JSON.parse(readFileSync(versionFile, 'utf8'));
|
||||
} catch (e) {
|
||||
console.warn('Warning: Could not read version.json:', e.message);
|
||||
}
|
||||
}
|
||||
return { major: 0, minor: 0, revision: 0 };
|
||||
}
|
||||
|
||||
/**
|
||||
* Increment and save revision
|
||||
*/
|
||||
function incrementVersion(version) {
|
||||
try {
|
||||
version.revision = (version.revision || 0) + 1;
|
||||
writeFileSync(versionFile, JSON.stringify(version, null, 2));
|
||||
console.log(`Version incremented to: ${version.major}.${version.minor}.${version.revision} for next build.`);
|
||||
} catch (e) {
|
||||
console.warn('Warning: Could not update version.json:', e.message);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Simple .env parser to load MKLITTLEFS_PATH without external dependencies
|
||||
*/
|
||||
@@ -51,6 +78,9 @@ function loadEnv() {
|
||||
}
|
||||
|
||||
loadEnv();
|
||||
const version = getVersion();
|
||||
const versionStr = `${version.major}.${version.minor}.${version.revision}`;
|
||||
const outputFile = resolve(binDir, `www_v${versionStr}.bin`);
|
||||
|
||||
if (!existsSync(distDir)) {
|
||||
console.error('Error: dist/ directory not found. Run "npm run build:esp32" first.');
|
||||
@@ -107,6 +137,9 @@ try {
|
||||
console.log(`Running: ${cmd}`);
|
||||
execSync(cmd, { stdio: 'inherit' });
|
||||
console.log('Success: www.bin created.');
|
||||
|
||||
// Auto-increment for the next build
|
||||
incrementVersion(version);
|
||||
} catch (e) {
|
||||
console.error('Error during packaging:', e.message);
|
||||
process.exit(1);
|
||||
|
||||
Reference in New Issue
Block a user