repl launching
This commit is contained in:
parent
b94d20473f
commit
de07bcb18a
43
natal.coffee
43
natal.coffee
|
@ -6,7 +6,7 @@
|
|||
|
||||
fs = require 'fs'
|
||||
crypto = require 'crypto'
|
||||
{execSync} = require 'child_process'
|
||||
child = require 'child_process'
|
||||
cli = require 'commander'
|
||||
chalk = require 'chalk'
|
||||
semver = require 'semver'
|
||||
|
@ -34,9 +34,9 @@ logErr = (err, color = 'red') ->
|
|||
|
||||
exec = (cmd, keepOutput) ->
|
||||
if keepOutput
|
||||
execSync cmd
|
||||
child.execSync cmd
|
||||
else
|
||||
execSync cmd, stdio: 'ignore'
|
||||
child.execSync cmd, stdio: 'ignore'
|
||||
|
||||
|
||||
readFile = (path) ->
|
||||
|
@ -317,6 +317,43 @@ getDeviceList = ->
|
|||
logErr 'Device listing failed: ' + message
|
||||
|
||||
|
||||
startRepl = (name) ->
|
||||
log 'Starting REPL'
|
||||
hasRlwrap =
|
||||
try
|
||||
exec 'type rlwrap'
|
||||
true
|
||||
catch
|
||||
log '
|
||||
Warning: rlwrap is not installed.\nInstall it to make the REPL a much
|
||||
better experience with arrow key support.
|
||||
', 'red'
|
||||
false
|
||||
|
||||
try
|
||||
lein = child.spawn (if hasRlwrap then 'rlwrap' else 'lein'),
|
||||
"#{if hasRlwrap then 'lein ' else ''}trampoline run -m clojure.main -e"
|
||||
.split(' ').concat(
|
||||
"""
|
||||
(require '[cljs.repl :as repl])
|
||||
(require '[ambly.core :as ambly])
|
||||
(let [repl-env (ambly.core/repl-env)]
|
||||
(cljs.repl/repl repl-env
|
||||
:watch \"src\"
|
||||
:watch-fn
|
||||
(fn []
|
||||
(cljs.repl/load-file repl-env
|
||||
\"src/#{name}/core.cljs\"))
|
||||
:analyze-path \"src\"))
|
||||
"""),
|
||||
cwd: process.cwd()
|
||||
env: process.env
|
||||
stdio: 'inherit'
|
||||
|
||||
catch {message}
|
||||
logErr message
|
||||
|
||||
|
||||
cli._name = 'natal'
|
||||
cli.version pkgJson.version
|
||||
|
||||
|
|
Loading…
Reference in New Issue