@git.zone/cli 1.18.7 → 1.18.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@git.zone/cli',
6
- version: '1.18.7',
6
+ version: '1.18.9',
7
7
  description: 'A comprehensive CLI tool for enhancing and managing local development workflows with gitzone utilities, focusing on project setup, version control, code formatting, and template management.'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxlQUFlO0lBQ3JCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLFdBQVcsRUFBRSwrTEFBK0w7Q0FDN00sQ0FBQSJ9
@@ -2,6 +2,7 @@
2
2
  import * as plugins from './mod.plugins.js';
3
3
  import * as paths from '../paths.js';
4
4
  import { logger } from '../gitzone.logging.js';
5
+ import * as helpers from './mod.helpers.js';
5
6
  export const run = async (argvArg) => {
6
7
  if (argvArg.format) {
7
8
  const formatMod = await import('../mod_format/index.js');
@@ -82,10 +83,14 @@ export const run = async (argvArg) => {
82
83
  logger.log('info', `Staging files for commit:`);
83
84
  await smartshellInstance.exec(`git add -A`);
84
85
  await smartshellInstance.exec(`git commit -m "${commitString}"`);
85
- await smartshellInstance.exec(`npm version ${commitVersionType}`);
86
+ // Detect project type and bump version accordingly
87
+ const projectType = await helpers.detectProjectType();
88
+ await helpers.bumpProjectVersion(projectType, commitVersionType);
86
89
  if (answerBucket.getAnswerFor('pushToOrigin') &&
87
90
  !(process.env.CI === 'true')) {
88
- await smartshellInstance.exec(`git push origin master --follow-tags`);
91
+ // Detect current branch instead of hardcoding "master"
92
+ const currentBranch = await helpers.detectCurrentBranch();
93
+ await smartshellInstance.exec(`git push origin ${currentBranch} --follow-tags`);
89
94
  }
90
95
  };
91
96
  const createCommitStringFromAnswerBucket = (answerBucket) => {
@@ -94,4 +99,4 @@ const createCommitStringFromAnswerBucket = (answerBucket) => {
94
99
  const commitDescription = answerBucket.getAnswerFor('commitDescription');
95
100
  return `${commitType}(${commitScope}): ${commitDescription}`;
96
101
  };
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9tb2RfY29tbWl0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdFQUFnRTtBQUVoRSxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sS0FBSyxLQUFLLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUFFLE9BQVksRUFBRSxFQUFFO0lBQ3hDLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ25CLE1BQU0sU0FBUyxHQUFHLE1BQU0sTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDekQsTUFBTSxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLG9CQUFvQixDQUFDLENBQUM7SUFDekMsTUFBTSxLQUFLLEdBQUcsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3hDLE1BQU0sS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBRXBCLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxLQUFLLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXRFLE1BQU0sS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBRW5CLE1BQU0sQ0FBQyxHQUFHLENBQ1IsTUFBTSxFQUNOOzs7U0FHSyxnQkFBZ0IsQ0FBQyxzQkFBc0I7U0FDdkMsZ0JBQWdCLENBQUMsMkJBQTJCLElBQUksZ0JBQWdCLENBQUMsMkJBQTJCLE1BQU0sZ0JBQWdCLENBQUMsNkJBQTZCOztHQUV0SixDQUNBLENBQUM7SUFDRixNQUFNLGNBQWMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFF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
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9tb2RfY29tbWl0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdFQUFnRTtBQUVoRSxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sS0FBSyxLQUFLLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBRTVDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsT0FBWSxFQUFFLEVBQUU7SUFDeEMsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbkIsTUFBTSxTQUFTLEdBQUcsTUFBTSxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUN6RCxNQUFNLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUN6QyxNQUFNLEtBQUssR0FBRyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDeEMsTUFBTSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFFcEIsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFdEUsTUFBTSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFbkIsTUFBTSxDQUFDLEdBQUcsQ0FDUixNQUFNLEVBQ047OztTQUdLLGdCQUFnQixDQUFDLHNCQUFzQjtTQUN2QyxnQkFBZ0IsQ0FBQywyQkFBMkIsSUFBSSxnQkFBZ0IsQ0FBQywyQkFBMkIsTUFBTSxnQkFBZ0IsQ0FBQyw2QkFBNkI7O0dBRXRKLENBQ0EsQ0FBQztJQUNGLE1BQU0sY0FBYyxH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
@@ -0,0 +1,25 @@
1
+ export type ProjectType = 'npm' | 'deno' | 'both' | 'none';
2
+ export type VersionType = 'patch' | 'minor' | 'major';
3
+ /**
4
+ * Detects the current git branch
5
+ * @returns The current branch name, defaults to 'master' if detection fails
6
+ */
7
+ export declare function detectCurrentBranch(): Promise<string>;
8
+ /**
9
+ * Detects the project type based on presence of package.json and/or deno.json
10
+ * @returns The project type
11
+ */
12
+ export declare function detectProjectType(): Promise<ProjectType>;
13
+ /**
14
+ * Bumps the version in deno.json, commits the change, and creates a tag
15
+ * @param versionType Type of version bump
16
+ * @returns The new version string
17
+ */
18
+ export declare function bumpDenoVersion(versionType: VersionType): Promise<string>;
19
+ /**
20
+ * Bumps the project version based on project type
21
+ * @param projectType The detected project type
22
+ * @param versionType The type of version bump
23
+ * @returns The new version string
24
+ */
25
+ export declare function bumpProjectVersion(projectType: ProjectType, versionType: VersionType): Promise<string>;
@@ -0,0 +1,186 @@
1
+ import * as plugins from './mod.plugins.js';
2
+ import * as paths from '../paths.js';
3
+ import { logger } from '../gitzone.logging.js';
4
+ /**
5
+ * Detects the current git branch
6
+ * @returns The current branch name, defaults to 'master' if detection fails
7
+ */
8
+ export async function detectCurrentBranch() {
9
+ try {
10
+ const smartshellInstance = new plugins.smartshell.Smartshell({
11
+ executor: 'bash',
12
+ sourceFilePaths: [],
13
+ });
14
+ const result = await smartshellInstance.exec('git branch --show-current');
15
+ const branchName = result.stdout.trim();
16
+ if (!branchName) {
17
+ logger.log('warn', 'Could not detect current branch, falling back to "master"');
18
+ return 'master';
19
+ }
20
+ logger.log('info', `Detected current branch: ${branchName}`);
21
+ return branchName;
22
+ }
23
+ catch (error) {
24
+ logger.log('warn', `Failed to detect branch: ${error.message}, falling back to "master"`);
25
+ return 'master';
26
+ }
27
+ }
28
+ /**
29
+ * Detects the project type based on presence of package.json and/or deno.json
30
+ * @returns The project type
31
+ */
32
+ export async function detectProjectType() {
33
+ const packageJsonPath = plugins.path.join(paths.cwd, 'package.json');
34
+ const denoJsonPath = plugins.path.join(paths.cwd, 'deno.json');
35
+ const hasPackageJson = await plugins.smartfile.fs.fileExists(packageJsonPath);
36
+ const hasDenoJson = await plugins.smartfile.fs.fileExists(denoJsonPath);
37
+ if (hasPackageJson && hasDenoJson) {
38
+ logger.log('info', 'Detected dual project (npm + deno)');
39
+ return 'both';
40
+ }
41
+ else if (hasPackageJson) {
42
+ logger.log('info', 'Detected npm project');
43
+ return 'npm';
44
+ }
45
+ else if (hasDenoJson) {
46
+ logger.log('info', 'Detected deno project');
47
+ return 'deno';
48
+ }
49
+ else {
50
+ throw new Error('No package.json or deno.json found in current directory');
51
+ }
52
+ }
53
+ /**
54
+ * Parses a semantic version string and bumps it according to the version type
55
+ * @param currentVersion Current version string (e.g., "1.2.3")
56
+ * @param versionType Type of version bump
57
+ * @returns New version string
58
+ */
59
+ function calculateNewVersion(currentVersion, versionType) {
60
+ const versionMatch = currentVersion.match(/^(\d+)\.(\d+)\.(\d+)/);
61
+ if (!versionMatch) {
62
+ throw new Error(`Invalid version format: ${currentVersion}`);
63
+ }
64
+ let [, major, minor, patch] = versionMatch.map(Number);
65
+ switch (versionType) {
66
+ case 'major':
67
+ major += 1;
68
+ minor = 0;
69
+ patch = 0;
70
+ break;
71
+ case 'minor':
72
+ minor += 1;
73
+ patch = 0;
74
+ break;
75
+ case 'patch':
76
+ patch += 1;
77
+ break;
78
+ }
79
+ return `${major}.${minor}.${patch}`;
80
+ }
81
+ /**
82
+ * Bumps the version in deno.json, commits the change, and creates a tag
83
+ * @param versionType Type of version bump
84
+ * @returns The new version string
85
+ */
86
+ export async function bumpDenoVersion(versionType) {
87
+ const denoJsonPath = plugins.path.join(paths.cwd, 'deno.json');
88
+ const smartshellInstance = new plugins.smartshell.Smartshell({
89
+ executor: 'bash',
90
+ sourceFilePaths: [],
91
+ });
92
+ try {
93
+ // Read deno.json
94
+ const denoConfig = plugins.smartfile.fs.toObjectSync(denoJsonPath);
95
+ if (!denoConfig.version) {
96
+ throw new Error('deno.json does not contain a version field');
97
+ }
98
+ const currentVersion = denoConfig.version;
99
+ const newVersion = calculateNewVersion(currentVersion, versionType);
100
+ logger.log('info', `Bumping deno.json version: ${currentVersion} → ${newVersion}`);
101
+ // Update version
102
+ denoConfig.version = newVersion;
103
+ // Write back to disk
104
+ await plugins.smartfile.memory.toFs(JSON.stringify(denoConfig, null, 2) + '\n', denoJsonPath);
105
+ // Stage the deno.json file
106
+ await smartshellInstance.exec('git add deno.json');
107
+ // Commit the version bump
108
+ await smartshellInstance.exec(`git commit -m "v${newVersion}"`);
109
+ // Create the version tag
110
+ await smartshellInstance.exec(`git tag v${newVersion} -m "v${newVersion}"`);
111
+ logger.log('info', `Created commit and tag v${newVersion}`);
112
+ return newVersion;
113
+ }
114
+ catch (error) {
115
+ throw new Error(`Failed to bump deno.json version: ${error.message}`);
116
+ }
117
+ }
118
+ /**
119
+ * Bumps the version in package.json using npm version command
120
+ * @param versionType Type of version bump
121
+ * @returns The new version string
122
+ */
123
+ async function bumpNpmVersion(versionType) {
124
+ const smartshellInstance = new plugins.smartshell.Smartshell({
125
+ executor: 'bash',
126
+ sourceFilePaths: [],
127
+ });
128
+ logger.log('info', `Bumping package.json version using npm version ${versionType}`);
129
+ const result = await smartshellInstance.exec(`npm version ${versionType}`);
130
+ // npm version returns the new version with a 'v' prefix, e.g., "v1.2.3"
131
+ const newVersion = result.stdout.trim().replace(/^v/, '');
132
+ return newVersion;
133
+ }
134
+ /**
135
+ * Syncs the version from package.json to deno.json and amends the npm commit
136
+ * @param version The version to sync
137
+ */
138
+ async function syncVersionToDenoJson(version) {
139
+ const denoJsonPath = plugins.path.join(paths.cwd, 'deno.json');
140
+ const smartshellInstance = new plugins.smartshell.Smartshell({
141
+ executor: 'bash',
142
+ sourceFilePaths: [],
143
+ });
144
+ try {
145
+ const denoConfig = plugins.smartfile.fs.toObjectSync(denoJsonPath);
146
+ logger.log('info', `Syncing version to deno.json: ${version}`);
147
+ denoConfig.version = version;
148
+ await plugins.smartfile.memory.toFs(JSON.stringify(denoConfig, null, 2) + '\n', denoJsonPath);
149
+ // Stage the deno.json file
150
+ await smartshellInstance.exec('git add deno.json');
151
+ // Amend the npm version commit to include deno.json
152
+ await smartshellInstance.exec('git commit --amend --no-edit');
153
+ // Re-create the tag with force to update it
154
+ await smartshellInstance.exec(`git tag -fa v${version} -m "v${version}"`);
155
+ logger.log('info', `Amended commit to include deno.json and updated tag v${version}`);
156
+ }
157
+ catch (error) {
158
+ throw new Error(`Failed to sync version to deno.json: ${error.message}`);
159
+ }
160
+ }
161
+ /**
162
+ * Bumps the project version based on project type
163
+ * @param projectType The detected project type
164
+ * @param versionType The type of version bump
165
+ * @returns The new version string
166
+ */
167
+ export async function bumpProjectVersion(projectType, versionType) {
168
+ switch (projectType) {
169
+ case 'npm':
170
+ return await bumpNpmVersion(versionType);
171
+ case 'deno':
172
+ return await bumpDenoVersion(versionType);
173
+ case 'both': {
174
+ // Bump npm version first (it handles git tags)
175
+ const newVersion = await bumpNpmVersion(versionType);
176
+ // Then sync to deno.json
177
+ await syncVersionToDenoJson(newVersion);
178
+ return newVersion;
179
+ }
180
+ case 'none':
181
+ throw new Error('Cannot bump version: no package.json or deno.json found');
182
+ default:
183
+ throw new Error(`Unknown project type: ${projectType}`);
184
+ }
185
+ }
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9tb2RfY29tbWl0L21vZC5oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxLQUFLLEtBQUssTUFBTSxhQUFhLENBQUM7QUFDckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSy9DOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsbUJBQW1CO0lBQ3ZDLElBQUksQ0FBQztRQUNILE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztZQUMzRCxRQUFRLEVBQUUsTUFBTTtZQUNoQixlQUFlLEVBQUUsRUFBRTtTQUNwQixDQUFDLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLGtCQUFrQixDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQzFFLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFeEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLDJEQUEyRCxDQUFDLENBQUM7WUFDaEYsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztRQUVELE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLDRCQUE0QixVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzdELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsNEJBQTRCLEtBQUssQ0FBQyxPQUFPLDRCQUE0QixDQUFDLENBQUM7UUFDMUYsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztBQUNILENBQUM7QUFFRDs7O0dBR0c7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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@git.zone/cli",
3
3
  "private": false,
4
- "version": "1.18.7",
4
+ "version": "1.18.9",
5
5
  "description": "A comprehensive CLI tool for enhancing and managing local development workflows with gitzone utilities, focusing on project setup, version control, code formatting, and template management.",
6
6
  "main": "dist_ts/index.ts",
7
7
  "typings": "dist_ts/index.d.ts",
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@git.zone/cli',
6
- version: '1.18.7',
6
+ version: '1.18.9',
7
7
  description: 'A comprehensive CLI tool for enhancing and managing local development workflows with gitzone utilities, focusing on project setup, version control, code formatting, and template management.'
8
8
  }
@@ -3,6 +3,7 @@
3
3
  import * as plugins from './mod.plugins.js';
4
4
  import * as paths from '../paths.js';
5
5
  import { logger } from '../gitzone.logging.js';
6
+ import * as helpers from './mod.helpers.js';
6
7
 
7
8
  export const run = async (argvArg: any) => {
8
9
  if (argvArg.format) {
@@ -113,12 +114,18 @@ export const run = async (argvArg: any) => {
113
114
  logger.log('info', `Staging files for commit:`);
114
115
  await smartshellInstance.exec(`git add -A`);
115
116
  await smartshellInstance.exec(`git commit -m "${commitString}"`);
116
- await smartshellInstance.exec(`npm version ${commitVersionType}`);
117
+
118
+ // Detect project type and bump version accordingly
119
+ const projectType = await helpers.detectProjectType();
120
+ await helpers.bumpProjectVersion(projectType, commitVersionType);
121
+
117
122
  if (
118
123
  answerBucket.getAnswerFor('pushToOrigin') &&
119
124
  !(process.env.CI === 'true')
120
125
  ) {
121
- await smartshellInstance.exec(`git push origin master --follow-tags`);
126
+ // Detect current branch instead of hardcoding "master"
127
+ const currentBranch = await helpers.detectCurrentBranch();
128
+ await smartshellInstance.exec(`git push origin ${currentBranch} --follow-tags`);
122
129
  }
123
130
  };
124
131
 
@@ -0,0 +1,234 @@
1
+ import * as plugins from './mod.plugins.js';
2
+ import * as paths from '../paths.js';
3
+ import { logger } from '../gitzone.logging.js';
4
+
5
+ export type ProjectType = 'npm' | 'deno' | 'both' | 'none';
6
+ export type VersionType = 'patch' | 'minor' | 'major';
7
+
8
+ /**
9
+ * Detects the current git branch
10
+ * @returns The current branch name, defaults to 'master' if detection fails
11
+ */
12
+ export async function detectCurrentBranch(): Promise<string> {
13
+ try {
14
+ const smartshellInstance = new plugins.smartshell.Smartshell({
15
+ executor: 'bash',
16
+ sourceFilePaths: [],
17
+ });
18
+ const result = await smartshellInstance.exec('git branch --show-current');
19
+ const branchName = result.stdout.trim();
20
+
21
+ if (!branchName) {
22
+ logger.log('warn', 'Could not detect current branch, falling back to "master"');
23
+ return 'master';
24
+ }
25
+
26
+ logger.log('info', `Detected current branch: ${branchName}`);
27
+ return branchName;
28
+ } catch (error) {
29
+ logger.log('warn', `Failed to detect branch: ${error.message}, falling back to "master"`);
30
+ return 'master';
31
+ }
32
+ }
33
+
34
+ /**
35
+ * Detects the project type based on presence of package.json and/or deno.json
36
+ * @returns The project type
37
+ */
38
+ export async function detectProjectType(): Promise<ProjectType> {
39
+ const packageJsonPath = plugins.path.join(paths.cwd, 'package.json');
40
+ const denoJsonPath = plugins.path.join(paths.cwd, 'deno.json');
41
+
42
+ const hasPackageJson = await plugins.smartfile.fs.fileExists(packageJsonPath);
43
+ const hasDenoJson = await plugins.smartfile.fs.fileExists(denoJsonPath);
44
+
45
+ if (hasPackageJson && hasDenoJson) {
46
+ logger.log('info', 'Detected dual project (npm + deno)');
47
+ return 'both';
48
+ } else if (hasPackageJson) {
49
+ logger.log('info', 'Detected npm project');
50
+ return 'npm';
51
+ } else if (hasDenoJson) {
52
+ logger.log('info', 'Detected deno project');
53
+ return 'deno';
54
+ } else {
55
+ throw new Error('No package.json or deno.json found in current directory');
56
+ }
57
+ }
58
+
59
+ /**
60
+ * Parses a semantic version string and bumps it according to the version type
61
+ * @param currentVersion Current version string (e.g., "1.2.3")
62
+ * @param versionType Type of version bump
63
+ * @returns New version string
64
+ */
65
+ function calculateNewVersion(currentVersion: string, versionType: VersionType): string {
66
+ const versionMatch = currentVersion.match(/^(\d+)\.(\d+)\.(\d+)/);
67
+
68
+ if (!versionMatch) {
69
+ throw new Error(`Invalid version format: ${currentVersion}`);
70
+ }
71
+
72
+ let [, major, minor, patch] = versionMatch.map(Number);
73
+
74
+ switch (versionType) {
75
+ case 'major':
76
+ major += 1;
77
+ minor = 0;
78
+ patch = 0;
79
+ break;
80
+ case 'minor':
81
+ minor += 1;
82
+ patch = 0;
83
+ break;
84
+ case 'patch':
85
+ patch += 1;
86
+ break;
87
+ }
88
+
89
+ return `${major}.${minor}.${patch}`;
90
+ }
91
+
92
+ /**
93
+ * Bumps the version in deno.json, commits the change, and creates a tag
94
+ * @param versionType Type of version bump
95
+ * @returns The new version string
96
+ */
97
+ export async function bumpDenoVersion(versionType: VersionType): Promise<string> {
98
+ const denoJsonPath = plugins.path.join(paths.cwd, 'deno.json');
99
+ const smartshellInstance = new plugins.smartshell.Smartshell({
100
+ executor: 'bash',
101
+ sourceFilePaths: [],
102
+ });
103
+
104
+ try {
105
+ // Read deno.json
106
+ const denoConfig = plugins.smartfile.fs.toObjectSync(
107
+ denoJsonPath
108
+ ) as { version?: string };
109
+
110
+ if (!denoConfig.version) {
111
+ throw new Error('deno.json does not contain a version field');
112
+ }
113
+
114
+ const currentVersion = denoConfig.version;
115
+ const newVersion = calculateNewVersion(currentVersion, versionType);
116
+
117
+ logger.log('info', `Bumping deno.json version: ${currentVersion} → ${newVersion}`);
118
+
119
+ // Update version
120
+ denoConfig.version = newVersion;
121
+
122
+ // Write back to disk
123
+ await plugins.smartfile.memory.toFs(
124
+ JSON.stringify(denoConfig, null, 2) + '\n',
125
+ denoJsonPath
126
+ );
127
+
128
+ // Stage the deno.json file
129
+ await smartshellInstance.exec('git add deno.json');
130
+
131
+ // Commit the version bump
132
+ await smartshellInstance.exec(`git commit -m "v${newVersion}"`);
133
+
134
+ // Create the version tag
135
+ await smartshellInstance.exec(`git tag v${newVersion} -m "v${newVersion}"`);
136
+
137
+ logger.log('info', `Created commit and tag v${newVersion}`);
138
+
139
+ return newVersion;
140
+ } catch (error) {
141
+ throw new Error(`Failed to bump deno.json version: ${error.message}`);
142
+ }
143
+ }
144
+
145
+ /**
146
+ * Bumps the version in package.json using npm version command
147
+ * @param versionType Type of version bump
148
+ * @returns The new version string
149
+ */
150
+ async function bumpNpmVersion(versionType: VersionType): Promise<string> {
151
+ const smartshellInstance = new plugins.smartshell.Smartshell({
152
+ executor: 'bash',
153
+ sourceFilePaths: [],
154
+ });
155
+
156
+ logger.log('info', `Bumping package.json version using npm version ${versionType}`);
157
+ const result = await smartshellInstance.exec(`npm version ${versionType}`);
158
+
159
+ // npm version returns the new version with a 'v' prefix, e.g., "v1.2.3"
160
+ const newVersion = result.stdout.trim().replace(/^v/, '');
161
+ return newVersion;
162
+ }
163
+
164
+ /**
165
+ * Syncs the version from package.json to deno.json and amends the npm commit
166
+ * @param version The version to sync
167
+ */
168
+ async function syncVersionToDenoJson(version: string): Promise<void> {
169
+ const denoJsonPath = plugins.path.join(paths.cwd, 'deno.json');
170
+ const smartshellInstance = new plugins.smartshell.Smartshell({
171
+ executor: 'bash',
172
+ sourceFilePaths: [],
173
+ });
174
+
175
+ try {
176
+ const denoConfig = plugins.smartfile.fs.toObjectSync(
177
+ denoJsonPath
178
+ ) as { version?: string };
179
+
180
+ logger.log('info', `Syncing version to deno.json: ${version}`);
181
+ denoConfig.version = version;
182
+
183
+ await plugins.smartfile.memory.toFs(
184
+ JSON.stringify(denoConfig, null, 2) + '\n',
185
+ denoJsonPath
186
+ );
187
+
188
+ // Stage the deno.json file
189
+ await smartshellInstance.exec('git add deno.json');
190
+
191
+ // Amend the npm version commit to include deno.json
192
+ await smartshellInstance.exec('git commit --amend --no-edit');
193
+
194
+ // Re-create the tag with force to update it
195
+ await smartshellInstance.exec(`git tag -fa v${version} -m "v${version}"`);
196
+
197
+ logger.log('info', `Amended commit to include deno.json and updated tag v${version}`);
198
+ } catch (error) {
199
+ throw new Error(`Failed to sync version to deno.json: ${error.message}`);
200
+ }
201
+ }
202
+
203
+ /**
204
+ * Bumps the project version based on project type
205
+ * @param projectType The detected project type
206
+ * @param versionType The type of version bump
207
+ * @returns The new version string
208
+ */
209
+ export async function bumpProjectVersion(
210
+ projectType: ProjectType,
211
+ versionType: VersionType
212
+ ): Promise<string> {
213
+ switch (projectType) {
214
+ case 'npm':
215
+ return await bumpNpmVersion(versionType);
216
+
217
+ case 'deno':
218
+ return await bumpDenoVersion(versionType);
219
+
220
+ case 'both': {
221
+ // Bump npm version first (it handles git tags)
222
+ const newVersion = await bumpNpmVersion(versionType);
223
+ // Then sync to deno.json
224
+ await syncVersionToDenoJson(newVersion);
225
+ return newVersion;
226
+ }
227
+
228
+ case 'none':
229
+ throw new Error('Cannot bump version: no package.json or deno.json found');
230
+
231
+ default:
232
+ throw new Error(`Unknown project type: ${projectType}`);
233
+ }
234
+ }