UNPKG

@syntest/init

Version:

The setup application of the SynTest Framework

89 lines (83 loc) 2.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getModuleCommand = void 0; /* * Copyright 2020-2023 Delft University of Technology and SynTest contributors * * This file is part of SynTest Framework - SynTest Core. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ const node_fs_1 = require("node:fs"); const path = require("node:path"); const module_1 = require("@syntest/module"); const shell = require("shelljs"); function getModuleCommand(tool, moduleManager) { const options = new Map(); options.set("module-name", { type: "string", group: "Create module options:", demandOption: true, }); return new module_1.Command(moduleManager, tool, "module", "Create a module for the syntest tool.", options, (arguments_) => { if (!shell.which("git")) { shell.echo("Sorry, this script requires git"); shell.exit(1); } if (!shell.which("npm")) { shell.echo("Sorry, this script requires npm"); shell.exit(1); } shell.exec("git clone git@github.com:syntest-framework/syntest-core-plugin-template.git"); shell.mv("syntest-core-plugin-template", arguments_.moduleName); shell.cd(arguments_.moduleName); shell.rm("-rf", ".git"); shell.exec("npm install"); (0, node_fs_1.writeFileSync)(path.join("lib", "index.ts"), getIndexFile(`./${arguments_.moduleName}`)); (0, node_fs_1.writeFileSync)(path.join("lib", `${arguments_.moduleName}.ts`), getModuleFile(arguments_.moduleName)); }); } exports.getModuleCommand = getModuleCommand; function getIndexFile(modulePath) { return ` export * as module from "${modulePath}"; `; } function getModuleFile(moduleName) { return ` import { Module } from "@syntest/module"; import { getTools } from "./tools"; export default class ${moduleName} extends Module { constructor() { super("${moduleName}", require("../package.json").version); } async prepare(): Promise<void> { // Optional: Add your preparation code here } async cleanup(): Promise<void> { // Optional: Add your cleanup code here } async getTools(): Promise<Tool[]> { return [ // Add your tools here ] } async getPlugins(): Promise<Plugin[]> { return [ // Add your plugins here ] } }; `; } //# sourceMappingURL=module.js.map