@neo-one/server-plugin-project
Version:
NEO•ONE server plugin for project functionality.
57 lines (55 loc) • 11.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const smart_contract_compiler_1 = require("@neo-one/smart-contract-compiler");
const utils_1 = require("@neo-one/utils");
const fs = tslib_1.__importStar(require("fs-extra"));
const json_file_plus_1 = tslib_1.__importDefault(require("json-file-plus"));
const path = tslib_1.__importStar(require("path"));
const utils_2 = require("./utils");
exports.initDataFile = async ({ folder, name, data, cli }) => {
const filePath = path.resolve(folder, name);
await fs.ensureDir(folder);
const createdUpdated = fs.existsSync(filePath) ? 'updated' : 'created';
await fs.writeFile(filePath, JSON.stringify(JSON.parse(data), null, 2));
cli.print(`${createdUpdated} ${name} at ${filePath}.`);
};
exports.initCommand = ({ cli }) => cli.vorpal.command('init', 'Initialize neo-one in the current directory.').action(async () => {
const cwd = process.cwd();
const projectConfig = await utils_2.loadProjectConfig(cwd);
const relativeConfig = Object.assign({}, projectConfig, { paths: Object.assign({}, projectConfig.paths, { contracts: path.relative(process.cwd(), projectConfig.paths.contracts), generated: path.relative(process.cwd(), projectConfig.paths.generated) }) });
const tsconfigPath = path.resolve(relativeConfig.paths.contracts, 'tsconfig.json');
const contractsPath = path.dirname(tsconfigPath);
const tsData = {
compilerOptions: Object.assign({}, smart_contract_compiler_1.COMPILER_OPTIONS, { target: 'esnext', module: 'esnext', moduleResolution: 'node', jsx: 'react', plugins: [
{
name: '@neo-one/smart-contract-typescript-plugin',
},
] }),
};
await Promise.all([
exports.initDataFile({ folder: projectConfig.paths.contracts, name: 'tsconfig.json', data: JSON.stringify(tsData), cli }),
exports.initDataFile({ folder: cwd, name: '.onerc', data: JSON.stringify(relativeConfig), cli }),
]);
if (projectConfig.codegen.framework === 'none') {
cli.print('Unable to determine project framework, please specify it in .onerc');
}
const rootTsConfigPath = path.resolve(cwd, 'tsconfig.json');
const exists = await fs.pathExists(rootTsConfigPath);
if (exists) {
const file = await json_file_plus_1.default(rootTsConfigPath);
const currentExcludeIn = await file.get('exclude');
const currentExclude = new Set(currentExcludeIn);
file.set({
exclude: [
...currentExclude.add(utils_1.normalizePath(path.relative(cwd, path.join(projectConfig.paths.contracts, '*.ts')))),
],
});
await file.save();
cli.print('Added contracts directory to root tsconfig exclude.');
}
else {
cli.print(`Did not find root tsconfig. If you add TypeScript to your project, make sure to add the NEO•ONE contracts directory (${contractsPath}) to the "exclude" section of your root tsconfig.`);
}
});
//# sourceMappingURL=data:application/json;charset=utf8;base64,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LElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEtBQUssTUFBTSxFQUFFO1FBQzlDLEdBQUcsQ0FBQyxLQUFLLENBQUMsb0VBQW9FLENBQUMsQ0FBQztLQUNqRjtJQUVELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDNUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDckQsSUFBSSxNQUFNLEVBQUU7UUFDVixNQUFNLElBQUksR0FBRyxNQUFNLHdCQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM5QyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuRCxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsQ0FBUyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxHQUFHLENBQUM7WUFDUCxPQUFPLEVBQUU7Z0JBQ1AsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLHFCQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDM0c7U0FDRixDQUFDLENBQUM7UUFDSCxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQixHQUFHLENBQUMsS0FBSyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7S0FDbEU7U0FBTTtRQUNMLEdBQUcsQ0FBQyxLQUFLLENBQ1Asd0hBQXdILGFBQWEsbURBQW1ELENBQ3pMLENBQUM7S0FDSDtBQUNILENBQUMsQ0FBQyxDQUFDIiwiZmlsZSI6Im5lby1vbmUtc2VydmVyLXBsdWdpbi1wcm9qZWN0L3NyYy9pbml0Q29tbWFuZC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEludGVyYWN0aXZlQ0xJQXJncyB9IGZyb20gJ0BuZW8tb25lL3NlcnZlci1wbHVnaW4nO1xuaW1wb3J0IHsgQ09NUElMRVJfT1BUSU9OUyB9IGZyb20gJ0BuZW8tb25lL3NtYXJ0LWNvbnRyYWN0LWNvbXBpbGVyJztcbmltcG9ydCB7IG5vcm1hbGl6ZVBhdGggfSBmcm9tICdAbmVvLW9uZS91dGlscyc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbWF0Y2gtZGVmYXVsdC1leHBvcnQtbmFtZVxuaW1wb3J0IGpzb25GaWxlIGZyb20gJ2pzb24tZmlsZS1wbHVzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBsb2FkUHJvamVjdENvbmZpZyB9IGZyb20gJy4vdXRpbHMnO1xuXG5pbnRlcmZhY2UgSW5pdERhdGFGaWxlT3B0cyB7XG4gIHJlYWRvbmx5IGZvbGRlcjogc3RyaW5nO1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgcmVhZG9ubHkgZGF0YTogc3RyaW5nO1xuICByZWFkb25seSBjbGk6IEludGVyYWN0aXZlQ0xJQXJnc1snY2xpJ107XG59XG5leHBvcnQgY29uc3QgaW5pdERhdGFGaWxlID0gYXN5bmMgKHsgZm9sZGVyLCBuYW1lLCBkYXRhLCBjbGkgfTogSW5pdERhdGFGaWxlT3B0cykgPT4ge1xuICBjb25zdCBmaWxlUGF0aCA9IHBhdGgucmVzb2x2ZShmb2xkZXIsIG5hbWUpO1xuICBhd2FpdCBmcy5lbnN1cmVEaXIoZm9sZGVyKTtcbiAgY29uc3QgY3JlYXRlZFVwZGF0ZWQgPSBmcy5leGlzdHNTeW5jKGZpbGVQYXRoKSA/ICd1cGRhdGVkJyA6ICdjcmVhdGVkJztcbiAgYXdhaXQgZnMud3JpdGVGaWxlKFxuICAgIGZpbGVQYXRoLFxuICAgIEpTT04uc3RyaW5naWZ5KFxuICAgICAgSlNPTi5wYXJzZShkYXRhKSxcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1udWxsLWtleXdvcmRcbiAgICAgIG51bGwsXG4gICAgICAyLFxuICAgICksXG4gICk7XG4gIGNsaS5wcmludChgJHtjcmVhdGVkVXBkYXRlZH0gJHtuYW1lfSBhdCAke2ZpbGVQYXRofS5gKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpbml0Q29tbWFuZCA9ICh7IGNsaSB9OiBJbnRlcmFjdGl2ZUNMSUFyZ3MpID0+XG4gIGNsaS52b3JwYWwuY29tbWFuZCgnaW5pdCcsICdJbml0aWFsaXplIG5lby1vbmUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LicpLmFjdGlvbihhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgY3dkID0gcHJvY2Vzcy5jd2QoKTtcbiAgICBjb25zdCBwcm9qZWN0Q29uZmlnID0gYXdhaXQgbG9hZFByb2plY3RDb25maWcoY3dkKTtcbiAgICBjb25zdCByZWxhdGl2ZUNvbmZpZyA9IHtcbiAgICAgIC4uLnByb2plY3RDb25maWcsXG4gICAgICBwYXRoczoge1xuICAgICAgICAuLi5wcm9qZWN0Q29uZmlnLnBhdGhzLFxuICAgICAgICBjb250cmFjdHM6IHBhdGgucmVsYXRpdmUocHJvY2Vzcy5jd2QoKSwgcHJvamVjdENvbmZpZy5wYXRocy5jb250cmFjdHMpLFxuICAgICAgICBnZW5lcmF0ZWQ6IHBhdGgucmVsYXRpdmUocHJvY2Vzcy5jd2QoKSwgcHJvamVjdENvbmZpZy5wYXRocy5nZW5lcmF0ZWQpLFxuICAgICAgfSxcbiAgICB9O1xuICAgIGNvbnN0IHRzY29uZmlnUGF0aCA9IHBhdGgucmVzb2x2ZShyZWxhdGl2ZUNvbmZpZy5wYXRocy5jb250cmFjdHMsICd0c2NvbmZpZy5qc29uJyk7XG4gICAgY29uc3QgY29udHJhY3RzUGF0aCA9IHBhdGguZGlybmFtZSh0c2NvbmZpZ1BhdGgpO1xuXG4gICAgY29uc3QgdHNEYXRhID0ge1xuICAgICAgY29tcGlsZXJPcHRpb25zOiB7XG4gICAgICAgIC4uLkNPTVBJTEVSX09QVElPTlMsXG4gICAgICAgIHRhcmdldDogJ2VzbmV4dCcsXG4gICAgICAgIG1vZHVsZTogJ2VzbmV4dCcsXG4gICAgICAgIG1vZHVsZVJlc29sdXRpb246ICdub2RlJyxcbiAgICAgICAganN4OiAncmVhY3QnLFxuICAgICAgICBwbHVnaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0BuZW8tb25lL3NtYXJ0LWNvbnRyYWN0LXR5cGVzY3JpcHQtcGx1Z2luJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgaW5pdERhdGFGaWxlKHsgZm9sZGVyOiBwcm9qZWN0Q29uZmlnLnBhdGhzLmNvbnRyYWN0cywgbmFtZTogJ3RzY29uZmlnLmpzb24nLCBkYXRhOiBKU09OLnN0cmluZ2lmeSh0c0RhdGEpLCBjbGkgfSksXG4gICAgICBpbml0RGF0YUZpbGUoeyBmb2xkZXI6IGN3ZCwgbmFtZTogJy5vbmVyYycsIGRhdGE6IEpTT04uc3RyaW5naWZ5KHJlbGF0aXZlQ29uZmlnKSwgY2xpIH0pLFxuICAgIF0pO1xuXG4gICAgaWYgKHByb2plY3RDb25maWcuY29kZWdlbi5mcmFtZXdvcmsgPT09ICdub25lJykge1xuICAgICAgY2xpLnByaW50KCdVbmFibGUgdG8gZGV0ZXJtaW5lIHByb2plY3QgZnJhbWV3b3JrLCBwbGVhc2Ugc3BlY2lmeSBpdCBpbiAub25lcmMnKTtcbiAgICB9XG5cbiAgICBjb25zdCByb290VHNDb25maWdQYXRoID0gcGF0aC5yZXNvbHZlKGN3ZCwgJ3RzY29uZmlnLmpzb24nKTtcbiAgICBjb25zdCBleGlzdHMgPSBhd2FpdCBmcy5wYXRoRXhpc3RzKHJvb3RUc0NvbmZpZ1BhdGgpO1xuICAgIGlmIChleGlzdHMpIHtcbiAgICAgIGNvbnN0IGZpbGUgPSBhd2FpdCBqc29uRmlsZShyb290VHNDb25maWdQYXRoKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRFeGNsdWRlSW4gPSBhd2FpdCBmaWxlLmdldCgnZXhjbHVkZScpO1xuICAgICAgY29uc3QgY3VycmVudEV4Y2x1ZGUgPSBuZXcgU2V0PHN0cmluZz4oY3VycmVudEV4Y2x1ZGVJbik7XG4gICAgICBmaWxlLnNldCh7XG4gICAgICAgIGV4Y2x1ZGU6IFtcbiAgICAgICAgICAuLi5jdXJyZW50RXhjbHVkZS5hZGQobm9ybWFsaXplUGF0aChwYXRoLnJlbGF0aXZlKGN3ZCwgcGF0aC5qb2luKHByb2plY3RDb25maWcucGF0aHMuY29udHJhY3RzLCAnKi50cycpKSkpLFxuICAgICAgICBdLFxuICAgICAgfSk7XG4gICAgICBhd2FpdCBmaWxlLnNhdmUoKTtcbiAgICAgIGNsaS5wcmludCgnQWRkZWQgY29udHJhY3RzIGRpcmVjdG9yeSB0byByb290IHRzY29uZmlnIGV4Y2x1ZGUuJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNsaS5wcmludChcbiAgICAgICAgYERpZCBub3QgZmluZCByb290IHRzY29uZmlnLiBJZiB5b3UgYWRkIFR5cGVTY3JpcHQgdG8geW91ciBwcm9qZWN0LCBtYWtlIHN1cmUgdG8gYWRkIHRoZSBORU/igKJPTkUgY29udHJhY3RzIGRpcmVjdG9yeSAoJHtjb250cmFjdHNQYXRofSkgdG8gdGhlIFwiZXhjbHVkZVwiIHNlY3Rpb24gb2YgeW91ciByb290IHRzY29uZmlnLmAsXG4gICAgICApO1xuICAgIH1cbiAgfSk7XG4iXX0=