@patchworkdev/pdk
Version:
Patchwork Development Kit
42 lines (41 loc) • 1.68 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getProjectNameFromConfig = getProjectNameFromConfig;
exports.getDockerContainerName = getDockerContainerName;
exports.getPonderContainerName = getPonderContainerName;
const promises_1 = __importDefault(require("fs/promises"));
const lodash_1 = __importDefault(require("lodash"));
const path_1 = __importDefault(require("path"));
async function getProjectNameFromConfig(configPath) {
const content = await promises_1.default.readFile(configPath, 'utf8');
try {
if (configPath.endsWith('.json')) {
const config = JSON.parse(content);
return config.name;
}
else {
const match = content.match(/name:\s*["'](.+?)["']/);
if (match && match[1]) {
return match[1];
}
}
throw new Error('Project name not found in config file');
}
catch (error) {
console.error(`Error reading project name from config: ${error}`);
throw error;
}
}
function getDockerContainerName(directory, serviceName, instanceNumber = 1) {
const sanitizedName = lodash_1.default.chain(path_1.default.basename(directory))
.kebabCase()
.thru((name) => (/^[a-z]/.test(name) ? name : `project-${name}`))
.value();
return `${sanitizedName}-${serviceName}-${instanceNumber}`;
}
function getPonderContainerName(directory, instanceNumber = 1) {
return getDockerContainerName(directory, 'ponder', instanceNumber);
}