1
0
mirror of https://github.com/kepler155c/opus synced 2024-12-25 16:10:26 +00:00

package manager wip

This commit is contained in:
kepler155c@gmail.com 2018-10-20 20:35:48 -04:00
parent 8b50127f21
commit b7176e55ad
4 changed files with 87 additions and 0 deletions

32
sys/apis/packages.lua Normal file
View File

@ -0,0 +1,32 @@
_G.requireInjector(_ENV)
local Util = require('util')
local fs = _G.fs
local PACKAGE_DIR = 'packages'
local Packages = { }
function Packages:installed()
self.cache = { }
if fs.exists(PACKAGE_DIR) then
for _, dir in pairs(fs.list(PACKAGE_DIR)) do
local path = fs.combine(fs.combine(PACKAGE_DIR, dir), '.package')
self.cache[dir] = Util.readTable(path)
end
end
return self.cache
end
function Packages:list()
return Util.readTable('sys/packageList.lua') or { }
end
function Packages:isInstalled(package)
return self:installed()[package]
end
return Packages

13
sys/apps/Packages.lua Normal file
View File

@ -0,0 +1,13 @@
_G.requireInjector(_ENV)
local Packages = require('packages')
local Util = require('util')
local args = { ... }
if args[1] == 'list' then
for k,v in pairs(Packages:list()) do
Util.print('[%s] %s', Packages:isInstalled(k) and 'x' or ' ', k)
end
end

View File

@ -0,0 +1,38 @@
_G.requireInjector(_ENV)
local Packages = require('packages')
local Util = require('util')
local shell = _ENV.shell
local fs = _G.fs
local appPaths = Util.split(shell.path(), '(.-):')
local luaPaths = Util.split(_G.LUA_PATH, '(.-):')
local function addPath(t, e)
local function hasEntry()
for _,v in ipairs(t) do
if v == e then
return true
end
end
end
if not hasEntry() then
table.insert(t, 1, e)
end
end
-- dependency graph
-- https://github.com/mpeterv/depgraph/blob/master/src/depgraph/init.lua
for name, package in pairs(Packages:installed()) do
if package.mount then
fs.mount(table.unpack(Util.matches(package.mount)))
end
addPath(appPaths, fs.combine(fs.combine('packages', name), 'apps'))
addPath(luaPaths, fs.combine(fs.combine('packages', name), 'apis'))
end
shell.setPath(table.concat(appPaths, ':'))
_G.LUA_PATH = table.concat(luaPaths, ':')

4
sys/packageList.lua Normal file
View File

@ -0,0 +1,4 @@
{
[ 'opus-neural' ] = 'file://packages/opus-neural/.package',
[ 'opus-miners' ] = 'file://packages/opus-miners/.package',
}