Skip to content

Commit aa371a8

Browse files
committed
feat: Enhance version bump action with explicit platform and git tag control
1 parent a63e1c8 commit aa371a8

3 files changed

Lines changed: 23 additions & 7 deletions

File tree

action.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ inputs:
1414
description: 'Whether to create a Git tag after bump'
1515
required: false
1616
default: 'true'
17+
target_platform:
18+
description: 'Explicitly specify the platform to update (e.g., node, python). If not provided, the platform will be detected automatically.'
19+
required: false
20+
default: ''
1721

1822
outputs:
1923
new_version:

src/index.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import { PlatformDetectionError, VersionBumpError } from './errors';
1414
async function run() {
1515
try {
1616
const releaseType = (core.getInput('release_type') || 'patch') as semver.ReleaseType;
17+
const targetPlatform = core.getInput('target_platform');
1718

1819
const updaters = [
1920
new NodeUpdater(),
@@ -26,16 +27,19 @@ async function run() {
2627
const updaterService = new UpdaterService(updaters);
2728
const gitService = new GitService();
2829

29-
const platform = updaterService.detectPlatform();
30+
const platform = updaterService.getPlatform(targetPlatform);
3031
core.info(`Detected platform: ${platform}`);
3132

3233
const version = updaterService.updateVersion(platform, releaseType);
3334
core.setOutput('new_version', version);
3435

3536
// Git Commit & Tag
37+
const gitTag = core.getInput('git_tag') === 'true';
3638
await gitService.configureGitUser();
3739
await gitService.commitChanges(`chore: bump version to ${version}`);
38-
await gitService.createAndPushTag(version);
40+
if (gitTag) {
41+
await gitService.createAndPushTag(version);
42+
}
3943
} catch (error: unknown) {
4044
if (error instanceof PlatformDetectionError) {
4145
core.setFailed(`Platform detection failed: ${error.message}`);

src/services/updaterService.ts

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,20 @@ export class UpdaterService {
99
this.updaters = updaters;
1010
}
1111

12-
detectPlatform(): string {
13-
const updater = this.updaters.find((u) => u.canHandle());
14-
if (!updater) {
15-
throw new PlatformDetectionError('Could not detect platform.');
12+
getPlatform(targetPlatform?: string): string {
13+
if (targetPlatform) {
14+
const updater = this.updaters.find((u) => u.platform === targetPlatform);
15+
if (!updater) {
16+
throw new PlatformDetectionError(`Specified platform "${targetPlatform}" is not supported.`);
17+
}
18+
return updater.platform;
19+
}
20+
21+
const detectedUpdater = this.updaters.find((u) => u.canHandle());
22+
if (!detectedUpdater) {
23+
throw new PlatformDetectionError('Could not detect platform. Please specify target_platform input if auto-detection fails.');
1624
}
17-
return updater.platform;
25+
return detectedUpdater.platform;
1826
}
1927

2028
updateVersion(platform: string, releaseType: semver.ReleaseType): string {

0 commit comments

Comments
 (0)