opus/sys/extensions/6.packages.lua

56 lines
1.4 KiB
Lua
Raw Normal View History

2018-10-21 00:35:48 +00:00
_G.requireInjector(_ENV)
local Packages = require('packages')
local Util = require('util')
2018-12-23 03:11:16 +00:00
local fs = _G.fs
local help = _G.help
2018-10-21 00:35:48 +00:00
local shell = _ENV.shell
2018-12-17 03:17:19 +00:00
local appPaths = Util.split(shell.path(), '(.-);')
local luaPaths = Util.split(_G.LUA_PATH, '(.-);')
2018-12-23 22:32:06 +00:00
local helpPaths = Util.split(help.path(), '(.-):')
table.insert(helpPaths, '/sys/help')
2018-10-21 00:35:48 +00:00
2018-12-23 22:32:06 +00:00
local function addEntry(t, e)
for _,v in ipairs(t) do
if v == e then
return true
2018-10-21 00:35:48 +00:00
end
end
2018-12-23 22:32:06 +00:00
table.insert(t, 1, e)
2018-10-21 00:35:48 +00:00
end
2018-12-23 22:32:06 +00:00
local function addRequirePath(t, path)
addEntry(t, string.format('/%s/?', path))
addEntry(t, string.format('/%s/?.lua', path))
addEntry(t, string.format('/%s/?/init.lua', path))
end
2018-12-23 03:11:16 +00:00
2018-11-04 18:00:37 +00:00
for name in pairs(Packages:installed()) do
2018-11-03 22:13:41 +00:00
local packageDir = fs.combine('packages', name)
if fs.exists(fs.combine(packageDir, '.install')) then
local install = Util.readTable(fs.combine(packageDir, '.install'))
if install and install.mount then
fs.mount(table.unpack(Util.matches(install.mount)))
end
2018-10-21 00:35:48 +00:00
end
2018-12-23 22:32:06 +00:00
addEntry(appPaths, packageDir)
2018-10-21 08:46:40 +00:00
local apiPath = fs.combine(fs.combine('packages', name), 'apis')
if fs.exists(apiPath) then
2018-12-23 22:32:06 +00:00
addRequirePath(luaPaths, apiPath)
2018-10-21 08:46:40 +00:00
end
2018-12-23 03:11:16 +00:00
2018-12-23 22:32:06 +00:00
local helpPath = '/' .. fs.combine(fs.combine('packages', name), 'help')
2018-12-23 03:11:16 +00:00
if fs.exists(helpPath) then
table.insert(helpPaths, helpPath)
end
2018-10-21 00:35:48 +00:00
end
2018-12-23 03:11:16 +00:00
help.setPath(table.concat(helpPaths, ':'))
2018-10-21 00:35:48 +00:00
shell.setPath(table.concat(appPaths, ':'))
2018-12-17 03:17:19 +00:00
_G.LUA_PATH = table.concat(luaPaths, ';')