@nestbox-ai/cli
Version:
The cli tools that helps developers to build agents
83 lines • 4.28 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.resolveProject = resolveProject;
const ora_1 = __importDefault(require("ora"));
const config_1 = require("./config");
function resolveProject(projectsApi, options) {
return __awaiter(this, void 0, void 0, function* () {
var _a, _b, _c;
// Default to showing spinner if not specified
const showSpinner = options.showSpinner !== false;
const spinner = showSpinner ? (0, ora_1.default)('Resolving project...').start() : null;
try {
const projectsResponse = yield projectsApi.projectControllerGetAllProjects();
const allProjects = (_b = (_a = projectsResponse.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.projects;
if (!allProjects || allProjects.length === 0) {
if (spinner)
spinner.fail('No projects found.');
throw new Error('No projects found');
}
let projectId = options.project;
let projectName = '';
if (projectId) {
const byId = allProjects.find((p) => p.id === projectId);
const byName = allProjects.find((p) => p.name === projectId);
if (byId) {
projectName = byId.name;
projectId = byId.id;
}
else if (byName) {
projectName = byName.name;
projectId = byName.id;
}
else {
if (spinner)
spinner.fail(`Project not found with ID or name: ${projectId}`);
throw new Error(`Project not found with ID or name: ${projectId}`);
}
if (spinner)
spinner.succeed(`Using project: ${projectName} (ID: ${projectId})`);
}
else {
const config = (0, config_1.readNestboxConfig)();
const defaultProjectName = (_c = config.projects) === null || _c === void 0 ? void 0 : _c.default;
if (!defaultProjectName) {
if (spinner)
spinner.fail('No project specified and no default project set. Please provide a project ID or set a default project.');
throw new Error('No project specified and no default project set');
}
const defaultProject = allProjects.find((p) => p.name === defaultProjectName);
if (!defaultProject) {
if (spinner)
spinner.fail(`Default project "${defaultProjectName}" not found.`);
throw new Error(`Default project "${defaultProjectName}" not found.`);
}
projectId = defaultProject.id;
projectName = defaultProject.name;
if (spinner)
spinner.succeed(`Using default project: ${projectName} (ID: ${projectId})`);
}
return { id: projectId, name: projectName };
}
catch (error) {
if (spinner && spinner.isSpinning) {
// If spinner was already stopped with fail, we don't need to fail it again
spinner.fail('Failed to resolve project');
}
throw error;
}
});
}
//# sourceMappingURL=project.js.map