UNPKG

remote-abap-compiler

Version:
88 lines (87 loc) 3.79 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const command_1 = require("@oclif/command"); const fs_1 = require("fs"); const read_1 = __importDefault(require("read")); const request_1 = require("../compiler/request"); class Compile extends command_1.Command { run() { return __awaiter(this, void 0, void 0, function* () { const { args, flags } = this.parse(Compile); fs_1.readFile(args.file, "utf8", (err, buffer) => { if (err) { throw err; } this.requirePassword(flags.url, flags.user, flags.client, flags.password, (url, user, client, password) => { this.connectAndCompile(flags.url, flags.user, flags.client, password, buffer); }); }); }); } requirePassword(url, user, client, password, callback) { if (!password) { read_1.default({ prompt: "Password: ", silent: true }, (err, pw) => { if (!err) { callback(url, user, client, pw); } else { console.log("Cancelled"); } }); } else { callback(url, user, client, password); } } connectAndCompile(url, user, client, password, code) { return __awaiter(this, void 0, void 0, function* () { const req = new request_1.CompilationRequest(url, user, client, password); try { const result = yield req.compile(code); if (result.success) { if (result.output) { console.log(result.output); } } else { if (result.errors) { result.errors.forEach((error) => { console.log("Line: ", error.line, " Offset: ", error.offset, " Error: \"", error.errorMessage, "\"."); }); } else { console.log("Internal error: ", result.className); } } } catch (error) { console.error(error); } }); } } Compile.description = "Compile an ABAP source file"; Compile.examples = [ `$ abapc compile -u https://server_name:port_number -u user file.abap `, ]; Compile.flags = { client: command_1.flags.string({ char: "c", description: "ABAP client", required: true }), help: command_1.flags.help({ char: "h" }), password: command_1.flags.string({ char: "p", description: "server password" }), url: command_1.flags.string({ char: "u", description: "server url", required: true }), user: command_1.flags.string({ char: "n", description: "username", required: true }), }; Compile.args = [{ name: "file" }]; exports.default = Compile;