Sha256: b5ddabd436ea0fe81ac02efe767b888e1cc5e97736b76beb61f470218cce4bf9
Contents?: true
Size: 1.9 KB
Versions: 2
Compression:
Stored size: 1.9 KB
Contents
require 'highline/import' require 'open3' namespace :hooks do desc 'Install necessary git hooks' task :install do hooks = %w[ applypatch-msg pre-applypatch post-applypatch pre-commit prepare-commit-msg commit-msg post-commit pre-rebase post-checkout post-merge pre-receive update post-receive post-update pre-auto-gc ] hooks.each do |hook| repo_hook_path = "#{File.dirname(__FILE__)}/#{hook}.template.rb" git_hook_path = "#{Rails.root}/.git/hooks/#{hook}" if File.exists?(repo_hook_path) if File.exists?(git_hook_path) || File.symlink?(git_hook_path) should_continue = '' while %w[y yes no n].exclude?(should_continue.downcase) should_continue = ask("Warning: #{git_hook_path} already exists. Overwrite it? [y/n]: ") Open3.capture3("rm -f #{git_hook_path}") end break if %w[no n].include?(should_continue.downcase) end stdout_str, stderr_str, status = Open3.capture3("cp #{repo_hook_path} #{git_hook_path}") stdout_str, stderr_str, status = Open3.capture3("chmod 755 #{git_hook_path}") raise "error: #{stderr_str} for #{hook} when setting permissions to 755" unless status.success? stdout_str, stderr_str, status = Open3.capture3("chmod +x #{git_hook_path}") raise "error: #{stderr_str} for #{hook} when making executable (chmod +x)" unless status.success? if status.success? puts "installed #{hook}: copied #{git_hook_path} -> #{repo_hook_path}" puts "If you have trouble running your git hook, try changing the shebang line (#!) in #{repo_hook_path}" else raise "error: #{stderr_str} for #{hook}" unless status.success? end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
commit_checker-0.0.2 | lib/commit_checker/tasks/hooks.rake |
commit_checker-0.0.1 | lib/commit_checker/tasks/hooks.rake |