Skip to content

Commit 4a583a3

Browse files
committed
refactor: Extract version calculation to a separate utility
1 parent b5660f5 commit 4a583a3

8 files changed

Lines changed: 29 additions & 13 deletions

File tree

src/updaters/dockerUpdater.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import fs from 'fs';
2-
import semver, { ReleaseType } from 'semver';
2+
import { ReleaseType } from 'semver';
33
import { Updater } from '../interface';
4+
import { calculateNextVersion } from '../utils';
45

56
export class DockerUpdater implements Updater {
67
platform = 'docker';
@@ -19,7 +20,7 @@ export class DockerUpdater implements Updater {
1920
const current = this.getCurrentVersion();
2021
if (!current) throw new Error('Docker version not found');
2122

22-
const newVersion = semver.inc(current, releaseType) || current;
23+
const newVersion = calculateNextVersion(current, releaseType);
2324
let content = fs.readFileSync('Dockerfile', 'utf8');
2425
content = content.replace(/LABEL version="[^"]+"/, `LABEL version="${newVersion}"`);
2526
fs.writeFileSync('Dockerfile', content);

src/updaters/goUpdater.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import fs from 'fs';
2-
import semver, { ReleaseType } from 'semver';
2+
import { ReleaseType } from 'semver';
33
import { Updater } from '../interface';
4+
import { calculateNextVersion } from '../utils';
45

56
export class GoUpdater implements Updater {
67
platform = 'go';
@@ -20,7 +21,7 @@ export class GoUpdater implements Updater {
2021
const current = this.getCurrentVersion();
2122
if (!current) throw new Error('Go version not found');
2223

23-
const newVersion = semver.inc(current, releaseType) || current;
24+
const newVersion = calculateNextVersion(current, releaseType);
2425
let content = fs.readFileSync('go.mod', 'utf8');
2526
content = content.replace(/v\d+\.\d+\.\d+/, `v${newVersion}`);
2627
fs.writeFileSync('go.mod', content);

src/updaters/nodeUpdater.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import fs from 'fs';
2-
import semver, { ReleaseType } from 'semver';
2+
import { ReleaseType } from 'semver';
33
import { Updater } from '../interface';
4+
import { calculateNextVersion } from '../utils';
45

56
export class NodeUpdater implements Updater {
67
platform = 'node';
@@ -17,7 +18,7 @@ export class NodeUpdater implements Updater {
1718

1819
bumpVersion(releaseType: ReleaseType): string {
1920
const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'));
20-
const newVersion = semver.inc(pkg.version, releaseType) || pkg.version;
21+
const newVersion = calculateNextVersion(pkg.version, releaseType);
2122
pkg.version = newVersion;
2223
fs.writeFileSync('package.json', JSON.stringify(pkg, null, 2));
2324
return newVersion;

src/updaters/phpUpdater.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import fs from 'fs';
2-
import semver, { ReleaseType } from 'semver';
2+
import { ReleaseType } from 'semver';
33
import { Updater } from '../interface';
4+
import { calculateNextVersion } from '../utils';
45

56
export class PHPUpdater implements Updater {
67
platform = 'php';
@@ -45,7 +46,7 @@ export class PHPUpdater implements Updater {
4546

4647
bumpVersion(releaseType: ReleaseType): string {
4748
const version = this.getCurrentVersion() || '0.1.0';
48-
const newVersion = semver.inc(version, releaseType) || version;
49+
const newVersion = calculateNextVersion(version, releaseType);
4950

5051
// composer.json
5152
if (fs.existsSync('composer.json')) {
@@ -64,7 +65,7 @@ export class PHPUpdater implements Updater {
6465
// version.php
6566
if (fs.existsSync('version.php')) {
6667
const content = fs.readFileSync('version.php', 'utf8');
67-
const updated = content.replace(/(['"])[\d.]+(['"])/, `'${newVersion}'`);
68+
const updated = content.replace(/(['"])[\d.]+(['"])/, `$1${newVersion}$2`);
6869
fs.writeFileSync('version.php', updated);
6970
return newVersion;
7071
}

src/updaters/pythonUpdater.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import fs from 'fs';
2-
import semver, { ReleaseType } from 'semver';
2+
import { ReleaseType } from 'semver';
33
import { Updater } from '../interface';
4+
import { calculateNextVersion } from '../utils';
45

56
export class PythonUpdater implements Updater {
67
platform = 'python';
@@ -27,7 +28,7 @@ export class PythonUpdater implements Updater {
2728
const current = this.getCurrentVersion();
2829
if (!current) throw new Error('Python version not found');
2930

30-
const newVersion = semver.inc(current, releaseType) || current;
31+
const newVersion = calculateNextVersion(current, releaseType);
3132

3233
if (fs.existsSync('pyproject.toml')) {
3334
let content = fs.readFileSync('pyproject.toml', 'utf8');

src/updaters/rustUpdater.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import fs from 'fs';
2-
import semver, { ReleaseType } from 'semver';
2+
import { ReleaseType } from 'semver';
33
import { Updater } from '../interface';
4+
import { calculateNextVersion } from '../utils';
45

56
export class RustUpdater implements Updater {
67
platform = 'rust';
@@ -20,7 +21,7 @@ export class RustUpdater implements Updater {
2021
const current = this.getCurrentVersion();
2122
if (!current) throw new Error('Rust version not found');
2223

23-
const newVersion = semver.inc(current, releaseType) || current;
24+
const newVersion = calculateNextVersion(current, releaseType);
2425
let content = fs.readFileSync('Cargo.toml', 'utf8');
2526
content = content.replace(/version\s*=\s*"[^"]+"/, `version = "${newVersion}"`);
2627
fs.writeFileSync('Cargo.toml', content);

src/utils/index.ts

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

src/utils/versionUtil.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import semver, { ReleaseType } from 'semver';
2+
3+
export function calculateNextVersion(currentVersion: string, releaseType: ReleaseType): string {
4+
const newVersion = semver.inc(currentVersion, releaseType);
5+
if (!newVersion) {
6+
return currentVersion;
7+
}
8+
return newVersion;
9+
}

0 commit comments

Comments
 (0)