mirror of
https://github.com/PR0M3TH3AN/Archivox.git
synced 2025-09-07 14:48:40 +00:00
46 lines
1.4 KiB
JavaScript
Executable File
46 lines
1.4 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
const { execSync } = require('child_process');
|
|
|
|
function copyDir(src, dest) {
|
|
fs.mkdirSync(dest, { recursive: true });
|
|
for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
|
|
const srcPath = path.join(src, entry.name);
|
|
const destPath = path.join(dest, entry.name);
|
|
if (entry.isDirectory()) {
|
|
copyDir(srcPath, destPath);
|
|
} else {
|
|
fs.copyFileSync(srcPath, destPath);
|
|
}
|
|
}
|
|
}
|
|
|
|
function main() {
|
|
const args = process.argv.slice(2);
|
|
const install = args.includes('--install');
|
|
const targetArg = args.find(a => !a.startsWith('-')) || '.';
|
|
const targetDir = path.resolve(process.cwd(), targetArg);
|
|
|
|
const templateDir = path.join(__dirname, '..', 'starter');
|
|
copyDir(templateDir, targetDir);
|
|
|
|
const pkgPath = path.join(targetDir, 'package.json');
|
|
if (fs.existsSync(pkgPath)) {
|
|
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
|
|
const version = require('../package.json').version;
|
|
if (pkg.dependencies && pkg.dependencies.archivox)
|
|
pkg.dependencies.archivox = `^${version}`;
|
|
pkg.name = path.basename(targetDir);
|
|
fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2));
|
|
}
|
|
|
|
if (install) {
|
|
execSync('npm install', { cwd: targetDir, stdio: 'inherit' });
|
|
}
|
|
|
|
console.log(`Archivox starter created at ${targetDir}`);
|
|
}
|
|
|
|
main();
|