fix dir mk/rm
This commit is contained in:
parent
a44c85abe0
commit
5d898ac485
|
|
@ -1,5 +1,8 @@
|
||||||
import type { Subprocess } from 'bun'
|
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 { join } from 'path'
|
||||||
import type { App as SharedApp, AppState, LogLine } from '../shared/types'
|
import type { App as SharedApp, AppState, LogLine } from '../shared/types'
|
||||||
|
|
||||||
|
|
@ -208,9 +211,8 @@ export const stopApp = (dir: string) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
const watchAppsDir = () => {
|
const watchAppsDir = () => {
|
||||||
watch(APPS_DIR, { recursive: true }, (_event, filename) => {
|
watch(APPS_DIR, { recursive: true }, (event, filename) => {
|
||||||
if (!filename) return
|
if (!filename) return
|
||||||
if (!filename.includes('/')) return
|
|
||||||
|
|
||||||
// Extract the app directory name from the path (e.g., "myapp/package.json" -> "myapp")
|
// Extract the app directory name from the path (e.g., "myapp/package.json" -> "myapp")
|
||||||
const dir = filename.split('/')[0]!
|
const dir = filename.split('/')[0]!
|
||||||
|
|
@ -230,6 +232,13 @@ const watchAppsDir = () => {
|
||||||
|
|
||||||
const app = _apps.get(dir)!
|
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
|
// Only care about package.json changes for existing apps
|
||||||
if (!filename.endsWith('package.json')) return
|
if (!filename.endsWith('package.json')) return
|
||||||
|
|
||||||
|
|
@ -256,6 +265,7 @@ const watchAppsDir = () => {
|
||||||
app.state = 'invalid'
|
app.state = 'invalid'
|
||||||
update()
|
update()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!error && app.state === 'invalid') {
|
if (!error && app.state === 'invalid') {
|
||||||
app.state = 'stopped'
|
app.state = 'stopped'
|
||||||
update()
|
update()
|
||||||
|
|
@ -263,6 +273,14 @@ const watchAppsDir = () => {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isDir(path: string): boolean {
|
||||||
|
try {
|
||||||
|
return statSync(path).isDirectory()
|
||||||
|
} catch {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export const initApps = () => {
|
export const initApps = () => {
|
||||||
discoverApps()
|
discoverApps()
|
||||||
runApps()
|
runApps()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user