remote-abap-compiler
Version:
Remote ABAP compilation
88 lines (87 loc) • 3.79 kB
JavaScript
;
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;