Class: Committer::Commands::SetupGitHook
- Inherits:
-
Object
- Object
- Committer::Commands::SetupGitHook
- Defined in:
- lib/committer/commands/setup_git_hook.rb
Constant Summary collapse
- HOOK_PATH =
'.git/hooks/prepare-commit-msg'
Class Method Summary collapse
- .display_success_message ⇒ Object
- .execute(_args) ⇒ Object
- .install_git_hook ⇒ Object
- .validate_git_directory_exists ⇒ Object
- .validate_git_repository ⇒ Object
- .validate_git_root ⇒ Object
- .validate_hook_doesnt_exist ⇒ Object
Class Method Details
.display_success_message ⇒ Object
55 56 57 58 |
# File 'lib/committer/commands/setup_git_hook.rb', line 55 def self. puts 'Git hook successfully installed!' puts 'Now your commit messages will be automatically generated.' end |
.execute(_args) ⇒ Object
8 9 10 11 12 13 14 15 16 |
# File 'lib/committer/commands/setup_git_hook.rb', line 8 def self.execute(_args) validate_git_repository install_git_hook exit 0 rescue StandardError => e puts "Error: #{e.}" exit 1 end |
.install_git_hook ⇒ Object
48 49 50 51 52 53 |
# File 'lib/committer/commands/setup_git_hook.rb', line 48 def self.install_git_hook template_path = File.('../prepare-commit-msg', __dir__) hook_content = File.read(template_path) File.write(HOOK_PATH, hook_content) File.chmod(0o755, HOOK_PATH) end |
.validate_git_directory_exists ⇒ Object
24 25 26 27 28 29 |
# File 'lib/committer/commands/setup_git_hook.rb', line 24 def self.validate_git_directory_exists return if Dir.exist?('.git') puts 'Error: Current directory is not a git repository.' exit 1 end |
.validate_git_repository ⇒ Object
18 19 20 21 22 |
# File 'lib/committer/commands/setup_git_hook.rb', line 18 def self.validate_git_repository validate_git_root validate_git_directory_exists validate_hook_doesnt_exist end |
.validate_git_root ⇒ Object
31 32 33 34 35 36 37 38 |
# File 'lib/committer/commands/setup_git_hook.rb', line 31 def self.validate_git_root git_toplevel = `git rev-parse --show-toplevel`.strip current_dir = Dir.pwd return if git_toplevel == current_dir puts 'Error: Please run this command from the root of your git repository.' exit 1 end |
.validate_hook_doesnt_exist ⇒ Object
40 41 42 43 44 45 46 |
# File 'lib/committer/commands/setup_git_hook.rb', line 40 def self.validate_hook_doesnt_exist return unless File.exist?(HOOK_PATH) puts 'Error: prepare-commit-msg hook already exists.' puts 'Please remove or rename the existing hook and try again.' exit 1 end |