Blob of script/fixup_hooks (raw blob data)

1 #!/usr/bin/env ruby
2
3 require 'tmpdir'
4 require "fileutils"
5
6 LOCK_FILE_PATH = File.join(Dir.tmpdir, "gitorious_task_lockfile")
7 ENV["PATH"] = "/usr/local/bin/:/opt/local/bin:#{ENV["PATH"]}"
8
9 if File.exist?(LOCK_FILE_PATH)
10 $stderr.puts "Task lockfile '#{LOCK_FILE_PATH}' exists!"
11 exit(1)
12 end
13
14 ENV["RAILS_ENV"] ||= "production"
15 require File.dirname(__FILE__) + "/../config/environment"
16
17
18 repo_path = GitoriousConfig['repository_base_path']
19 repo_hooks = File.join(repo_path, ".hooks")
20 gitorious_hooks = File.expand_path(File.join(File.dirname(__FILE__), "../data/hooks"))
21
22 if not File.symlink?(repo_hooks)
23 if File.exist?(repo_hooks)
24 FileUtils.mv(repo_hooks, File.join(repo_path, ".hooks.backup"))
25 end
26
27 FileUtils.ln_s(gitorious_hooks, repo_hooks)
28 elsif File.readlink(repo_hooks) != gitorious_hooks
29 # puts "ln -sf #{gitorious_hooks} #{repo_hooks}"
30 File.unlink(repo_hooks)
31 FileUtils.ln_sf(gitorious_hooks, repo_hooks)
32 end
33
34 Dir.glob("#{repo_path}/**/*.git").each do |repo|
35 Dir.chdir(repo) do
36 hooks = File.join(repo, "hooks")
37 unless File.symlink?(hooks)
38 print "=> Fixing #{hooks}... "
39 $stdout.flush
40
41 if File.exist?(hooks)
42 FileUtils.mv(hooks, "hooks.backup")
43 end
44
45 FileUtils.ln_s("../../.hooks", "hooks")
46
47 puts "[OK]"
48 end
49 end
50 end