project-nexus
Version:
A hub for all your programming projects
48 lines (43 loc) • 1.54 kB
text/coffeescript
async = require "async"
is_running = require "is-running"
is_under_control = (pid)->
if window.background_processes?
if pid in window.background_processes
return yes
if ProjectNexus.projects
for project in ProjectNexus.projects
for command, proc of project.processes
if proc.pid is pid
console.log "#{pid} is owned by #{project.name}:", proc
return yes
return no
prevent_recursion = off
Settings.watch "running_processes", (running_processes = [])->
console.log "watching running_processes", running_processes, "prevent recursion?", prevent_recursion
return prevent_recursion = off if prevent_recursion
running_processes_new = []
runaway_processes = []
async.each running_processes,
(rproc, callback)->
if is_under_control rproc.pid
running_processes_new.push rproc
callback null
else
is_running rproc.pid, (err, rproc_is_running)->
return callback err if err
if rproc_is_running
console.log "this process is still running:", rproc
running_processes_new.push rproc
runaway_processes.push rproc
else
console.log "this process appears to have exited:", rproc
callback null
(err)->
return console.error err if err
console.log "running:", running_processes_new
console.log "runaway:", runaway_processes
prevent_recursion = on
Settings.set "running_processes", running_processes_new
prevent_recursion = off
ProjectNexus.runaway_processes = runaway_processes
window.render()