Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
b320af0b61 | |||
49e1ee1f39 | |||
cef31cf1ff | |||
74ecdde1ac |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -17,3 +17,5 @@ dist/
|
||||
dist_*/
|
||||
|
||||
#------# custom
|
||||
.serena
|
||||
test-output.json
|
||||
|
86
changelog.md
86
changelog.md
@@ -1,6 +1,23 @@
|
||||
# Changelog
|
||||
|
||||
## 2025-08-08 - 1.16.10 - fix(format)
|
||||
Improve concurrency control in caching and rollback modules, refine gitignore custom section handling, and enhance Prettier file processing.
|
||||
|
||||
- Added mutex locking in ChangeCache and RollbackManager to prevent race conditions during manifest updates
|
||||
- Updated gitignore logic to detect and preserve custom sections
|
||||
- Enhanced Prettier batching and file formatting for better performance
|
||||
|
||||
## 2025-08-08 - 1.16.9 - fix(format)
|
||||
|
||||
Improve concurrency control in cache and rollback modules, refine gitignore custom section handling, and enhance Prettier file processing
|
||||
|
||||
- Added mutex locking in ChangeCache and RollbackManager to prevent race conditions during manifest updates
|
||||
- Updated gitignore logic to detect and preserve existing custom sections from various markers
|
||||
- Simplified Prettier formatter to process files sequentially, skip files without extensions, and log detailed status
|
||||
- Minor refactoring in base formatter and tsconfig file updates for improved reliability
|
||||
|
||||
## 2025-08-08 - 1.16.8 - fix(format)
|
||||
|
||||
Improve concurrency control in cache and rollback management with mutex locking and refine formatting details
|
||||
|
||||
- Added 'withMutex' functions in ChangeCache and RollbackManager to synchronize file I/O operations
|
||||
@@ -8,6 +25,7 @@ Improve concurrency control in cache and rollback management with mutex locking
|
||||
- Fixed minor formatting issues in commit info and package.json
|
||||
|
||||
## 2025-08-08 - 1.16.7 - fix(core)
|
||||
|
||||
Improve formatting, logging, and rollback integrity in core modules
|
||||
|
||||
- Add .claude/settings.local.json with defined permissions for allowed commands
|
||||
@@ -16,6 +34,7 @@ Improve formatting, logging, and rollback integrity in core modules
|
||||
- Enhance logging messages and overall code clarity in CLI and commit modules
|
||||
|
||||
## 2025-08-08 - 1.16.6 - fix(changecache)
|
||||
|
||||
Improve cache manifest validation and atomic file writes; add local settings and overrides
|
||||
|
||||
- Add manifest structure validation and default fallback in getManifest
|
||||
@@ -25,6 +44,7 @@ Improve cache manifest validation and atomic file writes; add local settings and
|
||||
- Add an empty assets/overrides.json file for future overrides
|
||||
|
||||
## 2025-08-08 - 1.16.5 - fix(prettier)
|
||||
|
||||
Improve file selection in Prettier formatter, remove legacy package overrides, and update CI template indentation
|
||||
|
||||
- Added .claude/settings.local.json with updated permission settings for local commands
|
||||
@@ -33,12 +53,14 @@ Improve file selection in Prettier formatter, remove legacy package overrides, a
|
||||
- Refined Prettier formatter logic by defining include directories, root config files, and filtering duplicates instead of manual exclusion
|
||||
|
||||
## 2025-08-08 - 1.16.4 - fix(prettier)
|
||||
|
||||
Improve file exclusion in the Prettier formatter to skip unnecessary files and directories.
|
||||
|
||||
- Added exclusion patterns for node_modules, .git, dist, .nogit, coverage, .nyc_output, vendor, bower_components, jspm_packages, and minified files.
|
||||
- Optimized filtering logic to ensure only valid files are processed.
|
||||
|
||||
## 2025-08-08 - 1.16.3 - fix(changecache/prettier)
|
||||
|
||||
Skip directories during file processing to prevent errors in changecache and prettier formatting
|
||||
|
||||
- Removed unnecessary await on synchronous file reads in changecache
|
||||
@@ -46,18 +68,21 @@ Skip directories during file processing to prevent errors in changecache and pre
|
||||
- Filtered out directories in prettier formatter to avoid processing non-files
|
||||
|
||||
## 2025-08-07 - 1.16.2 - fix(format)
|
||||
|
||||
Fix format command confirmation prompt to correctly check user response
|
||||
|
||||
- Fixed bug where format command always showed "cancelled" even when user confirmed
|
||||
- Changed response check from `response.proceed` to `response.value` for SmartInteract compatibility
|
||||
|
||||
## 2025-08-04 - 1.16.1 - fix(package/config)
|
||||
|
||||
Move smartdiff dependency to runtime and add local bash permissions settings
|
||||
|
||||
- Moved '@push.rocks/smartdiff' from devDependencies to dependencies in package.json
|
||||
- Added .claude/settings.local.json with allowed bash commands (grep, mkdir, find, ls)
|
||||
|
||||
## 2025-05-19 - 1.16.0 - feat(format)
|
||||
|
||||
Enhance format module with rollback, diff reporting, and improved parallel execution
|
||||
|
||||
- Implemented rollback functionality with backup management and automatic rollback on error
|
||||
@@ -68,12 +93,14 @@ Enhance format module with rollback, diff reporting, and improved parallel execu
|
||||
- Updated package.json to include new dependency '@push.rocks/smartdiff'
|
||||
|
||||
## 2025-05-14 - 1.15.5 - fix(dependencies)
|
||||
|
||||
Update @git.zone/tsdoc to ^1.5.0 and @types/node to ^22.15.18
|
||||
|
||||
- Bumped @git.zone/tsdoc from ^1.4.5 to ^1.5.0
|
||||
- Bumped @types/node from ^22.15.17 to ^22.15.18
|
||||
|
||||
## 2025-05-13 - 1.15.4 - fix(package.json)
|
||||
|
||||
Update dependency versions: bump @git.zone/tsdoc, @push.rocks/lik, @push.rocks/smartlog, and @types/node to their latest releases
|
||||
|
||||
- Upgrade @git.zone/tsdoc from ^1.4.4 to ^1.4.5
|
||||
@@ -82,6 +109,7 @@ Update dependency versions: bump @git.zone/tsdoc, @push.rocks/lik, @push.rocks/s
|
||||
- Upgrade @types/node from ^22.14.1 to ^22.15.17
|
||||
|
||||
## 2025-04-15 - 1.15.3 - fix(deps)
|
||||
|
||||
update dependency versions and improve website template variable handling
|
||||
|
||||
- Bumped @git.zone/tsbuild from ^2.2.1 to ^2.3.2 and @types/node to ^22.14.1
|
||||
@@ -89,56 +117,65 @@ update dependency versions and improve website template variable handling
|
||||
- Refactored website template update to correctly supply variables with added logging
|
||||
|
||||
## 2025-04-15 - 1.15.2 - fix(website_update)
|
||||
|
||||
Await supplyVariables call in website update template
|
||||
|
||||
- Changed website template update to properly await the supplyVariables method
|
||||
- Ensured asynchronous consistency in updating website template variables
|
||||
|
||||
## 2025-04-15 - 1.15.1 - fix(cli)
|
||||
|
||||
Refresh internal CLI tooling and configuration for consistency.
|
||||
|
||||
|
||||
## 2025-04-15 - 1.15.0 - feat(config/template)
|
||||
|
||||
Add assetbrokerUrl and legalUrl fields to module config and update website template to supply these values
|
||||
|
||||
- Added assetbrokerUrl and legalUrl properties in ts/classes.gitzoneconfig.ts
|
||||
- Updated ts/mod_format/format.templates.ts to pass assetbrokerUrl and legalUrl to website template
|
||||
|
||||
## 2025-04-15 - 1.14.1 - fix(package.json)
|
||||
|
||||
Add packageManager field to specify pnpm version for consistent package management
|
||||
|
||||
- Inserted packageManager property in package.json with pnpm version info to ensure reproducible dependency installs
|
||||
|
||||
## 2025-04-15 - 1.14.0 - feat(tsconfig_update)
|
||||
|
||||
Add runafter directive to trigger gitzone format after tsconfig update
|
||||
|
||||
- Added runafter configuration in assets/templates/tsconfig_update/.smartscaf.yml to automate formatting task
|
||||
|
||||
## 2025-03-07 - 1.13.1 - fix(cli)
|
||||
|
||||
Improve commit message logging
|
||||
|
||||
- Updated logging to display recommended next commit details.
|
||||
- Enabled interactive prompt for choosing commit type and scope.
|
||||
|
||||
## 2025-02-28 - 1.13.0 - feat(templates)
|
||||
|
||||
Updated and added new TypeScript template files for npm projects
|
||||
|
||||
- Added new paths.ts and plugins.ts template files for npm projects.
|
||||
- Removed outdated some.plugins.ts template file.
|
||||
|
||||
## 2025-02-25 - 1.12.8 - fix(metadata)
|
||||
|
||||
Updated package and npmextra json description and keywords for enhanced development workflow clarity
|
||||
|
||||
- Updated the description in package.json to focus on project setup and management.
|
||||
- Aligned the keywords in both package.json and npmextra.json to include more relevant terms such as gitzone utilities, template management, and CI/CD.
|
||||
|
||||
## 2025-02-25 - 1.12.7 - fix(meta)
|
||||
|
||||
Fix issues in project metadata and configuration.
|
||||
|
||||
- Updated package metadata to ensure accurate project description and licensing.
|
||||
- Ensured npm access level configuration consistency within npmextra.json.
|
||||
|
||||
## 2025-02-25 - 1.12.7 - fix(ci)
|
||||
|
||||
Updated dependencies and added CI/CD workflows.
|
||||
|
||||
- Updated several dependencies in package.json for compatibility and security.
|
||||
@@ -147,6 +184,7 @@ Updated dependencies and added CI/CD workflows.
|
||||
- Ensured consistent formatting with Prettier and TypeScript configurations.
|
||||
|
||||
## 2025-01-29 - 1.12.6 - fix(project)
|
||||
|
||||
Minor fixes and cleanup
|
||||
|
||||
- Removed outdated pages/ directory entry in .gitignore.
|
||||
@@ -155,6 +193,7 @@ Minor fixes and cleanup
|
||||
- Fixed formatting issues across various TypeScript files.
|
||||
|
||||
## 2025-01-29 - 1.12.5 - fix(cli)
|
||||
|
||||
Initial implementation of CLI utility with project management features
|
||||
|
||||
- Integration of various plugins for logging, command-line interactions, and project management.
|
||||
@@ -162,34 +201,40 @@ Initial implementation of CLI utility with project management features
|
||||
- Implement commands for packaging, versioning, and deprecating npm packages.
|
||||
|
||||
## 2025-01-29 - 1.12.2 - fix(format)
|
||||
|
||||
Add overrides for peek-readable in package.json formatting
|
||||
|
||||
- Added a URL correction in the packageJson repository information.
|
||||
- Introduced support for pnpm overrides by including an `overrides.json` file.
|
||||
|
||||
## 2025-01-18 - 1.12.1 - fix(dependencies)
|
||||
|
||||
Update various package dependencies and Dockerfile base image
|
||||
|
||||
- Updated Dockerfile base image from 'alpinenpmci' to 'alpine_npmci'.
|
||||
- Upgraded @git.zone/tsbuild, @git.zone/tsrun, @git.zone/tsdoc, and other dependencies to their latest versions.
|
||||
|
||||
## 2025-01-17 - 1.12.0 - feat(build)
|
||||
|
||||
Update TypeScript configuration to support emit decorator metadata
|
||||
|
||||
- Added emitDecoratorMetadata to the tsconfig.json template in assets/templates/tsconfig_update.
|
||||
|
||||
## 2025-01-08 - 1.11.0 - feat(cli)
|
||||
|
||||
Add Docker command for cleaning up Docker system and extend deprecation command for multiple registries
|
||||
|
||||
- Added a new command 'docker' to handle Docker system cleanup operations.
|
||||
- Improved the 'deprecate' command to support deprecating packages across multiple npm registry URLs.
|
||||
|
||||
## 2025-01-01 - 1.10.10 - fix(templates)
|
||||
|
||||
Corrected typo in template file comment
|
||||
|
||||
- Fixed repeated comment in the template file for services under 'assets/templates/service/ts/some.plugins.ts'.
|
||||
|
||||
## 2025-01-01 - 1.10.9 - fix(templates)
|
||||
|
||||
Correct template file paths and organization for service projects
|
||||
|
||||
- Moved 'some.classes.some.ts' to 'classes.some.ts'
|
||||
@@ -197,60 +242,70 @@ Correct template file paths and organization for service projects
|
||||
- Resolved incorrect import paths in service templates
|
||||
|
||||
## 2025-01-01 - 1.10.8 - fix(assets/templates)
|
||||
|
||||
Update CI template configurations to use module.githost
|
||||
|
||||
- Replaced occurrences of {{git.host}} with {{module.githost}} in CI workflow files
|
||||
- Updated package dependencies for service template
|
||||
|
||||
## 2024-12-26 - 1.10.7 - fix(assets)
|
||||
|
||||
Correct URLs in templates and fix TypeScript declaration
|
||||
|
||||
- Updated incorrect URLs in Dockerfile templates to 'host.today'.
|
||||
- Fixed type declaration for 'TemplateResult' in header.ts file.
|
||||
|
||||
## 2024-12-08 - 1.10.6 - fix(ci)
|
||||
|
||||
Corrected Docker image URL in CI templates
|
||||
|
||||
- Updated Docker image URL from 'code.foss.global/hosttoday' to 'code.foss.global/host.today' in default_nottags.yaml and default_tags.yaml.
|
||||
- Adjusted gitignore template to include a custom section delineation.
|
||||
|
||||
## 2024-12-02 - 1.10.5 - fix(assets)
|
||||
|
||||
Update .gitignore template to remove pages directory
|
||||
|
||||
- Removed 'pages/' from the ignored directories in the .gitignore template.
|
||||
|
||||
## 2024-11-05 - 1.10.4 - fix(mod_format)
|
||||
|
||||
Correct file extension for TypeScript path configuration
|
||||
|
||||
- Fixed the TypeScript configuration to use correct file extensions for module subdirectories.
|
||||
|
||||
## 2024-10-27 - 1.10.3 - fix(mod_format)
|
||||
|
||||
Reorder TypeScript formatting steps in mod_format module
|
||||
|
||||
- Moved TypeScript configuration formatting earlier in the sequence for better logical consistency.
|
||||
|
||||
## 2024-10-27 - 1.10.2 - fix(format)
|
||||
|
||||
Add logging for tsconfig.json formatting
|
||||
|
||||
- Added an info log message for tsconfig.json formatting in format.tsconfig.ts.
|
||||
|
||||
## 2024-10-27 - 1.10.1 - fix(format)
|
||||
|
||||
Fixed async issue in tsconfig module lookup and corrected property access
|
||||
|
||||
|
||||
## 2024-10-27 - 1.10.0 - feat(mod_format)
|
||||
|
||||
Add support for tsconfig.json formatting
|
||||
|
||||
- Added a new script to format tsconfig.json.
|
||||
- Updated package.json to include `@git.zone/tspublish` as a dependency.
|
||||
|
||||
## 2024-10-23 - 1.9.126 - fix(format)
|
||||
|
||||
Remove redundant package.json property checks
|
||||
|
||||
- Removed property checks for `main`, `typings`, and `browserslist` from format.packagejson.ts
|
||||
- This change streamlines the formatting process by removing unnecessary exits
|
||||
|
||||
## 2024-09-29 - 1.9.125 - fix(cli)
|
||||
|
||||
Fix package version configuration and formatting issues
|
||||
|
||||
- Updated metadata fields in package.json (repository URL, bugs URL, and homepage).
|
||||
@@ -258,15 +313,17 @@ Fix package version configuration and formatting issues
|
||||
- Added missing Prettier default TypeScript and Markdown configurations.
|
||||
|
||||
## 2024-09-27 - 1.9.124 - fix(cli)
|
||||
|
||||
Ensured proper existence and initialization of readme files
|
||||
|
||||
- Ensured readme.md and readme.hints.md files are created and initialized if they do not exist.
|
||||
|
||||
## 2024-09-27 - 1.9.123 - fix(core)
|
||||
|
||||
No changes detected
|
||||
|
||||
|
||||
## 2024-09-27 - 1.9.123 - fix(core)
|
||||
|
||||
Update dependencies and improve build configurations
|
||||
|
||||
- Updated several dependencies in package.json for better compatibility
|
||||
@@ -277,88 +334,111 @@ Update dependencies and improve build configurations
|
||||
- Provided initial structure for readme and readme hints
|
||||
|
||||
## 2024-06-24 - 1.9.122 - fix(mod_commit)
|
||||
|
||||
Update package.json dependencies: @git.zone/tsdoc and @push.rocks/smartpromise to latest versions.
|
||||
|
||||
- - Updated @git.zone/tsdoc to ^1.3.12
|
||||
- - Updated @push.rocks/smartfile to ^11.0.21
|
||||
|
||||
## 2024-06-23 - 1.9.121 - fix(mod_commit)
|
||||
|
||||
Fix changelog template rendering by removing extra new line when no version details are provided.
|
||||
|
||||
- Update package.json dependencies: @git.zone/tsdoc and @push.rocks/smartpromise to latest versions.
|
||||
|
||||
## 2024-06-23 - 1.9.120 - fix(mod_commit)
|
||||
|
||||
Handle edge case for empty version details in changelog formatting
|
||||
|
||||
- Added check for the length of the recommendedNextVersionDetails array
|
||||
- Ensure no extra newline in changelog if there are no version details
|
||||
|
||||
## 2024-06-23 - 1.9.119 - fix(dependencies)
|
||||
|
||||
Update @git.zone/tsdoc to v1.3.8
|
||||
|
||||
- Updated @git.zone/tsdoc from v1.3.7 to v1.3.8 in package.json
|
||||
|
||||
## 2024-06-23 - 1.9.118 - fix(dependencies)
|
||||
|
||||
Update @git.zone/tsdoc to version 1.3.7
|
||||
|
||||
- Bump @git.zone/tsdoc from 1.3.6 to 1.3.7 in both package.json and pnpm-lock.yaml
|
||||
|
||||
## 2024-06-23 - 1.9.117 - fix(dependencies)
|
||||
|
||||
Update @git.zone/tsdoc dependency to v1.3.6
|
||||
|
||||
- Updated @git.zone/tsdoc version from 1.3.5 to 1.3.6 in package.json
|
||||
- Updated pnpm-lock.yaml to reflect the new version of @git.zone/tsdoc
|
||||
|
||||
## 2024-06-23 - 1.9.116 - fix(dependencies)
|
||||
|
||||
Update @git.zone/tsdoc to version 1.3.5
|
||||
|
||||
- Updated the @git.zone/tsdoc dependency in package.json and pnpm-lock.yaml from version 1.3.4 to 1.3.5
|
||||
- Removed the outdated changelog.md file.
|
||||
|
||||
## 2024-06-23 - 1.9.114 - fix(format)
|
||||
|
||||
Fixed formatting issues across multiple TypeScript files.
|
||||
|
||||
## 2024-06-23 - 1.9.113 - fix(mod_commit)
|
||||
|
||||
Remove extra new lines in changelog.
|
||||
|
||||
## 2024-06-23 - 1.9.112 - fix(core)
|
||||
|
||||
Update changelog formatting and remove outdated entries.
|
||||
|
||||
## 2024-06-23 - 1.9.111 - fix(changelog)
|
||||
|
||||
Remove outdated changelog entries and update formatting.
|
||||
|
||||
## 2024-06-23 - 1.9.110 - fix(dependencies)
|
||||
|
||||
Update @git.zone/tsdoc to version 1.3.4.
|
||||
|
||||
## 2024-06-23 - 1.9.109 - fix(changelog)
|
||||
|
||||
Remove outdated entries and adjust formatting in changelog.
|
||||
|
||||
## 2024-06-23 - 1.9.108 - fix(dependencies)
|
||||
|
||||
Update @git.zone/tsdoc dependency to version 1.3.2.
|
||||
|
||||
## 2024-06-23 - 1.9.107 - fix(changelog)
|
||||
|
||||
Remove placeholder entries and adjust formatting in changelog.
|
||||
|
||||
## 2024-06-23 - 1.9.106 - fix(dependencies)
|
||||
|
||||
Updated @git.zone/tsdoc from version 1.3.0 to 1.3.1.
|
||||
|
||||
## 2024-06-23 - 1.9.105 - fix(dependencies)
|
||||
|
||||
Updated @git.zone/tsdoc dependency from 1.2.2 to 1.3.0 in package.json and pnpm-lock.yaml.
|
||||
|
||||
## 2024-06-23 - 1.9.104 - fix(changelog)
|
||||
|
||||
Remove placeholder entries and adjust formatting in changelog.
|
||||
|
||||
## 2024-06-23 - 1.9.103 - fix(changelog)
|
||||
|
||||
Fix changelog to remove placeholder entries and adjust formatting.
|
||||
|
||||
## 2024-06-23 - 1.9.102 - fix(logging)
|
||||
|
||||
Optimize logger instantiation and configuration.
|
||||
|
||||
## 2024-06-23 - 1.9.101 - fix(metadata)
|
||||
|
||||
Ensure accurate project metadata in package.json.
|
||||
|
||||
## 2024-06-23 - 1.9.100 - fix(dependencies)
|
||||
|
||||
Updated @git.zone/tsdoc dependency version to ^1.2.2 in package.json and pnpm-lock.yaml.
|
||||
|
||||
## 2024-06-23 - 1.9.99 - fix(mod_commit)
|
||||
|
||||
Fix variable reassignment issue in changelog writing step.
|
||||
|
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@git.zone/cli",
|
||||
"private": false,
|
||||
"version": "1.16.8",
|
||||
"version": "1.16.10",
|
||||
"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.",
|
||||
"main": "dist_ts/index.ts",
|
||||
"typings": "dist_ts/index.d.ts",
|
||||
|
@@ -1,10 +1,11 @@
|
||||
# Gitzone CLI - Development Hints
|
||||
|
||||
* the cli of the git.zone project.
|
||||
- the cli of the git.zone project.
|
||||
|
||||
## Project Overview
|
||||
|
||||
Gitzone CLI (`@git.zone/cli`) is a comprehensive toolbelt for streamlining local development cycles. It provides utilities for:
|
||||
|
||||
- Project initialization and templating (via smartscaf)
|
||||
- Code formatting and standardization
|
||||
- Version control and commit management
|
||||
@@ -14,12 +15,14 @@ Gitzone CLI (`@git.zone/cli`) is a comprehensive toolbelt for streamlining local
|
||||
## Architecture
|
||||
|
||||
### Core Structure
|
||||
|
||||
- Main CLI entry: `cli.ts` / `cli.child.ts`
|
||||
- Modular architecture with separate modules in `ts/mod_*` directories
|
||||
- Each module handles specific functionality (format, commit, docker, etc.)
|
||||
- Extensive use of plugins pattern via `plugins.ts` files
|
||||
|
||||
### Configuration Management
|
||||
|
||||
- Uses `npmextra.json` for all tool configuration
|
||||
- Configuration stored under `gitzone` key in npmextra
|
||||
- No separate `.gitzonerc` file - everything in npmextra.json
|
||||
@@ -30,6 +33,7 @@ Gitzone CLI (`@git.zone/cli`) is a comprehensive toolbelt for streamlining local
|
||||
The format module is responsible for project standardization:
|
||||
|
||||
#### Current Modules:
|
||||
|
||||
1. **cleanup** - Removes obsolete files (yarn.lock, tslint.json, etc.)
|
||||
2. **copy** - File copying with glob patterns (fully implemented)
|
||||
3. **gitignore** - Creates/updates .gitignore from templates
|
||||
@@ -42,6 +46,7 @@ The format module is responsible for project standardization:
|
||||
10. **tsconfig** - Formats TypeScript configuration
|
||||
|
||||
#### Execution Order (Dependency-Based):
|
||||
|
||||
- Modules are now executed in parallel groups based on dependencies
|
||||
- Independent modules run concurrently for better performance
|
||||
- Dependency analyzer ensures correct execution order
|
||||
@@ -182,7 +187,7 @@ gitzone format --clean-backups
|
||||
|
||||
## API Changes
|
||||
|
||||
- smartfile API updated to use fs.* and memory.* namespaces
|
||||
- smartfile API updated to use fs._ and memory._ namespaces
|
||||
- smartnpm requires instance creation: `new NpmRegistry()`
|
||||
- All file operations now use updated APIs
|
||||
- Type imports use `import type` for proper verbatim module syntax
|
27
readme.md
27
readme.md
@@ -47,12 +47,14 @@ gitzone template [template-name]
|
||||
```
|
||||
|
||||
**Available templates:**
|
||||
|
||||
- **`npm`** - TypeScript npm package with testing, CI/CD, and full tooling
|
||||
- **`service`** - Microservice architecture with Docker support
|
||||
- **`website`** - Modern web application with LitElement and service workers
|
||||
- **`wcc`** - Web Component Collection for reusable UI components
|
||||
|
||||
Each template comes pre-configured with:
|
||||
|
||||
- ✅ TypeScript with modern configurations
|
||||
- ✅ Automated testing setup
|
||||
- ✅ CI/CD pipelines (GitLab/GitHub)
|
||||
@@ -81,6 +83,7 @@ gitzone format --verbose
|
||||
```
|
||||
|
||||
**Format features:**
|
||||
|
||||
- 🔄 **Smart caching** - Only processes changed files
|
||||
- 🛡️ **Rollback support** - Undo formatting changes if needed
|
||||
- 📊 **Detailed reporting** - See exactly what changed
|
||||
@@ -88,6 +91,7 @@ gitzone format --verbose
|
||||
- 🎯 **Module-specific formatting** - Target specific formatters
|
||||
|
||||
**Rollback capabilities:**
|
||||
|
||||
```bash
|
||||
# List all available backups
|
||||
gitzone format --list-backups
|
||||
@@ -103,6 +107,7 @@ gitzone format --clean-backups
|
||||
```
|
||||
|
||||
**Formatters included:**
|
||||
|
||||
- **Prettier** - JavaScript/TypeScript code formatting
|
||||
- **License** - Ensure proper licensing
|
||||
- **Package.json** - Standardize package configurations
|
||||
@@ -121,6 +126,7 @@ gitzone commit
|
||||
```
|
||||
|
||||
Features:
|
||||
|
||||
- 📝 Interactive commit message builder
|
||||
- 🏷️ Automatic version bumping (major/minor/patch)
|
||||
- 📜 Changelog generation
|
||||
@@ -128,6 +134,7 @@ Features:
|
||||
- 🎯 Conventional commit compliance
|
||||
|
||||
The commit wizard guides you through:
|
||||
|
||||
1. **Type selection** (feat/fix/docs/style/refactor/perf/test/chore)
|
||||
2. **Scope definition** (component/module affected)
|
||||
3. **Description crafting**
|
||||
@@ -153,6 +160,7 @@ gitzone meta remove [name]
|
||||
```
|
||||
|
||||
Perfect for:
|
||||
|
||||
- Monorepo management
|
||||
- Multi-package projects
|
||||
- Coordinated deployments
|
||||
@@ -168,6 +176,7 @@ gitzone docker prune
|
||||
```
|
||||
|
||||
This command removes:
|
||||
|
||||
- Stopped containers
|
||||
- Unused images
|
||||
- Dangling volumes
|
||||
@@ -196,6 +205,7 @@ gitzone deprecate
|
||||
```
|
||||
|
||||
Interactive wizard for:
|
||||
|
||||
- Setting deprecation notices
|
||||
- Guiding users to replacements
|
||||
- Updating registry metadata
|
||||
@@ -210,6 +220,7 @@ gitzone start
|
||||
```
|
||||
|
||||
Automatically:
|
||||
|
||||
- Checks out master branch
|
||||
- Pulls latest changes
|
||||
- Installs dependencies
|
||||
@@ -266,18 +277,21 @@ Customize gitzone behavior through `npmextra.json`:
|
||||
## 🏆 Best Practices
|
||||
|
||||
### For New Projects
|
||||
|
||||
1. Start with a template: `gitzone template npm`
|
||||
2. Customize the generated structure
|
||||
3. Run initial format: `gitzone format`
|
||||
4. Set up CI/CD: `gitzone open ci`
|
||||
|
||||
### For Existing Projects
|
||||
|
||||
1. Initialize: `gitzone start`
|
||||
2. Format codebase: `gitzone format --dry-run` (preview first!)
|
||||
3. Apply formatting: `gitzone format --yes`
|
||||
4. Commit changes: `gitzone commit`
|
||||
|
||||
### For Teams
|
||||
|
||||
1. Document format preferences in `npmextra.json`
|
||||
2. Use `--save-plan` for reviewable format changes
|
||||
3. Enable rollback for safety
|
||||
@@ -286,6 +300,7 @@ Customize gitzone behavior through `npmextra.json`:
|
||||
## 🎯 Common Workflows
|
||||
|
||||
### Clean Development Cycle
|
||||
|
||||
```bash
|
||||
# 1. Start fresh
|
||||
gitzone start
|
||||
@@ -304,6 +319,7 @@ gitzone commit
|
||||
```
|
||||
|
||||
### Multi-Repository Management
|
||||
|
||||
```bash
|
||||
# 1. Set up meta repository
|
||||
gitzone meta init
|
||||
@@ -318,6 +334,7 @@ gitzone meta update
|
||||
```
|
||||
|
||||
### Safe Formatting with Rollback
|
||||
|
||||
```bash
|
||||
# 1. Preview changes
|
||||
gitzone format --dry-run
|
||||
@@ -335,17 +352,20 @@ gitzone format --rollback
|
||||
## 🔌 Integrations
|
||||
|
||||
### CI/CD Platforms
|
||||
|
||||
- **GitLab CI** - Full pipeline support with templates
|
||||
- **GitHub Actions** - Automated workflows
|
||||
- **Docker** - Container-based deployments
|
||||
|
||||
### Development Tools
|
||||
|
||||
- **TypeScript** - First-class support
|
||||
- **Prettier** - Code formatting
|
||||
- **ESLint** - Linting (via format modules)
|
||||
- **npm/pnpm** - Package management
|
||||
|
||||
### Version Control
|
||||
|
||||
- **Git** - Deep integration
|
||||
- **Semantic Versioning** - Automatic version bumping
|
||||
- **Conventional Commits** - Standardized commit messages
|
||||
@@ -361,19 +381,25 @@ gitzone format --rollback
|
||||
## 🐛 Troubleshooting
|
||||
|
||||
### Format Command Shows "Cancelled"
|
||||
|
||||
If the format command shows cancelled even after confirming:
|
||||
|
||||
- Check your `npmextra.json` configuration
|
||||
- Try with `--yes` flag to skip confirmation
|
||||
- Use `--verbose` for detailed output
|
||||
|
||||
### Docker Commands Fail
|
||||
|
||||
Ensure Docker daemon is running:
|
||||
|
||||
```bash
|
||||
docker info
|
||||
```
|
||||
|
||||
### Template Creation Issues
|
||||
|
||||
Verify npm/pnpm is properly configured:
|
||||
|
||||
```bash
|
||||
npm config get registry
|
||||
```
|
||||
@@ -381,6 +407,7 @@ npm config get registry
|
||||
## 📈 Performance
|
||||
|
||||
gitzone is optimized for speed:
|
||||
|
||||
- **Parallel processing** for format operations
|
||||
- **Smart caching** to avoid redundant work
|
||||
- **Incremental updates** for meta repositories
|
||||
|
@@ -3,11 +3,13 @@
|
||||
Please reread /home/philkunz/.claude/CLAUDE.md before proceeding with any implementation.
|
||||
|
||||
## Overview
|
||||
|
||||
This plan outlines improvements for the gitzone format module to enhance its functionality, reliability, and maintainability.
|
||||
|
||||
## Phase 1: Core Improvements (High Priority) - COMPLETED ✅
|
||||
|
||||
### 1. Enhanced Error Handling & Recovery ✅
|
||||
|
||||
- [x] Implement rollback mechanism for failed format operations
|
||||
- [x] Add detailed error messages with recovery suggestions
|
||||
- [x] Create a `--dry-run` flag to preview changes before applying
|
||||
@@ -15,12 +17,14 @@ This plan outlines improvements for the gitzone format module to enhance its fun
|
||||
- [x] Implement plan → action workflow as default behavior
|
||||
|
||||
### 2. Complete Missing Functionality ✅
|
||||
|
||||
- [x] Implement the `ensureDependency` function in format.packagejson.ts
|
||||
- [x] Develop the copy module for file pattern-based copying
|
||||
- [x] Add dependency version constraint management
|
||||
- [x] Support workspace/monorepo configurations (via configuration)
|
||||
|
||||
### 3. Configuration & Flexibility ✅
|
||||
|
||||
- [x] Extend npmextra.json gitzone configuration section
|
||||
- [x] Allow custom license exclusion/inclusion lists
|
||||
- [x] Make format steps configurable (skip/include specific modules)
|
||||
@@ -28,6 +32,7 @@ This plan outlines improvements for the gitzone format module to enhance its fun
|
||||
- [x] Add format profiles for different project types
|
||||
|
||||
### 4. Architecture Changes ✅
|
||||
|
||||
- [x] Introduce a `FormatContext` class to manage state across modules
|
||||
- [x] Create abstract `BaseFormatter` class for consistent module structure
|
||||
- [x] Implement event system for inter-module communication (via context)
|
||||
@@ -37,12 +42,14 @@ This plan outlines improvements for the gitzone format module to enhance its fun
|
||||
## Phase 2: Performance & Reporting (Medium Priority) - COMPLETED ✅
|
||||
|
||||
### 5. Performance Optimizations ✅
|
||||
|
||||
- [x] Implement parallel execution for independent format modules
|
||||
- [x] Add file change detection to skip unchanged files
|
||||
- [x] Create format cache to track last formatted state
|
||||
- [x] Optimize Prettier runs by batching files
|
||||
|
||||
### 6. Enhanced Reporting & Visibility ✅
|
||||
|
||||
- [x] Generate comprehensive format report showing all changes
|
||||
- [x] Add diff view for file modifications
|
||||
- [x] Create verbose logging option
|
||||
@@ -51,30 +58,35 @@ This plan outlines improvements for the gitzone format module to enhance its fun
|
||||
## Phase 3: Advanced Features (Lower Priority) - PARTIALLY COMPLETED
|
||||
|
||||
### 7. Better Integration & Extensibility ⏳
|
||||
|
||||
- [ ] Create plugin system for custom format modules
|
||||
- [ ] Add hooks for pre/post format operations
|
||||
- [ ] Support custom validation rules
|
||||
- [ ] Integrate with git hooks for pre-commit formatting
|
||||
|
||||
### 8. Improved Template Integration ⏳
|
||||
|
||||
- [ ] Better error handling when smartscaf operations fail
|
||||
- [ ] Add pre/post template hooks for custom processing
|
||||
- [ ] Validate template results before proceeding with format
|
||||
- [ ] Support skipping template updates via configuration
|
||||
|
||||
### 9. Enhanced License Management ⏳
|
||||
|
||||
- [ ] Make license checking configurable (partial)
|
||||
- [ ] Add license compatibility matrix
|
||||
- [x] Support license exceptions for specific packages
|
||||
- [ ] Generate license report for compliance
|
||||
|
||||
### 10. Better Package.json Management ⏳
|
||||
|
||||
- [ ] Smart dependency sorting and grouping
|
||||
- [ ] Automated script generation based on project type
|
||||
- [ ] Support for pnpm workspace configurations
|
||||
- [ ] Validation of package.json schema
|
||||
|
||||
### 11. Quality of Life Improvements ⏳
|
||||
|
||||
- [ ] Interactive mode for format configuration
|
||||
- [ ] Undo/redo capability for format operations
|
||||
- [ ] Format presets for common scenarios
|
||||
|
@@ -3,6 +3,6 @@
|
||||
*/
|
||||
export const commitinfo = {
|
||||
name: '@git.zone/cli',
|
||||
version: '1.16.8',
|
||||
version: '1.16.10',
|
||||
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.'
|
||||
}
|
||||
|
@@ -53,7 +53,19 @@ export abstract class BaseFormatter {
|
||||
}
|
||||
|
||||
protected async modifyFile(filepath: string, content: string): Promise<void> {
|
||||
await plugins.smartfile.memory.toFs(content, filepath);
|
||||
// Validate filepath before writing
|
||||
if (!filepath || filepath.trim() === '') {
|
||||
throw new Error(`Invalid empty filepath in modifyFile`);
|
||||
}
|
||||
|
||||
// Ensure we have a proper path with directory component
|
||||
// If the path has no directory component (e.g., "package.json"), prepend "./"
|
||||
let normalizedPath = filepath;
|
||||
if (!plugins.path.parse(filepath).dir) {
|
||||
normalizedPath = './' + filepath;
|
||||
}
|
||||
|
||||
await plugins.smartfile.memory.toFs(content, normalizedPath);
|
||||
}
|
||||
|
||||
protected async createFile(filepath: string, content: string): Promise<void> {
|
||||
|
@@ -8,15 +8,40 @@ const gitignorePath = plugins.path.join(paths.cwd, './.gitignore');
|
||||
|
||||
export const run = async (projectArg: Project) => {
|
||||
const gitignoreExists = await plugins.smartfile.fs.fileExists(gitignorePath);
|
||||
const templateModule = await import('../mod_template/index.js');
|
||||
const ciTemplate = await templateModule.getTemplate('gitignore');
|
||||
let customContent = '';
|
||||
|
||||
if (gitignoreExists) {
|
||||
// lets get the existing gitignore file
|
||||
const existingGitIgnoreString =
|
||||
plugins.smartfile.fs.toStringSync(gitignorePath);
|
||||
let customPart = existingGitIgnoreString.split('# custom\n')[1];
|
||||
customPart ? null : (customPart = '');
|
||||
|
||||
// Check for different custom section markers
|
||||
const customMarkers = ['#------# custom', '# custom'];
|
||||
for (const marker of customMarkers) {
|
||||
const splitResult = existingGitIgnoreString.split(marker);
|
||||
if (splitResult.length > 1) {
|
||||
// Get everything after the marker (excluding the marker itself)
|
||||
customContent = splitResult[1].trim();
|
||||
break;
|
||||
}
|
||||
ciTemplate.writeToDisk(paths.cwd);
|
||||
}
|
||||
}
|
||||
|
||||
// Write the template
|
||||
const templateModule = await import('../mod_template/index.js');
|
||||
const ciTemplate = await templateModule.getTemplate('gitignore');
|
||||
await ciTemplate.writeToDisk(paths.cwd);
|
||||
|
||||
// Append the custom content if it exists
|
||||
if (customContent) {
|
||||
const newGitignoreContent =
|
||||
plugins.smartfile.fs.toStringSync(gitignorePath);
|
||||
// The template already ends with "#------# custom", so just append the content
|
||||
const finalContent =
|
||||
newGitignoreContent.trimEnd() + '\n' + customContent + '\n';
|
||||
await plugins.smartfile.fs.toFs(finalContent, gitignorePath);
|
||||
logger.log('info', 'Updated .gitignore while preserving custom section!');
|
||||
} else {
|
||||
logger.log('info', 'Added a .gitignore!');
|
||||
}
|
||||
};
|
||||
|
@@ -83,10 +83,10 @@ export const run = async (projectArg: Project) => {
|
||||
type: 'git',
|
||||
url: `https://${gitzoneData.module.githost}/${gitzoneData.module.gitscope}/${gitzoneData.module.gitrepo}.git`,
|
||||
};
|
||||
(packageJson.bugs = {
|
||||
((packageJson.bugs = {
|
||||
url: `https://${gitzoneData.module.githost}/${gitzoneData.module.gitscope}/${gitzoneData.module.gitrepo}/issues`,
|
||||
}),
|
||||
(packageJson.homepage = `https://${gitzoneData.module.githost}/${gitzoneData.module.gitscope}/${gitzoneData.module.gitrepo}#readme`);
|
||||
(packageJson.homepage = `https://${gitzoneData.module.githost}/${gitzoneData.module.gitscope}/${gitzoneData.module.gitrepo}#readme`));
|
||||
|
||||
// Check for module type
|
||||
if (!packageJson.type) {
|
||||
|
@@ -29,8 +29,9 @@ export class PrettierFormatter extends BaseFormatter {
|
||||
'README.md',
|
||||
'changelog.md',
|
||||
'CHANGELOG.md',
|
||||
'license',
|
||||
'LICENSE',
|
||||
// Skip files without extensions as prettier can't infer parser
|
||||
// 'license',
|
||||
// 'LICENSE',
|
||||
'*.md',
|
||||
];
|
||||
|
||||
@@ -102,26 +103,15 @@ export class PrettierFormatter extends BaseFormatter {
|
||||
try {
|
||||
await this.preExecute();
|
||||
|
||||
// Batch process files
|
||||
const batchSize = 10; // Process 10 files at a time
|
||||
const batches: IPlannedChange[][] = [];
|
||||
|
||||
for (let i = 0; i < changes.length; i += batchSize) {
|
||||
batches.push(changes.slice(i, i + batchSize));
|
||||
}
|
||||
logVerbose(`Processing ${changes.length} files sequentially`);
|
||||
|
||||
// Process files sequentially to avoid prettier cache/state issues
|
||||
for (let i = 0; i < changes.length; i++) {
|
||||
const change = changes[i];
|
||||
logVerbose(
|
||||
`Processing ${changes.length} files in ${batches.length} batches`,
|
||||
`Processing file ${i + 1}/${changes.length}: ${change.path}`,
|
||||
);
|
||||
|
||||
for (let i = 0; i < batches.length; i++) {
|
||||
const batch = batches[i];
|
||||
logVerbose(
|
||||
`Processing batch ${i + 1}/${batches.length} (${batch.length} files)`,
|
||||
);
|
||||
|
||||
// Process batch in parallel
|
||||
const promises = batch.map(async (change) => {
|
||||
try {
|
||||
await this.applyChange(change);
|
||||
this.stats.recordFileOperation(this.name, change.type, true);
|
||||
@@ -133,9 +123,6 @@ export class PrettierFormatter extends BaseFormatter {
|
||||
);
|
||||
// Don't throw - continue with other files
|
||||
}
|
||||
});
|
||||
|
||||
await Promise.all(promises);
|
||||
}
|
||||
|
||||
await this.postExecute();
|
||||
@@ -151,11 +138,32 @@ export class PrettierFormatter extends BaseFormatter {
|
||||
if (change.type !== 'modify') return;
|
||||
|
||||
try {
|
||||
// Validate the path before processing
|
||||
if (!change.path || change.path.trim() === '') {
|
||||
logger.log(
|
||||
'error',
|
||||
`Invalid empty path in change: ${JSON.stringify(change)}`,
|
||||
);
|
||||
throw new Error('Invalid empty path');
|
||||
}
|
||||
|
||||
// Read current content
|
||||
const content = plugins.smartfile.fs.toStringSync(change.path);
|
||||
|
||||
// Format with prettier
|
||||
const prettier = await import('prettier');
|
||||
|
||||
// Skip files that prettier can't parse without explicit parser
|
||||
const fileExt = plugins.path.extname(change.path).toLowerCase();
|
||||
if (!fileExt || fileExt === '') {
|
||||
// Files without extensions need explicit parser
|
||||
logVerbose(
|
||||
`Skipping ${change.path} - no file extension for parser inference`,
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
const formatted = await prettier.format(content, {
|
||||
filepath: change.path,
|
||||
...(await this.getPrettierConfig()),
|
||||
@@ -163,13 +171,38 @@ export class PrettierFormatter extends BaseFormatter {
|
||||
|
||||
// Only write if content actually changed
|
||||
if (formatted !== content) {
|
||||
// Debug: log the path being written
|
||||
logVerbose(`Writing formatted content to: ${change.path}`);
|
||||
await this.modifyFile(change.path, formatted);
|
||||
logVerbose(`Formatted ${change.path}`);
|
||||
} else {
|
||||
logVerbose(`No formatting changes for ${change.path}`);
|
||||
}
|
||||
} catch (prettierError) {
|
||||
// Check if it's a parser error
|
||||
if (
|
||||
prettierError.message &&
|
||||
prettierError.message.includes('No parser could be inferred')
|
||||
) {
|
||||
logVerbose(`Skipping ${change.path} - ${prettierError.message}`);
|
||||
return; // Skip this file silently
|
||||
}
|
||||
throw prettierError;
|
||||
}
|
||||
} catch (error) {
|
||||
logger.log('error', `Failed to format ${change.path}: ${error.message}`);
|
||||
// Log the full error stack for debugging mkdir issues
|
||||
if (error.message && error.message.includes('mkdir')) {
|
||||
logger.log(
|
||||
'error',
|
||||
`Failed to format ${change.path}: ${error.message}`,
|
||||
);
|
||||
logger.log('error', `Error stack: ${error.stack}`);
|
||||
} else {
|
||||
logger.log(
|
||||
'error',
|
||||
`Failed to format ${change.path}: ${error.message}`,
|
||||
);
|
||||
}
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
@@ -185,5 +185,8 @@ export const handleListBackups = async (): Promise<void> => {
|
||||
};
|
||||
|
||||
export const handleCleanBackups = async (): Promise<void> => {
|
||||
logger.log('info', 'Backup cleaning has been disabled - backup system removed');
|
||||
logger.log(
|
||||
'info',
|
||||
'Backup cleaning has been disabled - backup system removed',
|
||||
);
|
||||
};
|
||||
|
@@ -10,7 +10,5 @@
|
||||
"baseUrl": ".",
|
||||
"paths": {}
|
||||
},
|
||||
"exclude": [
|
||||
"dist_*/**/*.d.ts"
|
||||
]
|
||||
"exclude": ["dist_*/**/*.d.ts"]
|
||||
}
|
Reference in New Issue
Block a user