# txtmus with raw nodeJS

# search where are the txtmus scripts
p=$0
if [ `dirname $p` = . ]; then
	p=`which $p`
fi
if [ -L $p ]; then
	p=`realpath $p`
fi
p=`dirname $p`

node - "$@" <<EOF
    var	path='${p}/',
	tm = {}

// interpreter specific functions
tm.print = function(str) {
	process.stdout.write(str + '\n')
}
tm.printErr = function(str) {
	process.stderr.write(str + '\n')
}
tm.quit = function() {
	process.exit(1)
}
tm.readFile = function(fname) {
    var	fs = require("fs")

	try {
		return fs.readFileSync(fname).toString()
	} catch(e) {
	}
	return null
}

tm.get_mtime= function(fn) {
    var	fs = require("fs")

	return fs.statSync(fn).mtime
}

tm.loadjs = function(fn, relay, onerror) {
	try {
		var geval = eval
		geval(tm.readFile(path + fn))
		if (relay)
			relay()
	} catch(e) {
		if (onerror)
			onerror()
		else
			tm.printErr('Cannot read file ' + fn)
	}
}

// main
    var	args = process.argv,
	i = '${TMPATH}'

	if (i)
		tm.path = i.split(':')

	tm.loadjs("abc2svg-1.js")
	tm.loadjs("cmdline.js")

	global.Mus = Mus
	global.tm = tm

	global.user = user		// (for modules/page.js)

	args.shift()			// (remove 'node')
	args.shift()			// (remove the '-')
	tmcmd("tmnode", args, "nodeJS")
EOF
