agor
Version:
A Node CLI utility to launch an iOS simulator and navigate Safari to a specified page.
111 lines (105 loc) • 3.52 kB
JavaScript
;
var argv = require('minimist');
var childProcess = require('child_process');
var util = require('util');
var color = require('ansi-colors');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var argv__default = /*#__PURE__*/_interopDefaultLegacy(argv);
var childProcess__default = /*#__PURE__*/_interopDefaultLegacy(childProcess);
var util__default = /*#__PURE__*/_interopDefaultLegacy(util);
var color__default = /*#__PURE__*/_interopDefaultLegacy(color);
var __async$1 = (__this, __arguments, generator) => {
return new Promise((resolve, reject) => {
var fulfilled = (value) => {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
};
var rejected = (value) => {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
};
var step = (result) => {
return result.done ? resolve(result.value) : Promise.resolve(result.value).then(fulfilled, rejected);
};
step((generator = generator.apply(__this, __arguments)).next());
});
};
const exec = util__default['default'].promisify(childProcess__default['default'].exec);
function agor(args) {
return __async$1(this, null, function* () {
const deviceName = args.d || args.device || "iPhone 12";
const simulatorName = `agor-${deviceName}`.replace(/ /g, "").toLowerCase();
const address = args.a || args.address;
if (!address) {
console.log(color__default['default'].redBright.bold("\n \u{1F4F1} Agor needs an address for the iOS simulator to navigate to. \n"));
process.exit(1);
}
if (!/^https?:\/\/\w+(:[0-9]*)?(\.\w+)?$/.test(address)) {
console.log(color__default['default'].redBright.bold("\n \u{1F4F1} Agor requires a valid url. \n"));
process.exit(1);
}
yield createIfNotExist(simulatorName, deviceName);
yield startSequence(simulatorName, address);
});
}
function startSequence(simulatorName, url) {
return __async$1(this, null, function* () {
try {
yield exec(`xcrun simctl boot ${simulatorName}`);
} catch (e) {
yield exec(`xcrun simctl openurl ${simulatorName} ${url}`);
yield exec("open -a Simulator.app");
}
});
}
function createIfNotExist(simulatorName, deviceName) {
return __async$1(this, null, function* () {
const {stdout} = yield exec("xcrun simctl list");
const deviceExists = RegExp(simulatorName).test(stdout);
if (!deviceExists) {
console.log("Agor simulator does not exist. Creating now...");
yield exec(`xcrun simctl create ${simulatorName} "${deviceName}"`);
}
});
}
var __async = (__this, __arguments, generator) => {
return new Promise((resolve, reject) => {
var fulfilled = (value) => {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
};
var rejected = (value) => {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
};
var step = (result) => {
return result.done ? resolve(result.value) : Promise.resolve(result.value).then(fulfilled, rejected);
};
step((generator = generator.apply(__this, __arguments)).next());
});
};
const args = argv__default['default'](process.argv.slice(2));
function cli() {
return __async(this, null, function* () {
try {
agor(args);
} catch (e) {
console.log(e);
process.exit(1);
}
});
}
cli();