From 9f9db63a36e3de194a53ea03523c43d6da825881 Mon Sep 17 00:00:00 2001 From: David First Date: Fri, 8 Mar 2024 19:22:57 -0500 Subject: [PATCH] refactor, extract read-dir-ignore-ds-store to a new component --- .bitmap | 10 +++++++++- .../toolbox/fs/readdir-skip-system-files/index.ts | 1 + .../readdir-skip-system-files.ts | 13 +++++++++++++ src/scope/scope.ts | 5 +++-- src/utils/fs/is-dir-empty.ts | 4 ++-- src/utils/fs/read-dir-ignore-ds-store.ts | 11 ----------- src/utils/index.ts | 3 --- src/utils/is-dir-empty-sync.ts | 4 ++-- 8 files changed, 30 insertions(+), 21 deletions(-) create mode 100644 scopes/toolbox/fs/readdir-skip-system-files/index.ts create mode 100644 scopes/toolbox/fs/readdir-skip-system-files/readdir-skip-system-files.ts delete mode 100644 src/utils/fs/read-dir-ignore-ds-store.ts diff --git a/.bitmap b/.bitmap index 1593170ee126..4e9c7bec9ceb 100644 --- a/.bitmap +++ b/.bitmap @@ -1472,6 +1472,14 @@ "mainFile": "index.ts", "rootDir": "scopes/toolbox/time/time-format" }, + "fs/readdir-skip-system-files": { + "name": "fs/readdir-skip-system-files", + "scope": "", + "version": "", + "defaultScope": "teambit.toolbox", + "mainFile": "index.ts", + "rootDir": "scopes/toolbox/fs/readdir-skip-system-files" + }, "tracker": { "name": "tracker", "scope": "teambit.component", @@ -1984,4 +1992,4 @@ "rootDir": "scopes/dependencies/yarn" }, "$schema-version": "17.0.0" -} \ No newline at end of file +} diff --git a/scopes/toolbox/fs/readdir-skip-system-files/index.ts b/scopes/toolbox/fs/readdir-skip-system-files/index.ts new file mode 100644 index 000000000000..7b79ece67831 --- /dev/null +++ b/scopes/toolbox/fs/readdir-skip-system-files/index.ts @@ -0,0 +1 @@ +export { readDirIgnoreSystemFiles, readDirIgnoreSystemFilesSync } from './readdir-skip-system-files'; diff --git a/scopes/toolbox/fs/readdir-skip-system-files/readdir-skip-system-files.ts b/scopes/toolbox/fs/readdir-skip-system-files/readdir-skip-system-files.ts new file mode 100644 index 000000000000..51b1ceb358c8 --- /dev/null +++ b/scopes/toolbox/fs/readdir-skip-system-files/readdir-skip-system-files.ts @@ -0,0 +1,13 @@ +import fs from 'fs-extra'; + +const systemFiles = ['.DS_Store']; + +export async function readDirIgnoreSystemFiles(dirPath: string): Promise { + const files = await fs.readdir(dirPath); + return files.filter((file) => !systemFiles.includes(file)); +} + +export function readDirIgnoreSystemFilesSync(dirPath: string): string[] { + const files = fs.readdirSync(dirPath); + return files.filter((file) => !systemFiles.includes(file)); +} diff --git a/src/scope/scope.ts b/src/scope/scope.ts index e5e0b8e9ff65..e2bf9c512f2b 100644 --- a/src/scope/scope.ts +++ b/src/scope/scope.ts @@ -7,6 +7,7 @@ import { LaneId } from '@teambit/lane-id'; import semver from 'semver'; import { BitError } from '@teambit/bit-error'; import { isTag } from '@teambit/component-version'; +import { readDirIgnoreSystemFilesSync } from '@teambit/toolbox.fs.readdir-skip-system-files'; import { Analytics } from '../analytics/analytics'; import { BIT_GIT_DIR, @@ -25,7 +26,7 @@ import Component from '../consumer/component/consumer-component'; import { ExtensionDataEntry } from '../consumer/config'; import Consumer from '../consumer/consumer'; import logger from '../logger/logger'; -import { pathHasAll, findScopePath, readDirSyncIgnoreDsStore } from '../utils'; +import { pathHasAll, findScopePath } from '../utils'; import { PathOsBasedAbsolute } from '../utils/path'; import RemoveModelComponents from './component-ops/remove-model-components'; import ScopeComponentsImporter from './component-ops/scope-components-importer'; @@ -227,7 +228,7 @@ export default class Scope { } const componentFullPath = pathLib.join(scopePath, Scope.getComponentsRelativePath(), relativePath); if (!fs.existsSync(componentFullPath)) return ''; - const versions = readDirSyncIgnoreDsStore(componentFullPath); + const versions = readDirIgnoreSystemFilesSync(componentFullPath); const latestVersion = semver.maxSatisfying(versions, '*', { includePrerelease: true }); // eslint-disable-next-line @typescript-eslint/no-non-null-assertion return pathLib.join(relativePath, latestVersion!); diff --git a/src/utils/fs/is-dir-empty.ts b/src/utils/fs/is-dir-empty.ts index 47802dfa2d3a..4bfe308e8adf 100644 --- a/src/utils/fs/is-dir-empty.ts +++ b/src/utils/fs/is-dir-empty.ts @@ -1,6 +1,6 @@ -import readDirIgnoreDsStore from './read-dir-ignore-ds-store'; +import { readDirIgnoreSystemFiles } from '@teambit/toolbox.fs.readdir-skip-system-files'; export default async function isDirEmpty(dirPath: string): Promise { - const files = await readDirIgnoreDsStore(dirPath); + const files = await readDirIgnoreSystemFiles(dirPath); return !files.length; } diff --git a/src/utils/fs/read-dir-ignore-ds-store.ts b/src/utils/fs/read-dir-ignore-ds-store.ts deleted file mode 100644 index be5003618068..000000000000 --- a/src/utils/fs/read-dir-ignore-ds-store.ts +++ /dev/null @@ -1,11 +0,0 @@ -import fs from 'fs-extra'; - -export default async function readDirIgnoreDsStore(dirPath: string): Promise { - const files = await fs.readdir(dirPath); - return files.filter((file) => file !== '.DS_Store'); -} - -export function readDirSyncIgnoreDsStore(dirPath: string): string[] { - const files = fs.readdirSync(dirPath); - return files.filter((file) => file !== '.DS_Store'); -} diff --git a/src/utils/index.ts b/src/utils/index.ts index 60b33b27e05d..5bcd9a691665 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -7,7 +7,6 @@ import getWithoutExt from './fs/fs-no-ext'; import getExt from './fs/get-ext'; import isDirEmpty from './fs/is-dir-empty'; import { pathHas, pathHasAll, findScopePath } from './fs/propogate-until'; -import readDirIgnoreDsStore, { readDirSyncIgnoreDsStore } from './fs/read-dir-ignore-ds-store'; import glob from './glob'; import retrieveIgnoreList from './ignore/ignore'; import immutableUnshift from './immutable-unshift'; @@ -60,8 +59,6 @@ export { checksumFile, writeFile, cleanObject, - readDirIgnoreDsStore, - readDirSyncIgnoreDsStore, cleanBang, prependBang, isBitUrl, diff --git a/src/utils/is-dir-empty-sync.ts b/src/utils/is-dir-empty-sync.ts index 7f63ecc5963c..85496c89484b 100644 --- a/src/utils/is-dir-empty-sync.ts +++ b/src/utils/is-dir-empty-sync.ts @@ -1,5 +1,5 @@ -import { readDirSyncIgnoreDsStore } from './fs/read-dir-ignore-ds-store'; +import { readDirIgnoreSystemFilesSync } from '@teambit/toolbox.fs.readdir-skip-system-files'; export default function isDirEmptySync(dirPath: string): boolean { - return !readDirSyncIgnoreDsStore(dirPath).length; + return !readDirIgnoreSystemFilesSync(dirPath).length; }