add generate key script

This commit is contained in:
b1ek 2023-02-19 00:34:39 +10:00
parent e4edb2f46d
commit 9e9e8149cc
Signed by: blek
GPG Key ID: 14546221E3595D0C
1 changed files with 46 additions and 0 deletions

46
scripts/generate_key.js Normal file
View File

@ -0,0 +1,46 @@
const crypto = require('crypto');
const path = require('path');
const args = require('args-parser')(process.argv);
const fs = require('fs');
let key = crypto.randomBytes(256).toString('base64');
let dotenv = path.resolve('.env');
if (args['help']) {
console.log(path.basename(__filename) + ' [--key-only] [--env|-e] [--set-key] [--dry-run]');
console.log('\n' +
' --help: Display this help\n' +
' --key-only: Generate key only and put it in stdout\n' +
' --env -e: Specify an env file\n' +
' --set-key: Specify your key\n' +
' --dry-run: Don\'t write anything, just do the thing'
)
}
if (args['key-only']) {
console.log(key);
process.exit(0);
}
if (args['env'] || args['e']) {
dotenv = args['env'] ? args['env'] : args['e'];
}
if (args['set-key']) {
key = args['set-key'];
}
const file = fs.readFileSync(dotenv).toString('utf8');
let lines = file.split('\n');
for (let i = 0; i != lines.length; i++) {
let line = lines[i];
if (line.startsWith('APP_KEY=')) {
lines[i] = 'APP_KEY=' + key;
}
}
const newfile = lines.join('\n');
if (!args['dry-run']) {
fs.writeFileSync(dotenv, newfile);
}