moonscript support fixes
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
local Map = require('opus.map')
|
||||
|
||||
local fs = _G.fs
|
||||
local shell = _ENV.shell
|
||||
|
||||
local commands = Map.transpose {
|
||||
'packages/moonscript/moon',
|
||||
@@ -16,21 +15,28 @@ local function compatEnv(source)
|
||||
return env
|
||||
end
|
||||
|
||||
shell.registerHandler(function(args, env)
|
||||
if args[1]:match('(.+)%.moon$') then
|
||||
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(args[1]):match('([^%.]+)'),
|
||||
title = fs.getName(command):match('([^%.]+)'),
|
||||
path = 'packages/moonscript/moon',
|
||||
args = args,
|
||||
args = { env.shell.resolveProgram(command), table.unpack(args) },
|
||||
load = loadfile,
|
||||
env = compatEnv(env),
|
||||
}
|
||||
end
|
||||
local command = shell.resolveProgram(args[1]) or ''
|
||||
command = env.shell.resolveProgram(command) or ''
|
||||
return commands[command] and {
|
||||
title = fs.getName(command),
|
||||
path = command,
|
||||
args = { table.unpack(args, 2) },
|
||||
args = fix(env, args),
|
||||
load = loadfile,
|
||||
env = compatEnv(env),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user