@sprucelabs/spruce-cli
Version:
Command line interface for building Spruce skills.
71 lines • 2.89 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const spruce_skill_utils_1 = require("@sprucelabs/spruce-skill-utils");
const NodePackageManager_1 = __importDefault(require("../packageManager/NodePackageManager"));
const GoPackageManager_1 = require("./GoPackageManager");
class PkgService extends spruce_skill_utils_1.PkgService {
packageManager;
constructor(cwd, commandService) {
super(cwd);
const PackageManagerClass = spruce_skill_utils_1.diskUtil.detectProjectLanguage(cwd) === 'go'
? GoPackageManager_1.GoPackageManager
: NodePackageManager_1.default;
this.packageManager = new PackageManagerClass({
cwd,
commandService,
pkgService: this,
});
}
async install(pkg, options) {
const filtered = this.filterOutWorkspaceSiblings(pkg);
if (Array.isArray(filtered) && filtered.length === 0) {
return { totalInstalled: 0 };
}
return this.packageManager.installDependencies(filtered, options);
}
filterOutWorkspaceSiblings(pkg) {
if (!pkg) {
return pkg;
}
const siblings = this.getWorkspaceSiblingNames();
const packages = Array.isArray(pkg) ? pkg : [pkg];
const filtered = packages.filter((p) => !siblings.includes(p));
return Array.isArray(pkg) ? filtered : filtered[0];
}
getWorkspaceSiblingNames() {
const packagesDir = path_1.default.dirname(this.cwd);
if (path_1.default.basename(packagesDir) !== 'packages') {
return [];
}
const monorepoRoot = path_1.default.dirname(packagesDir);
const rootPkgPath = path_1.default.join(monorepoRoot, 'package.json');
if (!spruce_skill_utils_1.diskUtil.doesFileExist(rootPkgPath)) {
return [];
}
const siblingDirs = fs_1.default.readdirSync(packagesDir);
const names = [];
for (const dir of siblingDirs) {
const pkgPath = path_1.default.join(packagesDir, dir, 'package.json');
if (spruce_skill_utils_1.diskUtil.doesFileExist(pkgPath)) {
const siblingPkg = JSON.parse(spruce_skill_utils_1.diskUtil.readFile(pkgPath));
if (siblingPkg.name) {
names.push(siblingPkg.name);
}
}
}
return names;
}
getSkillNamespace() {
return this.get('skill.namespace');
}
async uninstall(pkg) {
return this.packageManager.uninstallDependencies?.(pkg);
}
}
exports.default = PkgService;
//# sourceMappingURL=PkgService.js.map