summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2012-08-28 11:44:20 +0100
committerDaniel Silverstone <dsilvers@digital-scurf.org>2012-08-28 11:44:20 +0100
commite307cfa08ca2ad0626e71b0de9b336ff9806fe6c (patch)
tree2d0a9e6ee1cf07ef22a851802d791541c24e8ece /lib
parenta509b61051418af47a439b0325f89f74ddfa70ec (diff)
downloadgitano-e307cfa08ca2ad0626e71b0de9b336ff9806fe6c.tar.gz
REPOSITORY: Generate cgitrc
Diffstat (limited to 'lib')
-rw-r--r--lib/gitano/repository.lua37
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/gitano/repository.lua b/lib/gitano/repository.lua
index 1d1229d..809dfbe 100644
--- a/lib/gitano/repository.lua
+++ b/lib/gitano/repository.lua
@@ -239,6 +239,43 @@ function repo_method:check_local_git_files()
self.git:config("gitweb.owner",
owner.real_name .. " <" .. owner.email_address .. ">")
end
+ -- Construct a cgitrc in case we're using cgit instead of gitweb
+ local cgitrc = {}
+ local function add_cgitrc(key, value)
+ cgitrc[#cgitrc+1] = ("repo.%s: %s"):format(key, tostring(value))
+ end
+ for _, suffix in ipairs {
+ "readme", "section", "logo", "logo-link", "defbranch", "clone-url",
+ "snapshots" } do
+ local v = self.project_config.settings["cgitrc." .. suffix]
+ if v then
+ add_cgitrc(suffix, v)
+ end
+ end
+ if owner then
+ add_cgitrc("owner", owner.real_name .. " <" .. owner.email_address .. ">")
+ end
+ local description = self:conf_get "project.description"
+ if description and description ~= "" then
+ add_cgitrc("desc", description)
+ end
+ table.sort(cgitrc)
+ cgitrc[#cgitrc+1] = ""
+ cgitrc = table.concat(cgitrc, "\n")
+ local fh, err = sio.open(self:fs_path() .. "/cgitrc.new", "wc")
+ if fh then
+ fh:write(cgitrc)
+ fh:close()
+ local ok, errno = luxio.rename(self:fs_path() .. "/cgitrc.new",
+ self:fs_path() .. "/cgitrc")
+ if ok ~= 0 then
+ log.warn("Unable to rename cgitrc into place:",
+ luxio.strerror(errno))
+ end
+ else
+ log.warn("Unable to write cgitrc out:", tostring(err))
+ end
+
return true
end