UNPKG

abapmerge

Version:

Merge ABAP INCLUDEs into single file

163 lines 6.86 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __values = (this && this.__values) || function(o) { var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; if (m) return m.call(o); if (o && typeof o.length === "number") return { next: function () { if (o && i >= o.length) o = void 0; return { value: o && o[i++], done: !o }; } }; throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Logic = void 0; var fs = __importStar(require("fs")); var path = __importStar(require("path")); var file_1 = __importDefault(require("./file")); var file_list_1 = __importDefault(require("./file_list")); var merge_1 = __importDefault(require("./merge")); var commander_1 = require("commander"); var package_json_1 = __importDefault(require("../package.json")); var Logic = /** @class */ (function () { function Logic() { } Logic.isTextFile = function (filepath) { return Logic.textFiles.has(path.extname(filepath).toLowerCase()); }; Logic.readFiles = function (dir, pre) { var e_1, _a; if (pre === void 0) { pre = ""; } var files = fs.readdirSync(dir); var list = new file_list_1.default(); try { for (var files_1 = __values(files), files_1_1 = files_1.next(); !files_1_1.done; files_1_1 = files_1.next()) { var file = files_1_1.value; var filepath = path.join(dir, file); if (fs.lstatSync(filepath).isFile()) { if (Logic.isTextFile(filepath)) { var contents = fs .readFileSync(filepath, "utf8") .replace(/\t/g, " ") // remove tabs .replace(/\r/g, ""); // unify EOL list.push(new file_1.default(file, contents)); } else { var buffer = fs.readFileSync(filepath); list.push(new file_1.default(file, buffer)); } } else { list.concat(this.readFiles(filepath, path.join(pre, file))); } } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (files_1_1 && !files_1_1.done && (_a = files_1.return)) _a.call(files_1); } finally { if (e_1) throw e_1.error; } } return list; }; Logic.parseArgs = function (args) { var commander = new commander_1.Command(); commander .storeOptionsAsProperties(false) .description(package_json_1.default.description) .version(package_json_1.default.version) .option("-f, --skip-fugr", "ignore unused function groups", false) .option("-o, --output <file>", "output to a file (instead of stdout)") .option("--without-footer", "do not append footers", false) .option("--allow-unused", "allow unused files", false) .option("-c, --change-report-name <newreportname>", "changes report name in REPORT clause in source code") .arguments("<entrypoint>"); commander.exitOverride(function (err) { if (err.code === "commander.missingArgument") { throw Error("Specify entrypoint file name"); } process.exit(err.exitCode); }); commander.parse(args); if (!commander.args.length) { throw Error("Specify entrypoint file name"); } else if (commander.args.length > 1) { throw Error("Specify just one entrypoint"); } var entrypoint = commander.args[0]; var entryDir = path.dirname(entrypoint); var entryFilename = path.basename(entrypoint); var cmdOpts = commander.opts(); return { entryDir: entryDir, entryFilename: entryFilename, skipFUGR: cmdOpts.skipFugr, noFooter: cmdOpts.withoutFooter, allowUnused: cmdOpts.allowUnused, newReportName: cmdOpts.changeReportName, outputFile: cmdOpts.output, }; }; Logic.run = function (args) { try { var output = ""; var parsedArgs = Logic.parseArgs(args); var entrypoint = path.join(parsedArgs.entryDir, parsedArgs.entryFilename); if (!fs.existsSync(entrypoint)) { throw new Error("File \"".concat(entrypoint, "\" does not exist")); } var entryObjectName = parsedArgs.entryFilename.split(".")[0]; output = merge_1.default.merge(Logic.readFiles(parsedArgs.entryDir), entryObjectName, { skipFUGR: parsedArgs.skipFUGR, newReportName: parsedArgs.newReportName, allowUnused: parsedArgs.allowUnused, appendAbapmergeMarker: parsedArgs.noFooter === false, }); if (parsedArgs.outputFile) { fs.writeFileSync(parsedArgs.outputFile, output, "utf-8"); } else { process.stdout.write(output); } if (output === undefined) throw new Error("output undefined, hmm?"); return 0; } catch (e) { process.stderr.write(e.message || e.toString()); return 1; } }; Logic.textFiles = new Set([".abap", ".xml", ".css", ".js"]); return Logic; }()); exports.Logic = Logic; //# sourceMappingURL=cli.js.map