mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-09-28 13:13:37 +08:00
Bug: 370734442 No-Presubmit: true Change-Id: I7021b801e5bacd4ed33643651a53b8db20ccf8b0 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/5898986 Commit-Queue: Danil Somsikov <dsv@chromium.org> Reviewed-by: Simon Zünd <szuend@chromium.org>
107 lines
3.0 KiB
JavaScript
107 lines
3.0 KiB
JavaScript
"use strict";
|
|
var __read = (this && this.__read) || function (o, n) {
|
|
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
if (!m) return o;
|
|
var i = m.call(o), r, ar = [], e;
|
|
try {
|
|
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
}
|
|
catch (error) { e = { error: error }; }
|
|
finally {
|
|
try {
|
|
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
}
|
|
finally { if (e) throw e.error; }
|
|
}
|
|
return ar;
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.parseCliArguments = void 0;
|
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
var util_js_1 = require("./util.js");
|
|
/**
|
|
* Parses CLI arguments.
|
|
* @param args
|
|
*/
|
|
function parseCliArguments(args) {
|
|
var result = { _: [] };
|
|
for (var i = 0; i < args.length; i++) {
|
|
var arg = args[i];
|
|
// Parses: "--key", "-k", "--key=value", "--key value"
|
|
if (arg.startsWith("-")) {
|
|
// Parses: "--key=value"
|
|
if (arg.includes("=")) {
|
|
var _a = __read(arg.split("="), 2), key = _a[0], value = _a[1];
|
|
assignValue(result, key, value);
|
|
}
|
|
// Parses: "--key value", "--key", "-k
|
|
else {
|
|
var key = transformKey(arg);
|
|
// Parses: "--key value"
|
|
if (i < args.length - 1) {
|
|
var value = args[i + 1];
|
|
if (!value.startsWith("-")) {
|
|
assignValue(result, key, value);
|
|
i++;
|
|
continue;
|
|
}
|
|
}
|
|
// Parses: "--key", "-k"
|
|
assignValue(result, key, true);
|
|
}
|
|
}
|
|
// Parses: "arg1", "arg2", ...
|
|
else {
|
|
result._.push(arg);
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
exports.parseCliArguments = parseCliArguments;
|
|
/**
|
|
* Transform a string to a primitive type.
|
|
* @param value
|
|
*/
|
|
function transformValue(value) {
|
|
if (typeof value === "boolean") {
|
|
return value;
|
|
}
|
|
else if (!isNaN(Number(value))) {
|
|
return Number(value);
|
|
}
|
|
else if (value === "true" || value === "false") {
|
|
return value === "true";
|
|
}
|
|
return value;
|
|
}
|
|
/**
|
|
* Transform a key by removing the first "-" characters.
|
|
* @param key
|
|
*/
|
|
function transformKey(key) {
|
|
return (0, util_js_1.dashToCamelCase)(key.replace(/^-*/g, ""));
|
|
}
|
|
/**
|
|
* Assigns a value on a specific key and transforms the value at the same time.
|
|
* @param obj
|
|
* @param key
|
|
* @param value
|
|
*/
|
|
function assignValue(obj, key, value) {
|
|
// The key could be "nested.key"
|
|
var keys = transformKey(key).split(".");
|
|
keys.forEach(function (k, i) {
|
|
// Assign the final value
|
|
if (i >= keys.length - 1) {
|
|
obj[k] = transformValue(value);
|
|
}
|
|
// Create nested objects
|
|
else {
|
|
if (!(k in obj)) {
|
|
obj[k] = {};
|
|
}
|
|
obj = obj[k];
|
|
}
|
|
});
|
|
}
|