project-nexus
Version:
A hub for all your programming projects
49 lines (45 loc) • 1.48 kB
text/coffeescript
is_running = require "is-running"
tree_kill = require "tree-kill"
kill = ({pid})->
console.log "kill #{pid}"
tree_kill pid, 'SIGKILL', (err)->
return console.error err if err
console.log "killed #{pid}"
Settings.update "running_processes", (running_processes)->
console.log "updating running_processes"
rproc for rproc in running_processes when rproc.pid isnt pid
class @RunawayProcesses extends React.Component
render: ->
{runaway_processes} = @props
E ".runaway-processes",
E "h2", "Runaway Processes"
E "table",
E "thead",
E "tr",
E "th", "Project"
E "th", "Info"
E "th", "PID"
E "th", E "button.button.destructive-action",
onClick: -> kill rproc for rproc in runaway_processes
E "GtkLabel", "Kill All"
E "tbody",
for rproc in runaway_processes then do (rproc)->
E "tr.runaway-process", key: rproc.pid,
E "td",
if rproc.project_name?
E "GtkLinkButton.button.project-link",
onClick: =>
ProjectNexus.select(rproc.project_id)
E "GtkLabel", rproc.project_name
else if rproc.background
E "i", "(Background)"
else
E "i", "(Unknown)"
E "td", rproc.info
E "td", rproc.pid
E "td", E "button.button.destructive-action",
onClick: -> kill rproc
E "GtkLabel", "Kill"
E "button.button",
onClick: -> Settings.set "running_processes", []
E "GtkLabel", "Let 'em run"