create-nuxtus
Version:
npx command for generating a new Nuxtus boilerplate website.
46 lines • 1.69 kB
JavaScript
// https://github.com/directus/directus/blob/31a217595c3b9134bc334f300992027d3bfdf09e/api/src/cli/utils/create-env/index.ts
import { Liquid } from 'liquidjs';
import fs from 'fs';
import { nanoid } from 'nanoid';
import path from 'path';
import { promisify } from 'util';
import { v4 as uuid } from 'uuid';
const readFile = promisify(fs.readFile);
const writeFile = promisify(fs.writeFile);
const fchmod = promisify(fs.fchmod);
const open = promisify(fs.open);
const liquidEngine = new Liquid({
extname: '.liquid',
});
const defaults = {
security: {
KEY: uuid(),
SECRET: nanoid(32),
},
};
export default async function createEnv(client, credentials, directory, user) {
const config = {
...defaults,
database: {
DB_CLIENT: client,
},
user,
};
for (const [key, value] of Object.entries(credentials)) {
config.database[`DB_${key.toUpperCase()}`] = value;
}
const configAsStrings = {};
for (const [key, value] of Object.entries(config)) {
configAsStrings[key] = '';
for (const [envKey, envValue] of Object.entries(value)) {
configAsStrings[key] += `${envKey}="${envValue}"\n`;
}
}
configAsStrings['user'] =
`ADMIN_EMAIL="${user.email}"\nADMIN_PASSWORD="${user.password}"`;
const templateString = await readFile(path.join(process.cwd(), 'templates', 'env-directus.liquid'), 'utf8');
const text = await liquidEngine.parseAndRender(templateString, configAsStrings);
await writeFile(path.join(directory, '.env'), text);
await fchmod(await open(path.join(directory, '.env'), 'r+'), 0o640);
}
//# sourceMappingURL=create-env.js.map