1 {Range} = require 'atom'
2 {spawn} = require 'child_process'
3 CommandView = require './command-view'
7 atom.workspaceView.command 'pipe:run', => @run()
10 editor = atom.workspace.getActiveEditor()
11 view = atom.workspaceView.getActiveView()
14 new CommandView (commandString) ->
19 range = editor.getSelectedBufferRange()
23 proc = spawn process.env.SHELL, ["-l", "-c", commandString]
25 proc.stdout.on 'data', (text) ->
28 proc.stderr.on 'data', (text) ->
31 proc.on 'close', (code) ->
32 text = stderr || stdout
33 if not text then return
35 if text.slice(-1) is '\n'
36 text = text.slice(0, -1)
38 editor.setTextInBufferRange(range, text)
39 editor.setSelectedBufferRange(new Range(range.start, range.start))
42 proc.stdin.write(editor.getSelectedText())