Skip to content

Commit 2c24ee2

Browse files
committed
refactor: Encapsulate Git operations in a GitService
1 parent 707f741 commit 2c24ee2

5 files changed

Lines changed: 33 additions & 27 deletions

File tree

src/index.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import * as core from '@actions/core';
2-
import { configureGitUser, commitChanges, createAndPushTag } from './utils';
32
import semver from 'semver';
4-
import { UpdaterService } from './services';
3+
import { UpdaterService, GitService } from './services';
54
import {
65
DockerUpdater,
76
GoUpdater,
@@ -25,6 +24,7 @@ async function run() {
2524
new PHPUpdater(),
2625
];
2726
const updaterService = new UpdaterService(updaters);
27+
const gitService = new GitService();
2828

2929
const platform = updaterService.detectPlatform();
3030
core.info(`Detected platform: ${platform}`);
@@ -33,9 +33,9 @@ async function run() {
3333
core.setOutput('new_version', version);
3434

3535
// Git Commit & Tag
36-
await configureGitUser();
37-
await commitChanges(`chore: bump version to ${version}`);
38-
await createAndPushTag(version);
36+
await gitService.configureGitUser();
37+
await gitService.commitChanges(`chore: bump version to ${version}`);
38+
await gitService.createAndPushTag(version);
3939
} catch (error: unknown) {
4040
if (error instanceof PlatformDetectionError) {
4141
core.setFailed(`Platform detection failed: ${error.message}`);

src/services/gitService.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import * as exec from '@actions/exec';
2+
3+
export class GitService {
4+
async configureGitUser(): Promise<void> {
5+
await exec.exec('git', ['config', 'user.name', 'github-actions[bot]']);
6+
await exec.exec('git', [
7+
'config',
8+
'user.email',
9+
'github-actions[bot]@users.noreply.github.com',
10+
]);
11+
}
12+
13+
async commitChanges(message: string): Promise<void> {
14+
await exec.exec('git', ['add', '-A']);
15+
try {
16+
await exec.exec('git', ['diff-index', '--quiet', 'HEAD']);
17+
} catch (error) {
18+
// Only commit if there are changes
19+
await exec.exec('git', ['commit', '-m', message]);
20+
}
21+
}
22+
23+
async createAndPushTag(version: string): Promise<void> {
24+
await exec.exec('git', ['tag', `v${version}`]);
25+
await exec.exec('git', ['push', 'origin', 'HEAD', '--tags']);
26+
}
27+
}

src/services/index.ts

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

src/utils/git.ts

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

src/utils/index.ts

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

0 commit comments

Comments
 (0)