From bd62dc2ab85e0f88eeef28261ca5c09ea0cb728a Mon Sep 17 00:00:00 2001 From: yuto ichinose Date: Tue, 25 Apr 2023 21:53:25 +0900 Subject: [PATCH] =?UTF-8?q?#29=20node=5Fmodules=E3=82=84.gitignore?= =?UTF-8?q?=E3=82=92=E8=A6=8B=E3=81=AA=E3=81=84=E3=82=88=E3=81=86=E3=81=AB?= =?UTF-8?q?=E3=81=97=E3=81=9F=E3=80=81=E6=AC=A1=E3=81=AF=E3=83=AF=E3=83=BC?= =?UTF-8?q?=E3=82=AF=E3=82=B9=E3=83=9A=E3=83=BC=E3=82=B9=E3=81=8B=E3=82=89?= =?UTF-8?q?hitignore=E3=81=AE=E3=83=91=E3=82=B9=E3=82=92=E5=8F=96=E5=BE=97?= =?UTF-8?q?=E3=81=97=E3=81=A6=E4=B8=AD=E8=BA=AB=E3=82=92=E5=8F=96=E5=BE=97?= =?UTF-8?q?=E3=81=99=E3=82=8B=E3=81=A0=E3=81=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/commands/create-readme.ts | 7 +++++++ src/utils/utils.ts | 15 ++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/commands/create-readme.ts b/src/commands/create-readme.ts index 38fce94..2ce6606 100644 --- a/src/commands/create-readme.ts +++ b/src/commands/create-readme.ts @@ -127,6 +127,13 @@ export const create_readme = async (openai: OpenAIApi | undefined) => { // ファイルの親フォルダ取得 const folderPath = targetfilePath.replace(/\/[^\/]*$/, ""); + const workspaceFolders = vscode.workspace.workspaceFolders + if (!workspaceFolders || workspaceFolders.length === 0) { + vscode.window.showErrorMessage("No workspace folder found."); + return + } + // ワークスペースのフォルダ取得 + const workspaceFolderPath = workspaceFolders[0].uri.fsPath; // ツリーのルートを作成する const root = readDirRecursive(folderPath); // アスキーアート出力 diff --git a/src/utils/utils.ts b/src/utils/utils.ts index 0d44064..0a5cee5 100644 --- a/src/utils/utils.ts +++ b/src/utils/utils.ts @@ -2,7 +2,7 @@ import * as vscode from "vscode"; import { AxiosError } from "axios"; import { ChatCompletionRequestMessageRoleEnum, OpenAIApi } from "openai"; import { readdirSync, statSync } from "fs"; - +import { join } from "path"; /** * 共通のモジュール */ @@ -79,18 +79,23 @@ export const generateReadme = async ( /** * フォルダの配下のtreeを取得 * @param path パス + * @param ignores ignoreで除外されているもの * @returns */ export const readDirRecursive = ( - path: string + path: string, + ignores: string[] = [] ): { label: string; nodes?: any[] } => { const stats = statSync(path); if (stats.isDirectory()) { const folderName = path.split("/").pop() as string; - const children = readdirSync(path).map((child) => - readDirRecursive(`${path}/${child}`) - ); + const children = readdirSync(path) + .filter(child => !/(^|\/)\.[^\/\.]/g.test(child)) // ドットで始まるフォルダを除外する + .filter(child => !/(^|\/)node_modules($|\/)/g.test(child)) // node_modulesフォルダを除外する + .filter(child => !/(^|\/)mysql($|\/)/g.test(child)) // mysqlフォルダを除外する + .filter(child => ignores.indexOf(child) === -1) // ignoresに記載されたファイルを除外する + .map(child => readDirRecursive(join(path, child), ignores)); return { label: folderName, nodes: children }; } else {