UNPKG

@sprucelabs/spruce-cli

Version:

Command line interface for building Spruce skills.

71 lines 2.89 kB
"use strict"; 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