refactor application.yaml to become an os definition #40
This commit is contained in:
32
src/domain/ScriptingDefinition.ts
Normal file
32
src/domain/ScriptingDefinition.ts
Normal file
@@ -0,0 +1,32 @@
|
||||
import { ScriptingLanguage } from './ScriptingLanguage';
|
||||
import { IScriptingDefinition } from './IScriptingDefinition';
|
||||
|
||||
export class ScriptingDefinition implements IScriptingDefinition {
|
||||
public readonly fileExtension: string;
|
||||
constructor(
|
||||
public readonly language: ScriptingLanguage,
|
||||
public readonly startCode: string,
|
||||
public readonly endCode: string,
|
||||
) {
|
||||
this.fileExtension = findExtension(language);
|
||||
validateCode(startCode, 'start code');
|
||||
validateCode(endCode, 'end code');
|
||||
}
|
||||
}
|
||||
|
||||
function findExtension(language: ScriptingLanguage): string {
|
||||
switch (language) {
|
||||
case ScriptingLanguage.bash:
|
||||
return 'sh';
|
||||
case ScriptingLanguage.batchfile:
|
||||
return 'bat';
|
||||
default:
|
||||
throw new Error(`unsupported language: ${language}`);
|
||||
}
|
||||
}
|
||||
|
||||
function validateCode(code: string, name: string) {
|
||||
if (!code) {
|
||||
throw new Error(`undefined ${name}`);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user