don't just assume a dir in NOSE_DIR is a project

This commit is contained in:
Chris Wanstrath 2025-10-20 15:17:47 -07:00
parent 04ab968e0f
commit 38e081f2cf

View File

@ -5,7 +5,7 @@ import { join } from "path"
import { readdirSync, type Dirent } from "fs" import { readdirSync, type Dirent } from "fs"
import { sessionGet } from "./session" import { sessionGet } from "./session"
import { DEFAULT_PROJECT, NOSE_DIR } from "./config" import { DEFAULT_PROJECT, NOSE_DIR } from "./config"
import { isDir } from "./utils" import { isDir, isFile } from "./utils"
export function projectName(): string { export function projectName(): string {
const state = sessionGet() const state = sessionGet()
@ -16,7 +16,7 @@ export function projectName(): string {
export function projects(): string[] { export function projects(): string[] {
return readdirSync(NOSE_DIR, { withFileTypes: true }) return readdirSync(NOSE_DIR, { withFileTypes: true })
.filter(file => file.isDirectory()) .filter(dir => dir.isDirectory() && isProject(join(NOSE_DIR, dir.name)))
.map(dir => dir.name) .map(dir => dir.name)
.sort() .sort()
} }
@ -34,4 +34,8 @@ export function projectBin(name = projectName()): string {
export function projectFiles(name = projectName()): Dirent[] { export function projectFiles(name = projectName()): Dirent[] {
return readdirSync(projectDir(name), { recursive: true, withFileTypes: true }) return readdirSync(projectDir(name), { recursive: true, withFileTypes: true })
}
function isProject(path: string): boolean {
return isFile(join(path, "index.ts")) || isFile(join(path, "index.tsx")) || isDir(join(path, "pub"))
} }