usuarios pre configurados
This commit is contained in:
92
scripts/generate-uuids.js
Normal file
92
scripts/generate-uuids.js
Normal file
@@ -0,0 +1,92 @@
|
||||
#!/usr/bin/env node
|
||||
"use strict";
|
||||
|
||||
// Generate UUIDs and write them to server/src/config/uuids.json.
|
||||
// Usage:
|
||||
// node scripts/generate-uuids.js --count 210 [--force|--append]
|
||||
// Defaults: count=210, no overwrite if file has entries.
|
||||
|
||||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
const crypto = require("crypto");
|
||||
|
||||
function parseArgs(argv) {
|
||||
const args = { count: 210, force: false, append: false };
|
||||
for (let i = 2; i < argv.length; i++) {
|
||||
const a = argv[i];
|
||||
if (a === "--force") args.force = true;
|
||||
else if (a === "--append") args.append = true;
|
||||
else if (a === "--count") {
|
||||
const n = Number(argv[++i]);
|
||||
if (!Number.isFinite(n) || n <= 0) throw new Error("--count must be a positive number");
|
||||
args.count = Math.floor(n);
|
||||
} else if (/^--count=/.test(a)) {
|
||||
const n = Number(a.split("=")[1]);
|
||||
if (!Number.isFinite(n) || n <= 0) throw new Error("--count must be a positive number");
|
||||
args.count = Math.floor(n);
|
||||
} else {
|
||||
throw new Error(`Unknown argument: ${a}`);
|
||||
}
|
||||
}
|
||||
return args;
|
||||
}
|
||||
|
||||
function genUuid() {
|
||||
if (typeof crypto.randomUUID === "function") return crypto.randomUUID();
|
||||
// Fallback: RFC4122 v4-ish
|
||||
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, c => {
|
||||
const r = (crypto.randomBytes(1)[0] % 16) | 0;
|
||||
const v = c === "x" ? r : (r & 0x3) | 0x8;
|
||||
return v.toString(16);
|
||||
});
|
||||
}
|
||||
|
||||
function uniqueUuids(n, existing = new Set()) {
|
||||
const set = new Set(existing);
|
||||
while (set.size < n) set.add(genUuid());
|
||||
return Array.from(set);
|
||||
}
|
||||
|
||||
function main() {
|
||||
const { count, force, append } = parseArgs(process.argv);
|
||||
const target = path.resolve(__dirname, "../server/src/config/uuids.json");
|
||||
|
||||
let current = [];
|
||||
if (fs.existsSync(target)) {
|
||||
try {
|
||||
const raw = fs.readFileSync(target, "utf8");
|
||||
const arr = JSON.parse(raw);
|
||||
if (Array.isArray(arr)) current = arr.filter(x => typeof x === "string");
|
||||
} catch {}
|
||||
}
|
||||
|
||||
if (!force && !append && current.length > 0) {
|
||||
console.log(`uuids.json already has ${current.length} entries. Use --force to overwrite or --append to add.`);
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
let out = [];
|
||||
if (force) {
|
||||
out = uniqueUuids(count);
|
||||
} else if (append) {
|
||||
const needed = Math.max(count, current.length + count);
|
||||
const set = new Set(current);
|
||||
out = uniqueUuids(needed, set);
|
||||
} else {
|
||||
// initial write when empty
|
||||
out = uniqueUuids(count);
|
||||
}
|
||||
|
||||
fs.mkdirSync(path.dirname(target), { recursive: true });
|
||||
fs.writeFileSync(target, JSON.stringify(out, null, 2) + "\n", "utf8");
|
||||
|
||||
console.log(`Wrote ${out.length} UUIDs to ${path.relative(process.cwd(), target)}`);
|
||||
}
|
||||
|
||||
try {
|
||||
main();
|
||||
} catch (err) {
|
||||
console.error(err.message || err);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user