* Copyright (c) 2021 Huawei Device Co., Ltd.
* 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.
*/
"use strict";
const path = require("path");
const fs = require("fs");
const spawn = require('child_process').spawn;
let isWin = !1;
let isMac = !1;
let args = process.argv.splice(2);
let es2abc;
if (args[0].startsWith("es2abc=")) {
es2abc = args[0].replace("es2abc=", "");
args = args.splice(1);
} else {
const arkDir = path.resolve(__dirname);
if (fs.existsSync(path.join(arkDir, 'build-win'))) {
isWin = !0;
} else if (fs.existsSync(path.join(arkDir, 'build-mac'))) {
isMac = !0;
} else if (!fs.existsSync(path.join(arkDir, 'build'))) {
throw Error('find build fail').message;
}
if (isWin) {
es2abc = path.join(arkDir, 'build-win', 'bin', 'es2abc.exe');
} else if (isMac) {
es2abc = path.join(arkDir, 'build-mac', 'bin', 'es2abc');
} else {
es2abc = path.join(arkDir, 'build', 'bin', 'es2abc');
}
}
function callEs2abc(args) {
if (!fs.existsSync(es2abc)) {
throw Error('find arkcompiler fail').message;
}
let proc = spawn(`${es2abc}`, args);
proc.stderr.on('data', (data) => {
throw Error(`${data}`).message;
});
proc.stdout.on('data', (data) => {
process.stdout.write(`${data}`);
});
}
if (args.length == 1 && args[0] == "--bc-version") {
callEs2abc(args);
return;
}
let es2abcArgs = [];
es2abcArgs.push("--target-bc-version")
for (let index = 0 ; index < args.length; index += 2) {
if (args[index] == "--target-api-version") {
if (args[index + 1] == "8") {
process.stdout.write("0.0.0.2");
return;
} else {
es2abcArgs.push("--target-api-version", args[index + 1]);
}
} else if (args[index] == "--target-api-sub-version") {
es2abcArgs.push("--target-api-sub-version", args[index + 1]);
}
}
callEs2abc(es2abcArgs);