#! /usr/bin/lua
local args = {...}
local parser = require("docs._parser")
local gio = require("lgi").Gio
local gobject = require("lgi").GObject
local glib = require("lgi").GLib
local paths = parser.get_all_files("./lib/", "lua", parser.get_all_files("./", "c"))
local beautiful_vars = parser.parse_files(paths, "beautiful")
local override_cats = {
["border" ] = true,
["bg" ] = true,
["fg" ] = true,
["useless" ] = true,
["" ] = true,
}
local function categorize(entries)
local ret = {}
local cats = {
["Default variables"] = {}
}
for _, v in ipairs(entries) do
local ns = v.name:match("([^_]+)_") or ""
ns = override_cats[ns] and "Default variables" or ns
cats[ns] = cats[ns] or {}
table.insert(cats[ns], v)
end
return cats
end
local function create_sample(entries)
local ret = {
" local theme = {}"
}
for name, cat in parser.sorted_pairs(categorize(entries)) do
table.insert(ret, "\n -- "..name)
for _, v in ipairs(cat) do
table.insert(ret, " -- theme."..v.name.." = nil")
end
end
table.insert(ret, [[
return theme
-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80]]
)
return table.concat(ret, '\n')
end
-- Create the file
local filename = args[1]
local f = io.open(filename, "w")
f:write[[
# Change Awesome appearance
## The beautiful themes
Beautiful is where Awesome theme variables are stored.
]]
f:write(parser.create_table(beautiful_vars, {"link", "desc"}))
f:write("\n\n## Sample theme file\n\n")
f:write(create_sample(beautiful_vars, {"link", "desc"}))
f:close()
--TODO add some linting to direct undeclared beautiful variables
--TODO re-generate all official themes
--TODO generate a complete sample theme
-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80