Created
January 2, 2016 21:23
-
-
Save bhurlow/2461e079be9a35319fd6 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var bencode = require('bencode') | |
var net = require('net') | |
var conn = net.connect(57720) | |
// var msg = {op: "eval", code: '(println 1000000)'} | |
// var msg = {op: "eval", code: '(println process.env.HOME)'} | |
// var msg = {op: "eval", code: '(cemerick.piggieback/cljs-repl (cljs.repl.node/repl-env))'} | |
// var msg = {op: "eval", code: "(+ 1 2 3)"} | |
var cljForm = '(System/getenv "HOME")' | |
var nodeForm = '(js/console.log process.env.HOME)' | |
var piggie = '(cemerick.piggieback/cljs-repl (cljs.repl.node/repl-env))' | |
var piggieRhino = '(cemerick.piggieback/cljs-repl (cljs.repl.rhino/repl-env))' | |
var fixed_session = null | |
function sendForm(form) { | |
var msg = {op: "eval", code: form, session: fixed_session} | |
var payload = bencode.encode(msg) | |
conn.write(payload, 'binary') | |
} | |
function sendCljsForm (form) { | |
var msg = {op: "eval", code: form, session: fixed_session, ns: 'cljs.user'} | |
var payload = bencode.encode(msg) | |
conn.write(payload, 'binary') | |
} | |
function createSession() { | |
var msg = {op: "clone"} | |
var payload = bencode.encode(msg) | |
conn.write(payload, 'binary') | |
} | |
createSession() | |
var sentval = false | |
conn.on('data', function(chunk) { | |
var dec = bencode.decode(chunk, 'utf8') | |
console.log(dec) | |
if (dec.ns === 'cljs.user' && !sentval) { | |
sentval = true | |
sendCljsForm(nodeForm) | |
} | |
if (dec['new-session'] && !fixed_session) { | |
console.log('SETTING NEW SESSION') | |
fixed_session = dec['new-session'] | |
sendForm("(require 'cljs.repl.node)") | |
sendForm(piggie) | |
} | |
}) | |
conn.on('error', function(err) { | |
console.log(err) | |
}) | |
conn.on('end', function() { | |
console.log('ended') | |
}) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
proof of concept for talking to cljs nrepl using piggieback