Class: Overcommit::HookContext::Base Abstract
- 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 ⇒ String
Returns the camel-cased type of this hook (e.g. PreCommit).
-
#hook_script_name ⇒ String
Returns the actual name of the hook script being run (e.g. pre-commit).
-
#hook_type_name ⇒ String
Returns the snake-cased type of this hook (e.g. pre_commit).
-
#initialize(config, args, input) ⇒ Base
constructor
Creates a hook context from the given configuration and input options.
-
#input_lines ⇒ Array<String>
Returns an array of lines passed to the hook via the standard input stream.
-
#modified_files ⇒ Array<String>
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
Creates a hook context from the given configuration and input options.
19 20 21 22 23 |
# File 'lib/overcommit/hook_context/base.rb', line 19 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.
59 60 61 |
# File 'lib/overcommit/hook_context/base.rb', line 59 def cleanup_environment # Implemented by subclass, if applicable end |
#hook_class_name ⇒ String
Returns the camel-cased type of this hook (e.g. PreCommit)
28 29 30 |
# File 'lib/overcommit/hook_context/base.rb', line 28 def hook_class_name self.class.name.split('::').last end |
#hook_script_name ⇒ String
Returns the actual name of the hook script being run (e.g. pre-commit).
42 43 44 |
# File 'lib/overcommit/hook_context/base.rb', line 42 def hook_script_name hook_type_name.gsub('_', '-') end |
#hook_type_name ⇒ String
Returns the snake-cased type of this hook (e.g. pre_commit)
35 36 37 |
# File 'lib/overcommit/hook_context/base.rb', line 35 def hook_type_name Overcommit::Utils.snake_case(hook_class_name) end |
#input_lines ⇒ Array<String>
Returns an array of lines passed to the hook via the standard input stream.
77 78 79 |
# File 'lib/overcommit/hook_context/base.rb', line 77 def input_lines @input_lines ||= @input.read.split("\n") end |
#modified_files ⇒ Array<String>
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.
69 70 71 |
# File 'lib/overcommit/hook_context/base.rb', line 69 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.
50 51 52 |
# File 'lib/overcommit/hook_context/base.rb', line 50 def setup_environment # Implemented by subclass, if applicable end |