semantic-version/src/ConfigurationProvider.ts
2023-09-27 20:17:26 -04:00

60 lines
2.7 KiB
TypeScript

import { CsvUserFormatter } from './formatting/CsvUserFormatter'
import { BranchVersioningTagFormatter } from './formatting/BranchVersioningTagFormatter'
import { DefaultTagFormatter } from './formatting/DefaultTagFormatter'
import { DefaultVersionFormatter } from './formatting/DefaultVersionFormatter'
import { JsonUserFormatter } from './formatting/JsonUserFormatter'
import { TagFormatter } from './formatting/TagFormatter'
import { UserFormatter } from './formatting/UserFormatter'
import { VersionFormatter } from './formatting/VersionFormatter'
import { CommitsProvider } from './providers/CommitsProvider'
import { CurrentCommitResolver } from './providers/CurrentCommitResolver'
import { DefaultCommitsProvider } from './providers/DefaultCommitsProvider'
import { DefaultCurrentCommitResolver } from './providers/DefaultCurrentCommitResolver'
import { DefaultVersionClassifier } from './providers/DefaultVersionClassifier'
import { LastReleaseResolver } from './providers/LastReleaseResolver'
import { DefaultLastReleaseResolver } from './providers/DefaultLastReleaseResolver'
import { VersionClassifier } from './providers/VersionClassifier'
import { BumpAlwaysVersionClassifier } from './providers/BumpAlwaysVersionClassifier'
import { ActionConfig } from './ActionConfig';
import { DebugManager } from './DebugManager';
export class ConfigurationProvider {
constructor(config: ActionConfig) {
this.config = config;
DebugManager.getInstance().initializeConfig(config);
}
private config: ActionConfig;
public GetCurrentCommitResolver(): CurrentCommitResolver { return new DefaultCurrentCommitResolver(this.config); }
public GetLastReleaseResolver(): LastReleaseResolver { return new DefaultLastReleaseResolver(this.config); }
public GetCommitsProvider(): CommitsProvider { return new DefaultCommitsProvider(this.config); }
public GetVersionClassifier(): VersionClassifier {
if (this.config.bumpEachCommit) {
return new BumpAlwaysVersionClassifier(this.config);
}
return new DefaultVersionClassifier(this.config);
}
public GetVersionFormatter(): VersionFormatter { return new DefaultVersionFormatter(this.config); }
public GetTagFormatter(branchName: string): TagFormatter {
if (this.config.versionFromBranch) {
return new BranchVersioningTagFormatter(this.config, branchName);
}
return new DefaultTagFormatter(this.config);
}
public GetUserFormatter(): UserFormatter {
switch (this.config.userFormatType) {
case 'json': return new JsonUserFormatter(this.config);
case 'csv': return new CsvUserFormatter(this.config);
default:
throw new Error(`Unknown user format type: ${this.config.userFormatType}, supported types: json, csv`);
}
}
}