mirror of
https://github.com/toeverything/AFFiNE.git
synced 2024-12-22 10:21:37 +03:00
62 lines
1.5 KiB
JavaScript
62 lines
1.5 KiB
JavaScript
import { execSync } from 'node:child_process';
|
|
import { generateKeyPairSync } from 'node:crypto';
|
|
import fs from 'node:fs';
|
|
import path from 'node:path';
|
|
|
|
const SELF_HOST_CONFIG_DIR = '/root/.affine/config';
|
|
|
|
function generateConfigFile() {
|
|
const content = fs.readFileSync('./dist/config/affine.js', 'utf-8');
|
|
return content.replace(
|
|
/(^\/\/#.*$)|(^\/\/\s+TODO.*$)|("use\sstrict";?)|(^.*eslint-disable.*$)/gm,
|
|
''
|
|
);
|
|
}
|
|
|
|
function generatePrivateKey() {
|
|
const key = generateKeyPairSync('ec', {
|
|
namedCurve: 'prime256v1',
|
|
}).privateKey.export({
|
|
type: 'sec1',
|
|
format: 'pem',
|
|
});
|
|
|
|
if (key instanceof Buffer) {
|
|
return key.toString('utf-8');
|
|
}
|
|
|
|
return key;
|
|
}
|
|
|
|
/**
|
|
* @type {Array<{ to: string; generator: () => string }>}
|
|
*/
|
|
const configFiles = [
|
|
{ to: 'affine.js', generator: generateConfigFile },
|
|
{ to: 'private.key', generator: generatePrivateKey },
|
|
];
|
|
|
|
function prepare() {
|
|
fs.mkdirSync(SELF_HOST_CONFIG_DIR, { recursive: true });
|
|
|
|
for (const { to, generator } of configFiles) {
|
|
const targetFilePath = path.join(SELF_HOST_CONFIG_DIR, to);
|
|
if (!fs.existsSync(targetFilePath)) {
|
|
console.log(`creating config file [${targetFilePath}].`);
|
|
fs.writeFileSync(targetFilePath, generator(), 'utf-8');
|
|
}
|
|
}
|
|
}
|
|
|
|
function runPredeployScript() {
|
|
console.log('running predeploy script.');
|
|
execSync('yarn predeploy', {
|
|
encoding: 'utf-8',
|
|
env: process.env,
|
|
stdio: 'inherit',
|
|
});
|
|
}
|
|
|
|
prepare();
|
|
runPredeployScript();
|