fix dir mk/rm

This commit is contained in:
Chris Wanstrath 2026-01-28 20:44:34 -08:00
parent a44c85abe0
commit 5d898ac485

View File

@ -1,5 +1,8 @@
import type { Subprocess } from 'bun'
import { existsSync, readdirSync, readFileSync, writeFileSync, watch } from 'fs'
import {
existsSync, readdirSync, readFileSync, writeFileSync,
statSync, watch
} from 'fs'
import { join } from 'path'
import type { App as SharedApp, AppState, LogLine } from '../shared/types'
@ -208,9 +211,8 @@ export const stopApp = (dir: string) => {
}
const watchAppsDir = () => {
watch(APPS_DIR, { recursive: true }, (_event, filename) => {
watch(APPS_DIR, { recursive: true }, (event, filename) => {
if (!filename) return
if (!filename.includes('/')) return
// Extract the app directory name from the path (e.g., "myapp/package.json" -> "myapp")
const dir = filename.split('/')[0]!
@ -230,6 +232,13 @@ const watchAppsDir = () => {
const app = _apps.get(dir)!
// check if app was deleted
if (!isDir(join(APPS_DIR, dir))) {
_apps.delete(dir)
update()
return
}
// Only care about package.json changes for existing apps
if (!filename.endsWith('package.json')) return
@ -256,6 +265,7 @@ const watchAppsDir = () => {
app.state = 'invalid'
update()
}
if (!error && app.state === 'invalid') {
app.state = 'stopped'
update()
@ -263,6 +273,14 @@ const watchAppsDir = () => {
})
}
function isDir(path: string): boolean {
try {
return statSync(path).isDirectory()
} catch {
return false
}
}
export const initApps = () => {
discoverApps()
runApps()