mirror of
https://github.com/kepler155c/opus
synced 2024-12-25 16:10:26 +00:00
package manager wip
This commit is contained in:
parent
8b50127f21
commit
b7176e55ad
32
sys/apis/packages.lua
Normal file
32
sys/apis/packages.lua
Normal 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
13
sys/apps/Packages.lua
Normal 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
|
||||||
|
|
38
sys/extensions/6.packages.lua
Normal file
38
sys/extensions/6.packages.lua
Normal 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
4
sys/packageList.lua
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
[ 'opus-neural' ] = 'file://packages/opus-neural/.package',
|
||||||
|
[ 'opus-miners' ] = 'file://packages/opus-miners/.package',
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user