@fewer/cli
Version:
The CLI to scaffold and perform operations for Fewer.
80 lines • 3.29 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const path_1 = __importDefault(require("path"));
const cli_ux_1 = __importDefault(require("cli-ux"));
const command_1 = require("@oclif/command");
const utils_1 = require("../utils");
const commonFlags_1 = __importDefault(require("../commonFlags"));
class Init extends command_1.Command {
async run() {
const adapter = await utils_1.prompt({
type: 'select',
message: 'Which database will you be connecting to?',
choices: ['postgres', 'mysql'],
});
const sourceType = await utils_1.prompt({
type: 'select',
message: 'Will your project be written in TypeScript or JavaScript?',
choices: ['TypeScript', 'JavaScript'],
default: 'TypeScript',
});
const useTypeScript = sourceType === 'TypeScript';
const src = await utils_1.prompt({
type: 'input',
message: 'Where will your source files be located?',
default: 'src',
});
const migrations = await utils_1.prompt({
type: 'input',
message: 'Where would you like your migrations to be stored?',
default: path_1.default.join(src, 'migrations/'),
});
const repositories = await utils_1.prompt({
type: 'input',
message: 'Where would you like your repositories to be stored?',
default: path_1.default.join(src, 'repositories/'),
});
let cjs = false;
if (!useTypeScript) {
cjs = await utils_1.prompt({
type: 'select',
message: 'Will your project use ES Modules, or CommonJS?',
choices: ['ES Modules', 'CommonJS'],
default: 'ES Modules',
});
}
cli_ux_1.default.action.start('Installing npm dependencies');
await utils_1.installPackages(this.warn, 'fewer', `@fewer/adapter-${adapter.toLowerCase()}`);
cli_ux_1.default.action.stop();
cli_ux_1.default.action.start('Creating files');
const extension = useTypeScript ? 'ts' : 'js';
await utils_1.createFile('db', path_1.default.join(src, `database.${extension}`), {
adapter,
}, cjs);
await utils_1.createDirectory(migrations);
await utils_1.createDirectory(repositories);
const fewerConfig = {
src,
migrations,
repositories,
schema: path_1.default.join(src, `schema.${extension}`),
databases: [path_1.default.join(src, `database.${extension}`)],
};
if (!useTypeScript) {
fewerConfig.typescript = false;
}
if (cjs) {
fewerConfig.cjs = true;
}
await utils_1.createFileWithContents('.fewerrc.json', JSON.stringify(fewerConfig, null, 2));
cli_ux_1.default.action.stop();
}
}
Init.description = 'Initializes fewer into an existing project.';
Init.flags = Object.assign({}, commonFlags_1.default);
Init.args = [];
exports.default = Init;
//# sourceMappingURL=init.js.map