singularci
Version:
SingularCI is a DSL transpiler used to generate CI/CD configuration files for existing CI platforms
46 lines (37 loc) • 1.43 kB
text/typescript
import 'reflect-metadata';
import Container, { Inject, Service } from 'typedi';
import { TargetPlatformGenerator } from '../Targets/interfaces/TargetPlatformGenerator';
import { GitLabConfigGenerator } from '../Targets/GitLabModule';
import { GitHubConfigGenerator } from './../Targets/GitHubModule/index';
import fs from 'fs';
import Pipeline from '../SemanticModel/Pipeline';
import { BuildDockerImageFactory } from '../SemanticModel/Tasks/BuildDockerImage';
import { TriggerFactory } from './../SemanticModel/Trigger';
Container.import([
GitHubConfigGenerator,
GitLabConfigGenerator,
Pipeline,
BuildDockerImageFactory,
TriggerFactory
]);
@Service({ id: 'program' })
class Program {
private configGenerators: TargetPlatformGenerator[] = [];
constructor(
@Inject('GitHubConfigGenerator') githubConfigGenerator: TargetPlatformGenerator,
@Inject('GitLabConfigGenerator') gitlabConfigGenerator: TargetPlatformGenerator,
) {
this.configGenerators.push(githubConfigGenerator);
this.configGenerators.push(gitlabConfigGenerator);
}
public main = () => {
for (const configGenerator of this.configGenerators) {
configGenerator.generateConfig()
}
}
}
Container.set('dslparser.inputFileName', '.singularci.yml');
const program = Container.get<Program>('program');
program.main();
fs.rmSync('.singularci-copy.yml');