trouble-in-terror-town/node_modules/openupm-cli/lib/cmd-remove.js
Mikolaj 2bbacbea09 did some more work on networking and removed EOS in favor of LRM
did some more work on networking and removed EOS in favor of Light Reflective Mirror
2022-05-31 15:04:31 +02:00

82 lines
2.3 KiB
JavaScript

const { log } = require("./logger");
const {
env,
loadManifest,
parseEnv,
parseName,
saveManifest
} = require("./core");
const remove = async function(pkgs, options) {
if (!Array.isArray(pkgs)) pkgs = [pkgs];
// parse env
const envOk = await parseEnv(options, { checkPath: true });
if (!envOk) return 1;
// remove
const results = [];
for (const pkg of pkgs) results.push(await _remove(pkg));
const result = {
code: results.filter(x => x.code != 0).length > 0 ? 1 : 0,
dirty: results.filter(x => x.dirty).length > 0
};
// print manifest notice
if (result.dirty)
log.notice("", "please open Unity project to apply changes");
return result.code;
};
const _remove = async function(pkg) {
// dirty flag
let dirty = false;
// parse name
let { name, version } = parseName(pkg);
if (version) {
log.warn("", `please replace '${name}@${version}' with '${name}'`);
return { code: 1, dirty };
}
// load manifest
let manifest = loadManifest();
if (manifest === null) return { code: 1, dirty };
// not found array
let pkgsNotFound = [];
// remove from dependencies
if (manifest.dependencies) {
version = manifest.dependencies[name];
if (version) {
log.notice("manifest", `removed ${name}@${version}`);
delete manifest.dependencies[name];
dirty = true;
} else pkgsNotFound.push(pkg);
}
// remove from scopedRegistries
if (manifest.scopedRegistries) {
const filterEntry = x => {
let url = x.url || "";
if (url.endsWith("/")) url = url.slice(0, -1);
return url == env.registry;
};
let entires = manifest.scopedRegistries.filter(filterEntry);
if (entires.length > 0) {
let entry = entires[0];
const index = entry.scopes.indexOf(name);
if (index > -1) {
entry.scopes.splice(index, 1);
let scopesSet = new Set(entry.scopes);
scopesSet.add(env.namespace);
entry.scopes = Array.from(scopesSet).sort();
dirty = true;
}
}
}
// save manifest
if (dirty) {
if (!saveManifest(manifest)) return { code: 1, dirty };
}
if (pkgsNotFound.length) {
log.error("404", `package not found: ${pkgsNotFound.join(", ")}`);
return { code: 1, dirty };
}
return { code: 0, dirty };
};
module.exports = remove;