- CitrineOS core extracted (CSMS OCPP 2.0.1) - OpenOCPP extracted (firmware OCPP 1.6J/2.0.1) - ShapeShifter library installed (pip install -e) - ShapeShifter specification extracted - EVerest extracted TODO updated with progress
59 lines
1.6 KiB
TypeScript
59 lines
1.6 KiB
TypeScript
// SPDX-FileCopyrightText: 2025 Contributors to the CitrineOS Project
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
import * as path from 'path';
|
|
import { promises as fs } from 'fs';
|
|
|
|
const source = process.argv[2];
|
|
const target = process.argv[3];
|
|
|
|
console.log(`Copying assets from ${source} to ${target}`);
|
|
|
|
if (!source || !target) {
|
|
console.error(
|
|
`Error: need valid source and target. Received source: ${source}, target: ${target}`,
|
|
);
|
|
process.exit(1);
|
|
}
|
|
|
|
async function copyDirectory(src: string, dest: string) {
|
|
try {
|
|
await fs.mkdir(dest, { recursive: true });
|
|
console.log(`Created "${dest}" directory`);
|
|
|
|
const entries = await fs.readdir(src, { withFileTypes: true });
|
|
|
|
for (const entry of entries) {
|
|
const srcPath = path.join(src, entry.name);
|
|
const destPath = path.join(dest, entry.name);
|
|
|
|
if (entry.isDirectory()) {
|
|
await copyDirectory(srcPath, destPath);
|
|
} else {
|
|
await fs.copyFile(srcPath, destPath);
|
|
console.log(`Copied ${srcPath} to ${destPath}`);
|
|
}
|
|
}
|
|
} catch (err) {
|
|
console.error('Error copying directory:', err);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
async function copy(s: string, t: string) {
|
|
const srcDir = path.resolve(s);
|
|
const destDir = path.resolve(t);
|
|
await copyDirectory(srcDir, destDir);
|
|
console.log(`Successfully copied assets from ${srcDir} to ${destDir}`);
|
|
}
|
|
|
|
copy(source, target)
|
|
.then(() => {
|
|
console.log(`Completed copying assets from ${source} to ${target}`);
|
|
process.exit(0);
|
|
})
|
|
.catch((err) => {
|
|
console.error('Unhandled error:', err);
|
|
process.exit(1);
|
|
});
|