Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
39a31a4304 | |||
b629a7d70b | |||
4003944139 | |||
83d374dffd |
13
changelog.md
13
changelog.md
@@ -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
|
||||||
|
|
||||||
|
@@ -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",
|
||||||
|
@@ -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.'
|
||||||
}
|
}
|
||||||
|
@@ -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);
|
||||||
|
|
||||||
|
@@ -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');
|
||||||
|
Reference in New Issue
Block a user