Class: Overcommit::HookContext::Base Abstract

Inherits:
Object
  • Object
show all
Defined in:
lib/overcommit/hook_context/base.rb

Overview

This class is abstract.

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.

Instance Method Summary collapse

Constructor Details

#initialize(config, args, input) ⇒ Base

Creates a hook context from the given configuration and input options.

Parameters:

  • standard input stream



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_environmentObject

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_nameString

Returns the camel-cased type of this hook (e.g. PreCommit)

Returns:



28
29
30
# File 'lib/overcommit/hook_context/base.rb', line 28

def hook_class_name
  self.class.name.split('::').last
end

#hook_script_nameString

Returns the actual name of the hook script being run (e.g. pre-commit).

Returns:



42
43
44
# File 'lib/overcommit/hook_context/base.rb', line 42

def hook_script_name
  hook_type_name.gsub('_', '-')
end

#hook_type_nameString

Returns the snake-cased type of this hook (e.g. pre_commit)

Returns:



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_linesArray<String>

Returns an array of lines passed to the hook via the standard input stream.

Returns:



77
78
79
# File 'lib/overcommit/hook_context/base.rb', line 77

def input_lines
  @input_lines ||= @input.read.split("\n")
end

#modified_filesArray<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.

Returns:



69
70
71
# File 'lib/overcommit/hook_context/base.rb', line 69

def modified_files
  []
end

#setup_environmentObject

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