commit 8a833d7a0c5994f0a256ea3f2b729a92162ba8af
parent 0f68bd29fd9c6c2f623463137d5fe1e9137bc7a8
Author: phoebos <ben@bvnf.space>
Date: Fri, 26 Apr 2024 15:48:09 +0100
more documentation
Diffstat:
9 files changed, 92 insertions(+), 19 deletions(-)
diff --git a/bliss/archive.lua b/bliss/archive.lua
@@ -1,9 +1,12 @@
+--- Tarball creation and extraction.
+-- @module bliss.archive
local utils = require "bliss.utils"
local dirent = require "posix.dirent"
local stdio = require "posix.stdio"
local unistd = require "posix.unistd"
--- extracts tarball to PWD
+--- Extract a tarball to PWD.
+-- @tparam string tarball filename of tarball
local function tar_extract(tarball)
if not utils.run("tar", {"xf", tarball}) then
utils.die("failed to extract "..tarball)
@@ -26,7 +29,9 @@ local function tar_extract(tarball)
end
end
--- p is a package table as in bliss.build
+--- Create a tarball.
+-- @tparam env env
+-- @tparam ppkg p as in the format used in bliss.build
local function tar_create(env, p)
utils.log(p.pkg, "Creating tarball")
unistd.chdir(env.pkg_dir .. "/" .. p.pkg)
@@ -49,6 +54,7 @@ local function tar_create(env, p)
utils.log(p.pkg, "Successfully created tarball")
end
+--- @export
local M = {
tar_extract = tar_extract,
tar_create = tar_create,
diff --git a/bliss/build.lua b/bliss/build.lua
@@ -1,3 +1,5 @@
+--- Package building.
+-- @module bliss.build
local utils = require "bliss.utils"
local archive = require "bliss.archive"
local pkg = require "bliss.pkg"
@@ -8,17 +10,26 @@ local libgen = require "posix.libgen"
local sys_stat = require "posix.sys.stat"
local unistd = require "posix.unistd"
---[[
--- These functions use a table containing cached package variables:
--- p = {
--- pkg,
--- repo_dir,
--- sources,
--- caches,
--- ver,
--- rel,
--- }
---]]
+
+--- @table ppkg
+-- Many functions use a table containing these cached package variables:
+-- @field pkg package name
+-- @field repo_dir package directory
+-- @field sources list of sources
+-- @field caches list of caches
+-- @field ver package version
+-- @field rel package release
+
+local function new_ppkg(p, repo_dir, sources, caches, ver, rel)
+ return {
+ pkg = p,
+ repo_dir = repo_dir,
+ sources = sources,
+ caches = caches,
+ ver = ver,
+ rel = rel
+ }
+end
local function build_extract(env, p)
if #p.caches == 0 then return end
@@ -154,6 +165,10 @@ local function gen_etcsums(env, p)
etcsums:close()
end
+
+--- The build action.
+-- @tparam env env
+-- @tparam table arg list of explicit packages to build
local function build(env, arg)
if #arg == 0 then end -- TODO
@@ -209,7 +224,7 @@ local function build(env, arg)
download.download_sources(env, p, sources, caches)
checksum.verify_checksums(p, repo_dir, caches)
- table.insert(db, {pkg = p, repo_dir = repo_dir, sources = sources, caches = caches, ver = version[1], rel = version[2]})
+ table.insert(db, new_ppkg(p, repo_dir, sources, caches, version[1], version[2]))
end
-- Now build
@@ -231,6 +246,7 @@ local function build(env, arg)
end
end
+--- @export
local M = {
build = build,
}
diff --git a/bliss/checksum.lua b/bliss/checksum.lua
@@ -1,9 +1,13 @@
+--- Checksum routines.
+-- @module bliss.checksum
local utils = require "bliss.utils"
local b3sum = require "bliss.b3sum"
local pkg = require "bliss.pkg"
local download = require "bliss.download"
--- returns a string of the BLAKE3 checksum of the contents of filename
+--- Get the checksum of a single file.
+-- @tparam string filename
+-- @treturn string the BLAKE3 checksum of the contents of filename
local function checksum_file(filename)
local f = assert(io.open(filename))
local ctx = b3sum.init()
@@ -16,6 +20,10 @@ local function checksum_file(filename)
return b3sum.finalize(ctx, 33)
end
+--- The checksum action.
+-- Generates checksums for all the packages.
+-- @tparam env env
+-- @tparam table arg list of packages
local function checksum(env, arg)
if #arg == 0 then utils.die("need a package") end
for _,p in ipairs(arg) do
@@ -46,6 +54,10 @@ local function checksum(env, arg)
end
end
+--- Verify all the checksums for a package
+-- @tparam string p package name
+-- @tparam string repo_dir package directory
+-- @tparam table caches list of downloaded files to checksum
local function verify_checksums(p, repo_dir, caches)
utils.log(p, "Verifying sources")
@@ -61,6 +73,7 @@ local function verify_checksums(p, repo_dir, caches)
end
end
+--- @export
local M = {
checksum = checksum,
checksum_file = checksum_file,
diff --git a/bliss/download.lua b/bliss/download.lua
@@ -1,3 +1,5 @@
+--- Downloading routines.
+-- @module bliss.download
local utils = require "bliss.utils"
local pkg = require "bliss.pkg"
local sys_stat = require "posix.sys.stat"
@@ -44,7 +46,12 @@ local function file(env, p, source, dest)
end
end
--- download each source to dest.
+--- Download each source to dest.
+-- Currently handles http, git, and local files.
+-- @tparam env env
+-- @tparam string p package name (just used as a label for log messages)
+-- @tparam table sources list of sources
+-- @tparam table dests list of destinations
local function download_sources(env, p, sources, dests)
assert(#dests == #sources)
@@ -56,7 +63,9 @@ local function download_sources(env, p, sources, dests)
end
end
--- this is the download action (ie. kiss d)
+--- The download action.
+-- @tparam env env
+-- @tparam table arg list of packages to download sources for
local function download(env, arg)
if #arg == 0 then return end -- TODO
@@ -73,6 +82,7 @@ local function download(env, arg)
end
end
+--- @export
local M = {
download = download,
download_sources = download_sources,
diff --git a/bliss/install.lua b/bliss/install.lua
@@ -1,9 +1,14 @@
+--- Install a built package.
+-- @module bliss.install
local archive = require "bliss.archive"
local utils = require "bliss.utils"
local pkg = require "bliss.pkg"
local libgen = require "posix.libgen"
local sys_stat = require "posix.sys.stat"
+--- The install action.
+-- @tparam env env
+-- @tparam table arg
local function install(env, arg)
if #arg == 0 then end
@@ -94,6 +99,7 @@ local function install(env, arg)
end
end
+--- @export
local M = {
install = install,
}
diff --git a/bliss/list.lua b/bliss/list.lua
@@ -1,6 +1,11 @@
+--- List packages.
+-- @module bliss.list
local pkg = require "bliss.pkg"
local dirent = require "posix.dirent"
+--- The list action.
+-- @tparam env env
+-- @tparam table arg list of packages to search. If none, list all packages.
local function list(env, arg)
if #arg == 0 then
for file in dirent.files(env.sys_db) do
@@ -18,6 +23,7 @@ local function list(env, arg)
end
end
+--- @export
local M = {
list = list,
}
diff --git a/bliss/search.lua b/bliss/search.lua
@@ -1,7 +1,12 @@
+--- Package searching.
+-- @module bliss.search
local utils = require "bliss.utils"
local glob = require "posix.glob"
local sys_stat = require "posix.sys.stat"
+--- The search action.
+-- @tparam env env
+-- @tparam table arg list of search queries
local function search(env, arg)
-- append sys_db to search path
@@ -30,6 +35,7 @@ local function search(env, arg)
end
end
+--- @export
local M = {
search = search,
}
diff --git a/bliss/tsort.lua b/bliss/tsort.lua
@@ -1,4 +1,8 @@
+--- Topological sorting.
-- This module is not included in init.lua, but used locally by pkg.lua.
+-- @module bliss.tsort
+
+--- @type tsort
local tsort = {}
-- Returns a table of reverse deps
@@ -26,16 +30,21 @@ local function find_cycle(revlinks, start)
return t, old
end
+--- Get a new tsort object.
+-- @treturn tsort
function tsort.new()
return setmetatable({nodes={}}, {__index = tsort})
end
--- deps is an array of ALL the deps for node. Calling add for the same node a
--- second time overwrites, not appends.
+--- Add a node.
+-- @tparam string node
+-- @tparam table deps array of all the deps for node. Calling add for the same node a second time overwrites, not appends.
function tsort:add(node, deps)
self.nodes[node] = deps
end
+--- Sort the nodes.
+-- @treturn table sorted array of nodes
function tsort:sort()
if not self.nodes then return nil end
local L = {}
diff --git a/config.ld b/config.ld
@@ -3,6 +3,7 @@ project = "bliss 0.0.0"
title = "bliss 0.0.0 reference"
description = "kiss in Lua"
+not_luadoc = true
output = "doc"
sort = true
readme = "README.md"