blob: b0048f7dad5ea783f8061e636a3fe103b5098103 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
#!/usr/bin/env ruby -KU
ENV["PATH"] = "/usr/local/bin/:/opt/local/bin:#{ENV["PATH"]}"
ENV["RAILS_ENV"] ||= "production"
require File.dirname(__FILE__) + "/../config/environment"
action = ARGV[0]
abort("Need create_repos or load_readmes command") unless action
def failure_msg(msg)
$stderr.puts "\e[1;31m#{msg}\e[0m"
end
project_count = Project.count
Project.find(:all).each_with_index do |project, index|
case action
when "create_repos"
next unless project.wiki_repository.blank?
project.transaction do
puts "Creating wiki repo for #{project.slug} (#{index+1}/#{project_count})"
wiki_repo = Repository.new({
:name => project.slug + Repository::WIKI_NAME_SUFFIX,
:kind => Repository::KIND_WIKI,
:mainline => false,
:user => project.user,
})
project.wiki_repository = wiki_repo
wiki_repo.save!
end
when "load_readmes"
wiki_repo = project.wiki_repository
git_dir = File.join(GitoriousConfig["repository_base_path"], project.mainline_repository.gitdir)
unless File.exist?(git_dir)
failure_msg "Skipping #{project.slug}, no mainline repo, wtf? (#{index+1}/#{project_count})"
next
end
tree = `env GIT_DIR=#{git_dir} git ls-tree HEAD`
if tree =~ /^\d+ (.+)\t(readme(\..*)?)$/i
begin
sha = $1
readmename = $2
puts "Creating Home in #{project.slug} based on #{$2} (#{$1}) (#{index+1}/#{project_count})"
p = Page.find("Home", wiki_repo.git)
readmeblob = project.mainline_repository.git.tree / readmename
p.content = readmeblob.data
p.user = project.user
p.save
rescue => e
failure_msg "FAIL: #{project.slug} #{e.class.name}: #{e.message}"
end
end
end
end
|