Class: Overcommit::HookContext::Base
- Inherits:
-
Object
- Object
- Overcommit::HookContext::Base
- Defined in:
- lib/overcommit/hook_context/base.rb
Overview
Contains helpers related to the context with which a hook is being run.
It acts as an adapter to the arguments passed to the hook, as well as context-specific information such as staged files, providing a single source of truth for this context.
This is also important to house in a separate object so that any calculations can be memoized across all hooks in a single object, which helps with performance.
Direct Known Subclasses
CommitMsg, PostCheckout, PostCommit, PostMerge, PostRewrite, PreCommit, PrePush, PreRebase, RunAll
Instance Method Summary collapse
-
#cleanup_environment ⇒ Object
Resets the environment to an appropriate state.
-
#hook_class_name ⇒ Object
Returns the camel-cased type of this hook (e.g. PreCommit).
-
#hook_script_name ⇒ Object
Returns the actual name of the hook script being run (e.g. pre-commit).
-
#hook_type_name ⇒ Object
Returns the snake-cased type of this hook (e.g. pre_commit).
-
#initialize(config, args, input) ⇒ Base
constructor
A new instance of Base.
-
#input_lines ⇒ Object
Returns an array of lines passed to the hook via STDIN.
-
#modified_files ⇒ Object
Returns a list of files that have been modified.
-
#setup_environment ⇒ Object
Initializes anything related to the environment.
Constructor Details
#initialize(config, args, input) ⇒ Base
Returns a new instance of Base.
16 17 18 19 20 |
# File 'lib/overcommit/hook_context/base.rb', line 16 def initialize(config, args, input) @config = config @args = args @input = input end |
Instance Method Details
#cleanup_environment ⇒ Object
Resets the environment to an appropriate state.
This is called after the hooks have been run by the [HookRunner]. Different hook types can perform different cleanup operations, which are intended to “undo” the results of the call to #setup_environment.
50 51 52 |
# File 'lib/overcommit/hook_context/base.rb', line 50 def cleanup_environment # Implemented by subclass end |
#hook_class_name ⇒ Object
Returns the camel-cased type of this hook (e.g. PreCommit)
23 24 25 |
# File 'lib/overcommit/hook_context/base.rb', line 23 def hook_class_name self.class.name.split('::').last end |
#hook_script_name ⇒ Object
Returns the actual name of the hook script being run (e.g. pre-commit).
33 34 35 |
# File 'lib/overcommit/hook_context/base.rb', line 33 def hook_script_name hook_type_name.gsub('_', '-') end |
#hook_type_name ⇒ Object
Returns the snake-cased type of this hook (e.g. pre_commit)
28 29 30 |
# File 'lib/overcommit/hook_context/base.rb', line 28 def hook_type_name Overcommit::Utils.snake_case(hook_class_name) end |
#input_lines ⇒ Object
Returns an array of lines passed to the hook via STDIN.
63 64 65 |
# File 'lib/overcommit/hook_context/base.rb', line 63 def input_lines @input_lines ||= @input.read.split("\n") end |
#modified_files ⇒ Object
Returns a list of files that have been modified.
By default, this returns an empty list. Subclasses should implement if there is a concept of files changing for the type of hook being run.
58 59 60 |
# File 'lib/overcommit/hook_context/base.rb', line 58 def modified_files [] end |
#setup_environment ⇒ Object
Initializes anything related to the environment.
This is called before the hooks are run by the [HookRunner]. Different hook types can perform different setup.
41 42 43 |
# File 'lib/overcommit/hook_context/base.rb', line 41 def setup_environment # Implemented by subclass end |