@ordino.ai/cli
Version:
ordino.ai global command line interface
69 lines (61 loc) • 2.22 kB
text/typescript
import path from "path";
import fs from "fs";
import { CItype } from "../../models/models";
import { replaceTemplatePlaceholders } from "./templateProcessor";
function getRepositoryTypeFolder(repositoryType: CItype): string | null {
switch (repositoryType) {
case CItype.GITHUB:
return "github";
case CItype.DEVOPS:
return "azure";
case CItype.GITLAB:
return "gitlab";
default:
return null;
}
}
export function copyWorkflowFile(
appPath: string,
platformtype: string,
repositoryType: CItype,
baseURL: string
) {
const repositoryFolderName = getRepositoryTypeFolder(repositoryType);
if (!repositoryFolderName) {
console.log(`Repository type not supported for git action generation.`);
return;
}
console.log("repositoryType : "+repositoryType);
const sourceFile = path.join(
__dirname,
`../../../templates/repository/${repositoryFolderName}/${platformtype}/config.yaml`
);
if (!fs.existsSync(sourceFile)) {
console.log(`Workflow file not found for ${platformtype} and ${repositoryFolderName}`);
return;
}
let destDir: string;
let destFile: string;
switch (repositoryType) {
case CItype.GITHUB:
destDir = path.join(appPath, ".github", "workflows");
fs.mkdirSync(destDir, { recursive: true });
destFile = path.join(destDir, "config.yaml");
break;
case CItype.DEVOPS:
destDir = path.join(appPath, "pipeline");
fs.mkdirSync(destDir, { recursive: true });
destFile = path.join(destDir, "pipeline.yaml");
break;
case CItype.GITLAB:
destFile = path.join(appPath, ".gitlab-ci.yml");
break;
default:
console.log(`Unsupported repository type for workflow file placement: ${repositoryType}`);
return;
}
fs.copyFileSync(sourceFile, destFile);
// Process the template file to replace placeholders
replaceTemplatePlaceholders(destFile, baseURL);
console.log(`Workflow file copied for ${platformtype} and ${repositoryFolderName}`);
}