Skip to content

Commit 49c0d75

Browse files
committed
refactor: Introduce UpdaterService for dependency injection
1 parent 5ef496c commit 49c0d75

5 files changed

Lines changed: 46 additions & 40 deletions

File tree

src/index.ts

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,34 @@
11
import * as core from '@actions/core';
2-
import {
3-
detectPlatform,
4-
updateVersion,
5-
configureGitUser,
6-
commitChanges,
7-
createAndPushTag,
8-
} from './utils';
2+
import { configureGitUser, commitChanges, createAndPushTag } from './utils';
93
import semver from 'semver';
4+
import { UpdaterService } from './services';
5+
import {
6+
DockerUpdater,
7+
GoUpdater,
8+
NodeUpdater,
9+
PHPUpdater,
10+
PythonUpdater,
11+
RustUpdater,
12+
} from './updaters';
1013

1114
async function run() {
1215
try {
1316
const releaseType = (core.getInput('release_type') || 'patch') as semver.ReleaseType;
1417

15-
const platform = detectPlatform();
18+
const updaters = [
19+
new NodeUpdater(),
20+
new PythonUpdater(),
21+
new RustUpdater(),
22+
new GoUpdater(),
23+
new DockerUpdater(),
24+
new PHPUpdater(),
25+
];
26+
const updaterService = new UpdaterService(updaters);
27+
28+
const platform = updaterService.detectPlatform();
1629
core.info(`Detected platform: ${platform}`);
1730

18-
const version = updateVersion(platform, releaseType);
31+
const version = updaterService.updateVersion(platform, releaseType);
1932
core.setOutput('new_version', version);
2033

2134
// Git Commit & Tag

src/services/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './updaterService';

src/services/updaterService.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import semver from 'semver';
2+
import { Updater } from '../interface';
3+
4+
export class UpdaterService {
5+
private updaters: Updater[];
6+
7+
constructor(updaters: Updater[]) {
8+
this.updaters = updaters;
9+
}
10+
11+
detectPlatform(): string {
12+
const updater = this.updaters.find((u) => u.canHandle());
13+
return updater ? updater.platform : 'unknown';
14+
}
15+
16+
updateVersion(platform: string, releaseType: semver.ReleaseType): string {
17+
const updater = this.updaters.find((u) => u.platform === platform);
18+
if (!updater) {
19+
throw new Error(`No updater found for platform: ${platform}`);
20+
}
21+
return updater.bumpVersion(releaseType);
22+
}
23+
}

src/utils/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
1-
export * from './updaterUtil';
21
export * from './git';

src/utils/updaterUtil.ts

Lines changed: 0 additions & 30 deletions
This file was deleted.

0 commit comments

Comments
 (0)