Compare commits

...

4 Commits

Author SHA1 Message Date
39a31a4304 1.16.4
Some checks failed
Default (tags) / security (push) Failing after 1s
Default (tags) / test (push) Failing after 1s
Default (tags) / release (push) Has been skipped
Default (tags) / metadata (push) Has been skipped
2025-08-08 05:28:02 +00:00
b629a7d70b fix(prettier): Improve file exclusion in the Prettier formatter to skip unnecessary files and directories. 2025-08-08 05:28:01 +00:00
4003944139 1.16.3
Some checks failed
Default (tags) / security (push) Failing after 1s
Default (tags) / test (push) Failing after 1s
Default (tags) / release (push) Has been skipped
Default (tags) / metadata (push) Has been skipped
2025-08-08 05:18:19 +00:00
83d374dffd fix(changecache/prettier): Skip directories during file processing to prevent errors in changecache and prettier formatting 2025-08-08 05:18:19 +00:00
5 changed files with 81 additions and 6 deletions

View File

@@ -1,5 +1,18 @@
# Changelog # Changelog
## 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
- Added directory checks in changecache to immediately skip directories
- Filtered out directories in prettier formatter to avoid processing non-files
## 2025-08-07 - 1.16.2 - fix(format) ## 2025-08-07 - 1.16.2 - fix(format)
Fix format command confirmation prompt to correctly check user response Fix format command confirmation prompt to correctly check user response

View File

@@ -1,7 +1,7 @@
{ {
"name": "@git.zone/cli", "name": "@git.zone/cli",
"private": false, "private": false,
"version": "1.16.2", "version": "1.16.4",
"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.", "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", "main": "dist_ts/index.ts",
"typings": "dist_ts/index.d.ts", "typings": "dist_ts/index.d.ts",

View File

@@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@git.zone/cli', name: '@git.zone/cli',
version: '1.16.1', version: '1.16.4',
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.' 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.'
} }

View File

@@ -38,7 +38,7 @@ export class ChangeCache {
}; };
} }
const content = await plugins.smartfile.fs.toStringSync(this.manifestPath); const content = plugins.smartfile.fs.toStringSync(this.manifestPath);
return JSON.parse(content); return JSON.parse(content);
} }
@@ -59,7 +59,13 @@ export class ChangeCache {
// Get current file stats // Get current file stats
const stats = await plugins.smartfile.fs.stat(absolutePath); const stats = await plugins.smartfile.fs.stat(absolutePath);
const content = await plugins.smartfile.fs.toStringSync(absolutePath);
// Skip directories
if (stats.isDirectory()) {
return false; // Directories are not processed
}
const content = plugins.smartfile.fs.toStringSync(absolutePath);
const currentChecksum = this.calculateChecksum(content); const currentChecksum = this.calculateChecksum(content);
// Get cached info // Get cached info
@@ -83,6 +89,12 @@ export class ChangeCache {
// Get current file stats // Get current file stats
const stats = await plugins.smartfile.fs.stat(absolutePath); const stats = await plugins.smartfile.fs.stat(absolutePath);
// Skip directories
if (stats.isDirectory()) {
return; // Don't cache directories
}
const content = await plugins.smartfile.fs.toStringSync(absolutePath); const content = await plugins.smartfile.fs.toStringSync(absolutePath);
const checksum = this.calculateChecksum(content); const checksum = this.calculateChecksum(content);

View File

@@ -12,11 +12,61 @@ export class PrettierFormatter extends BaseFormatter {
const changes: IPlannedChange[] = []; const changes: IPlannedChange[] = [];
const globPattern = '**/*.{ts,tsx,js,jsx,json,md,css,scss,html,xml,yaml,yml}'; const globPattern = '**/*.{ts,tsx,js,jsx,json,md,css,scss,html,xml,yaml,yml}';
// Directories to exclude from formatting
const excludePatterns = [
'node_modules/**',
'.git/**',
'dist/**',
'dist_*/**',
'.nogit/**',
'coverage/**',
'.nyc_output/**',
'vendor/**',
'bower_components/**',
'jspm_packages/**',
'*.min.js',
'*.min.css'
];
// Get all files that match the pattern // Get all files that match the pattern
const files = await plugins.smartfile.fs.listFileTree('.', globPattern); const files = await plugins.smartfile.fs.listFileTree('.', globPattern);
// Check which files need formatting // Filter out excluded directories and ensure we only process files
const validFiles: string[] = [];
for (const file of files) { for (const file of files) {
// Check if file matches any exclude pattern
let shouldExclude = false;
for (const pattern of excludePatterns) {
// Simple pattern matching for common cases
const patternBase = pattern.replace('/**', '').replace('**/', '').replace('*', '');
if (pattern.endsWith('/**') && file.startsWith(patternBase + '/')) {
shouldExclude = true;
logVerbose(`Excluding ${file} - matches exclude pattern ${pattern}`);
break;
} else if (pattern.startsWith('*.') && file.endsWith(patternBase)) {
shouldExclude = true;
logVerbose(`Excluding ${file} - matches exclude pattern ${pattern}`);
break;
}
}
if (shouldExclude) {
continue;
}
try {
const stats = await plugins.smartfile.fs.stat(file);
if (!stats.isDirectory()) {
validFiles.push(file);
}
} catch (error) {
// Skip files that can't be accessed
logVerbose(`Skipping ${file} - cannot access: ${error.message}`);
}
}
// Check which files need formatting
for (const file of validFiles) {
// Skip files that haven't changed // Skip files that haven't changed
if (!await this.shouldProcessFile(file)) { if (!await this.shouldProcessFile(file)) {
logVerbose(`Skipping ${file} - no changes detected`); logVerbose(`Skipping ${file} - no changes detected`);
@@ -85,7 +135,7 @@ export class PrettierFormatter extends BaseFormatter {
try { try {
// Read current content // Read current content
const content = await plugins.smartfile.fs.toStringSync(change.path); const content = plugins.smartfile.fs.toStringSync(change.path);
// Format with prettier // Format with prettier
const prettier = await import('prettier'); const prettier = await import('prettier');