"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
function _indentString() {
const data = _interopRequireDefault(require("indent-string"));
_indentString = function () {
return data;
};
return data;
}
function _qrcodeTerminal() {
const data = _interopRequireDefault(require("qrcode-terminal"));
_qrcodeTerminal = function () {
return data;
};
return data;
}
function _xdl() {
const data = require("@expo/xdl");
_xdl = function () {
return data;
};
return data;
}
function _CommandError() {
const data = _interopRequireDefault(require("./CommandError"));
_CommandError = function () {
return data;
};
return data;
}
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function addOptions(program) {
program.option('-a, --android', 'Opens your app in Expo on a connected Android device').option('-i, --ios', 'Opens your app in Expo in a currently running iOS simulator on your computer').option('-w, --web', 'Opens your app in a web browser').option('-m, --host [mode]', 'lan (default), tunnel, localhost. Type of host to use. "tunnel" allows you to view your link on other networks').option('--tunnel', 'Same as --host tunnel').option('--lan', 'Same as --host lan').option('--localhost', 'Same as --host localhost').option('--dev', 'Turns dev flag on').option('--no-dev', 'Turns dev flag off').option('--minify', 'Turns minify flag on').option('--no-minify', 'Turns minify flag off').option('--https', 'To start webpack with https protocol').option('--no-https', 'To start webpack with http protocol');
}
function hasBooleanArg(rawArgs, argName) {
return rawArgs.includes('--' + argName) || rawArgs.includes('--no-' + argName);
}
function getBooleanArg(rawArgs, argName) {
if (rawArgs.includes('--' + argName)) {
return true;
} else {
return false;
}
}
async function optsAsync(projectDir, options) {
var opts = await _xdl().ProjectSettings.readAsync(projectDir);
if ([options.host, options.lan, options.localhost, options.tunnel].filter(i => i).length > 1) {
throw new (_CommandError().default)('BAD_ARGS', 'Specify at most one of --host, --tunnel, --lan, and --localhost');
}
if (options.host) {
opts.hostType = options.host;
} else if (options.tunnel) {
opts.hostType = 'tunnel';
} else if (options.lan) {
opts.hostType = 'lan';
} else if (options.localhost) {
opts.hostType = 'localhost';
} else {
opts.hostType = 'lan';
}
let rawArgs = options.parent.rawArgs;
if (hasBooleanArg(rawArgs, 'dev')) {
opts.dev = getBooleanArg(rawArgs, 'dev');
}
if (hasBooleanArg(rawArgs, 'minify')) {
opts.minify = getBooleanArg(rawArgs, 'minify');
}
if (hasBooleanArg(rawArgs, 'https')) {
opts.https = getBooleanArg(rawArgs, 'https');
}
await _xdl().ProjectSettings.setAsync(projectDir, opts);
return opts;
}
function printQRCode(url) {
_qrcodeTerminal().default.generate(url, code => console.log(`${(0, _indentString().default)(code, 2)}\n`));
}
async function handleMobileOptsAsync(projectDir, options) {
if (options.android) {
if (options.webOnly) {
await _xdl().Android.openWebProjectAsync(projectDir);
} else {
await _xdl().Android.openProjectAsync(projectDir);
}
}
if (options.ios) {
if (options.webOnly) {
await _xdl().Simulator.openWebProjectAsync(projectDir);
} else {
await _xdl().Simulator.openProjectAsync(projectDir);
}
}
if (options.web) {
await _xdl().Webpack.openAsync(projectDir);
}
return !!options.android || !!options.ios;
}
var _default = {
addOptions,
handleMobileOptsAsync,
printQRCode,
optsAsync
};
exports.default = _default;
//# sourceMappingURL=__sourcemaps__/urlOpts.js.map