[Xfce4-commits] <moka:master> Add cgit repo file generator.
Nick Schermer
noreply at xfce.org
Sun Nov 20 14:31:00 CET 2011
Updating branch refs/heads/master
to d0292b34ed5ac09216c92e31d76956adc451c193 (commit)
from cce813c2601f4d8d733579988d909c92a9f2043b (commit)
commit d0292b34ed5ac09216c92e31d76956adc451c193
Author: Nick Schermer <nick at xfce.org>
Date: Sat Nov 19 12:20:05 2011 +0100
Add cgit repo file generator.
examples/{gitolite/gitolite.rb => cgit/cgit.rb} | 4 +-
lib/helpers/cgit.rb | 53 +++++++++++++++++++++++
lib/moka.rb | 20 ++++-----
lib/views/index_login.haml | 7 ++-
4 files changed, 68 insertions(+), 16 deletions(-)
diff --git a/examples/gitolite/gitolite.rb b/examples/cgit/cgit.rb
similarity index 83%
copy from examples/gitolite/gitolite.rb
copy to examples/cgit/cgit.rb
index fc1b5d6..21614aa 100755
--- a/examples/gitolite/gitolite.rb
+++ b/examples/cgit/cgit.rb
@@ -15,5 +15,5 @@ Moka::Models::Configuration.load do |conf|
conf.set :archive_dir, '/home/nick/websites/archive.xfce.org/'
end
-generator = Moka::Gitolite.new
-generator.run('/tmp/gitolitetest')
+generator = Moka::CGit.new
+generator.run('/tmp/cgitrepos', '/var/git')
diff --git a/lib/helpers/cgit.rb b/lib/helpers/cgit.rb
new file mode 100644
index 0000000..949b88a
--- /dev/null
+++ b/lib/helpers/cgit.rb
@@ -0,0 +1,53 @@
+require 'rubygems'
+require 'sinatra'
+require 'pp'
+
+module Moka
+ class CGit
+ include Moka::Models
+
+ def run(repofile, gitpath, prepend_files = nil)
+
+ conf = "# This file is generated by Moka\n\n"
+ public = Moka::Models::Group.get('public')
+
+ for classification in Moka::Models::Classification.find_all.sort
+
+ sect = ""
+
+ for name in classification.project_names.sort
+
+ path = File.join(gitpath, classification.name, name) + ".git"
+ next unless File.directory?(path)
+
+ project = Moka::Models::Project.get(name)
+ next if project == nil
+
+ # only show public projects
+ next unless project.groups.include?(public)
+
+ sect << "repo.url=#{classification.name}/#{project.name}\n"
+ sect << "repo.name=#{project.name}\n"
+ sect << "repo.path=#{path}\n"
+ sect << "repo.desc=#{project.shortdesc}\n"
+ sect << "repo.owner=#{project.owner}\n\n"
+ end
+
+ if not sect.empty?
+ conf << "section=#{classification.name}\n\n"
+ conf << sect
+ end
+ end
+
+ # write contents to file
+ cfile = File.new(repofile, "w+")
+ begin
+ cfile.flock(File::LOCK_SH)
+ cfile.puts conf
+ ensure
+ cfile.flock(File::LOCK_UN)
+ end
+ cfile.close
+ end
+ end
+end
diff --git a/lib/moka.rb b/lib/moka.rb
index b63e932..bf28b6d 100755
--- a/lib/moka.rb
+++ b/lib/moka.rb
@@ -4,22 +4,20 @@ require 'sass'
directory = File.expand_path(File.dirname(__FILE__))
-models = ['configuration', 'classification', 'group', 'role', 'maintainer', 'collection', 'project', 'archive']
-for model in models
- require File.join(directory, 'models', model)
+for n in ['archive', 'classification', 'collection', 'configuration', 'group', 'maintainer', 'project', 'role']
+ require File.join(directory, 'models', n)
end
-require File.join(directory, 'helpers', 'general')
-require File.join(directory, 'helpers', 'gitolite')
+for n in ['cgit', 'general', 'gitolite']
+ require File.join(directory, 'helpers', n)
+end
-helpers = ['announcements', 'authentication', 'collections', 'projects', 'maintainers']
-for helper in helpers
- require File.join(directory, 'controllers', helper)
+for n in ['announcements', 'authentication', 'collections', 'projects', 'maintainers']
+ require File.join(directory, 'controllers', n)
end
-middlewares = ['feeds', 'identica', 'mailinglists']
-for middleware in middlewares
- require File.join(directory, 'middleware', middleware)
+for n in ['feeds', 'identica', 'mailinglists']
+ require File.join(directory, 'middleware', n)
end
module Moka
diff --git a/lib/views/index_login.haml b/lib/views/index_login.haml
index 5c202ac..f345c48 100644
--- a/lib/views/index_login.haml
+++ b/lib/views/index_login.haml
@@ -1,6 +1,7 @@
-%h2 Utilities
-%p
- %a{:href => "/announcements"} Publish announcements
+- if authentication_user.authorized?('identica')
+ %h2 Utilities
+ %p
+ %a{:href => "/announcements"} Publish announcements
%h2 Collections
%table
More information about the Xfce4-commits
mailing list