Files
opus-apps/moonscript/autorun/startup.lua
kepler155c@gmail.com 27c7d2dd18 moonscript support fixes
2020-06-13 12:19:13 -06:00

44 lines
959 B
Lua

local Map = require('opus.map')
local fs = _G.fs
local commands = Map.transpose {
'packages/moonscript/moon',
'packages/moonscript/moonc'
}
local function compatEnv(source)
local env = Map.shallowCopy(source._G)
Map.merge(env, source)
env._G = env
_G.requireInjector(env, 'packages/moonscript')
return env
end
local function fix(env, args)
if #args > 0 then
args[1] = env.shell.resolve(args[1])
end
return args
end
_ENV.shell.registerHandler(function(env, command, args)
if command:match('(.+)%.moon$') then
return {
title = fs.getName(command):match('([^%.]+)'),
path = 'packages/moonscript/moon',
args = { env.shell.resolveProgram(command), table.unpack(args) },
load = loadfile,
env = compatEnv(env),
}
end
command = env.shell.resolveProgram(command) or ''
return commands[command] and {
title = fs.getName(command),
path = command,
args = fix(env, args),
load = loadfile,
env = compatEnv(env),
}
end)