@git.zone/cli 1.18.7 → 1.18.8

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.8',
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
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,164 @@
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
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
+ try {
89
+ // Read deno.json
90
+ const denoConfig = plugins.smartfile.fs.toObjectSync(denoJsonPath);
91
+ if (!denoConfig.version) {
92
+ throw new Error('deno.json does not contain a version field');
93
+ }
94
+ const currentVersion = denoConfig.version;
95
+ const newVersion = calculateNewVersion(currentVersion, versionType);
96
+ logger.log('info', `Bumping deno.json version: ${currentVersion} → ${newVersion}`);
97
+ // Update version
98
+ denoConfig.version = newVersion;
99
+ // Write back to disk
100
+ await plugins.smartfile.memory.toFs(JSON.stringify(denoConfig, null, 2) + '\n', denoJsonPath);
101
+ return newVersion;
102
+ }
103
+ catch (error) {
104
+ throw new Error(`Failed to bump deno.json version: ${error.message}`);
105
+ }
106
+ }
107
+ /**
108
+ * Bumps the version in package.json using npm version command
109
+ * @param versionType Type of version bump
110
+ * @returns The new version string
111
+ */
112
+ async function bumpNpmVersion(versionType) {
113
+ const smartshellInstance = new plugins.smartshell.Smartshell({
114
+ executor: 'bash',
115
+ sourceFilePaths: [],
116
+ });
117
+ logger.log('info', `Bumping package.json version using npm version ${versionType}`);
118
+ const result = await smartshellInstance.exec(`npm version ${versionType}`);
119
+ // npm version returns the new version with a 'v' prefix, e.g., "v1.2.3"
120
+ const newVersion = result.stdout.trim().replace(/^v/, '');
121
+ return newVersion;
122
+ }
123
+ /**
124
+ * Syncs the version from package.json to deno.json
125
+ * @param version The version to sync
126
+ */
127
+ async function syncVersionToDenoJson(version) {
128
+ const denoJsonPath = plugins.path.join(paths.cwd, 'deno.json');
129
+ try {
130
+ const denoConfig = plugins.smartfile.fs.toObjectSync(denoJsonPath);
131
+ logger.log('info', `Syncing version to deno.json: ${version}`);
132
+ denoConfig.version = version;
133
+ await plugins.smartfile.memory.toFs(JSON.stringify(denoConfig, null, 2) + '\n', denoJsonPath);
134
+ }
135
+ catch (error) {
136
+ throw new Error(`Failed to sync version to deno.json: ${error.message}`);
137
+ }
138
+ }
139
+ /**
140
+ * Bumps the project version based on project type
141
+ * @param projectType The detected project type
142
+ * @param versionType The type of version bump
143
+ * @returns The new version string
144
+ */
145
+ export async function bumpProjectVersion(projectType, versionType) {
146
+ switch (projectType) {
147
+ case 'npm':
148
+ return await bumpNpmVersion(versionType);
149
+ case 'deno':
150
+ return await bumpDenoVersion(versionType);
151
+ case 'both': {
152
+ // Bump npm version first (it handles git tags)
153
+ const newVersion = await bumpNpmVersion(versionType);
154
+ // Then sync to deno.json
155
+ await syncVersionToDenoJson(newVersion);
156
+ return newVersion;
157
+ }
158
+ case 'none':
159
+ throw new Error('Cannot bump version: no package.json or deno.json found');
160
+ default:
161
+ throw new Error(`Unknown project type: ${projectType}`);
162
+ }
163
+ }
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9tb2RfY29tbWl0L21vZC5oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxLQUFLLEtBQUssTUFBTSxhQUFhLENBQUM7QUFDckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSy9DOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsbUJBQW1CO0lBQ3ZDLElBQUksQ0FBQztRQUNILE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztZQUMzRCxRQUFRLEVBQUUsTUFBTTtZQUNoQixlQUFlLEVBQUUsRUFBRTtTQUNwQixDQUFDLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLGtCQUFrQixDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQzFFLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFeEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLDJEQUEyRCxDQUFDLENBQUM7WUFDaEYsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztRQUVELE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLDRCQUE0QixVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzdELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsNEJBQTRCLEtBQUssQ0FBQyxPQUFPLDRCQUE0QixDQUFDLENBQUM7UUFDMUYsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztBQUNILENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGlCQUFpQjtJQUNyQyxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3JFLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFL0QsTUFBTSxjQUFjLEdBQUcsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDOUUsTUFBTSxXQUFXLEdBQUcsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7SUFFeEUsSUFBSSxjQUFjLElBQUksV0FBVyxFQUFFLENBQUM7UUFDbEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsb0NBQW9DLENBQUMsQ0FBQztRQUN6RCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO1NBQU0sSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUMxQixNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBQzNDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztTQUFNLElBQUksV0FBVyxFQUFFLENBQUM7UUFDdkIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztRQUM1QyxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO1NBQU0sQ0FBQztRQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMseURBQXlELENBQUMsQ0FBQztJQUM3RSxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUyxtQkFBbUIsQ0FBQyxjQUFzQixFQUFFLFdBQXdCO0lBQzNFLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUVsRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXZELFFBQVEsV0FBVyxFQUFFLENBQUM7UUFDcEIsS0FBSyxPQUFPO1lBQ1YsS0FBSyxJQUFJLENBQUMsQ0FBQztZQUNYLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDVixLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ1YsTUFBTTtRQUNSLEtBQUssT0FBTztZQUNWLEtBQUssSUFBSSxDQUFDLENBQUM7WUFDWCxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ1YsTUFBTTtRQUNSLEtBQUssT0FBTztZQUNWLEtBQUssSUFBSSxDQUFDLENBQUM7WUFDWCxNQUFNO0lBQ1YsQ0FBQztJQUVELE9BQU8sR0FBRyxLQUFLLElBQUksS0FBSyxJQUFJLEtBQUssRUFBRSxDQUFDO0FBQ3RDLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxlQUFlLENBQUMsV0FBd0I7SUFDNUQsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUUvRCxJQUFJLENBQUM7UUFDSCxpQkFBaUI7UUFDakIsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUNsRCxZQUFZLENBQ1csQ0FBQztRQUUxQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBRUQsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztRQUMxQyxNQUFNLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxjQUFjLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFcEUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsOEJBQThCLGNBQWMsTUFBTSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBRW5GLGlCQUFpQjtRQUNqQixVQUFVLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQztRQUVoQyxxQkFBcUI7UUFDckIsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQzFDLFlBQVksQ0FDYixDQUFDO1FBRUYsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN4RSxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxLQUFLLFVBQVUsY0FBYyxDQUFDLFdBQXdCO0lBQ3BELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztRQUMzRCxRQUFRLEVBQUUsTUFBTTtRQUNoQixlQUFlLEVBQUUsRUFBRTtLQUNwQixDQUFDLENBQUM7SUFFSCxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxrREFBa0QsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNwRixNQUFNLE1BQU0sR0FBRyxNQUFNLGtCQUFrQixDQUFDLElBQUksQ0FBQyxlQUFlLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFFM0Usd0VBQXdFO0lBQ3hFLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMxRCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsS0FBSyxVQUFVLHFCQUFxQixDQUFDLE9BQWU7SUFDbEQsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUUvRCxJQUFJLENBQUM7UUFDSCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQ2xELFlBQVksQ0FDVyxDQUFDO1FBRTFCLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLGlDQUFpQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELFVBQVUsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBRTdCLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUMxQyxZQUFZLENBQ2IsQ0FBQztJQUNKLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDM0UsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsa0JBQWtCLENBQ3RDLFdBQXdCLEVBQ3hCLFdBQXdCO0lBRXhCLFFBQVEsV0FBVyxFQUFFLENBQUM7UUFDcEIsS0FBSyxLQUFLO1lBQ1IsT0FBTyxNQUFNLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUzQyxLQUFLLE1BQU07WUFDVCxPQUFPLE1BQU0sZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTVDLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNaLCtDQUErQztZQUMvQyxNQUFNLFVBQVUsR0FBRyxNQUFNLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNyRCx5QkFBeUI7WUFDekIsTUFBTSxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN4QyxPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDO1FBRUQsS0FBSyxNQUFNO1lBQ1QsTUFBTSxJQUFJLEtBQUssQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO1FBRTdFO1lBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUM1RCxDQUFDO0FBQ0gsQ0FBQyJ9
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.8",
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.8',
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,204 @@
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
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
+
100
+ try {
101
+ // Read deno.json
102
+ const denoConfig = plugins.smartfile.fs.toObjectSync(
103
+ denoJsonPath
104
+ ) as { version?: string };
105
+
106
+ if (!denoConfig.version) {
107
+ throw new Error('deno.json does not contain a version field');
108
+ }
109
+
110
+ const currentVersion = denoConfig.version;
111
+ const newVersion = calculateNewVersion(currentVersion, versionType);
112
+
113
+ logger.log('info', `Bumping deno.json version: ${currentVersion} → ${newVersion}`);
114
+
115
+ // Update version
116
+ denoConfig.version = newVersion;
117
+
118
+ // Write back to disk
119
+ await plugins.smartfile.memory.toFs(
120
+ JSON.stringify(denoConfig, null, 2) + '\n',
121
+ denoJsonPath
122
+ );
123
+
124
+ return newVersion;
125
+ } catch (error) {
126
+ throw new Error(`Failed to bump deno.json version: ${error.message}`);
127
+ }
128
+ }
129
+
130
+ /**
131
+ * Bumps the version in package.json using npm version command
132
+ * @param versionType Type of version bump
133
+ * @returns The new version string
134
+ */
135
+ async function bumpNpmVersion(versionType: VersionType): Promise<string> {
136
+ const smartshellInstance = new plugins.smartshell.Smartshell({
137
+ executor: 'bash',
138
+ sourceFilePaths: [],
139
+ });
140
+
141
+ logger.log('info', `Bumping package.json version using npm version ${versionType}`);
142
+ const result = await smartshellInstance.exec(`npm version ${versionType}`);
143
+
144
+ // npm version returns the new version with a 'v' prefix, e.g., "v1.2.3"
145
+ const newVersion = result.stdout.trim().replace(/^v/, '');
146
+ return newVersion;
147
+ }
148
+
149
+ /**
150
+ * Syncs the version from package.json to deno.json
151
+ * @param version The version to sync
152
+ */
153
+ async function syncVersionToDenoJson(version: string): Promise<void> {
154
+ const denoJsonPath = plugins.path.join(paths.cwd, 'deno.json');
155
+
156
+ try {
157
+ const denoConfig = plugins.smartfile.fs.toObjectSync(
158
+ denoJsonPath
159
+ ) as { version?: string };
160
+
161
+ logger.log('info', `Syncing version to deno.json: ${version}`);
162
+ denoConfig.version = version;
163
+
164
+ await plugins.smartfile.memory.toFs(
165
+ JSON.stringify(denoConfig, null, 2) + '\n',
166
+ denoJsonPath
167
+ );
168
+ } catch (error) {
169
+ throw new Error(`Failed to sync version to deno.json: ${error.message}`);
170
+ }
171
+ }
172
+
173
+ /**
174
+ * Bumps the project version based on project type
175
+ * @param projectType The detected project type
176
+ * @param versionType The type of version bump
177
+ * @returns The new version string
178
+ */
179
+ export async function bumpProjectVersion(
180
+ projectType: ProjectType,
181
+ versionType: VersionType
182
+ ): Promise<string> {
183
+ switch (projectType) {
184
+ case 'npm':
185
+ return await bumpNpmVersion(versionType);
186
+
187
+ case 'deno':
188
+ return await bumpDenoVersion(versionType);
189
+
190
+ case 'both': {
191
+ // Bump npm version first (it handles git tags)
192
+ const newVersion = await bumpNpmVersion(versionType);
193
+ // Then sync to deno.json
194
+ await syncVersionToDenoJson(newVersion);
195
+ return newVersion;
196
+ }
197
+
198
+ case 'none':
199
+ throw new Error('Cannot bump version: no package.json or deno.json found');
200
+
201
+ default:
202
+ throw new Error(`Unknown project type: ${projectType}`);
203
+ }
204
+ }