From 83d374dffd5eac55d78af654166e92e098cb7ef5 Mon Sep 17 00:00:00 2001 From: Juergen Kunz Date: Fri, 8 Aug 2025 05:18:19 +0000 Subject: [PATCH] fix(changecache/prettier): Skip directories during file processing to prevent errors in changecache and prettier formatting --- changelog.md | 7 +++++++ ts/00_commitinfo_data.ts | 2 +- ts/mod_format/classes.changecache.ts | 16 ++++++++++++++-- ts/mod_format/formatters/prettier.formatter.ts | 18 ++++++++++++++++-- 4 files changed, 38 insertions(+), 5 deletions(-) diff --git a/changelog.md b/changelog.md index a834b3e..f23688a 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,12 @@ # Changelog +## 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) Fix format command confirmation prompt to correctly check user response diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index 3ddded5..0926f4d 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@git.zone/cli', - version: '1.16.1', + version: '1.16.3', 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.' } diff --git a/ts/mod_format/classes.changecache.ts b/ts/mod_format/classes.changecache.ts index 0117d56..f368787 100644 --- a/ts/mod_format/classes.changecache.ts +++ b/ts/mod_format/classes.changecache.ts @@ -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); } @@ -59,7 +59,13 @@ export class ChangeCache { // Get current file stats 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); // Get cached info @@ -83,6 +89,12 @@ export class ChangeCache { // Get current file stats 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 checksum = this.calculateChecksum(content); diff --git a/ts/mod_format/formatters/prettier.formatter.ts b/ts/mod_format/formatters/prettier.formatter.ts index f837456..d725702 100644 --- a/ts/mod_format/formatters/prettier.formatter.ts +++ b/ts/mod_format/formatters/prettier.formatter.ts @@ -15,8 +15,22 @@ export class PrettierFormatter extends BaseFormatter { // Get all files that match the pattern const files = await plugins.smartfile.fs.listFileTree('.', globPattern); - // Check which files need formatting + // Filter out any potential directories and ensure we only process files + const validFiles: string[] = []; for (const file of files) { + 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 if (!await this.shouldProcessFile(file)) { logVerbose(`Skipping ${file} - no changes detected`); @@ -85,7 +99,7 @@ export class PrettierFormatter extends BaseFormatter { try { // Read current content - const content = await plugins.smartfile.fs.toStringSync(change.path); + const content = plugins.smartfile.fs.toStringSync(change.path); // Format with prettier const prettier = await import('prettier');