UNPKG

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
#!/usr/bin/env node 'use strict'; 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();