GitHooksCommand

Class
extends Command
Final: Yes

Installs packaged Git hooks for the consumer repository.

Attributes
#[AsCommand]
$name : 'git:hooks'
$description : 'Installs Fast Forward Git hooks.'
$aliases : ['.git/hooks', 'git-hooks']

Table of Contents

Properties

Methods

__construct()

Creates a new GitHooksCommand instance.

 : mixed
addJsonOption()

Adds the standard JSON output options to the current command.

 : static
configure()

Configures hook source, target, and initialization options.

 : void
execute()

Copies packaged Git hooks.

 : int
isJsonOutput()

Determines whether JSON output was requested.

 : bool
isPrettyJsonOutput()

Determines whether pretty JSON output was requested.

 : bool
failure()

Logs a failed command result and returns the failure exit code.

 : int
installHook()

Installs a single hook and rewrites drifted targets defensively.

 : bool
notice()

Logs an informational command message at notice level.

 : void
shouldReplaceHook()

Prompts whether a drifted hook should be replaced.

 : bool
success()

Logs a successful command result and returns the success exit code.

 : int
Properties

$fileLocator

Private Read-only
private FileLocatorInterface $fileLocator
Methods

__construct()

Public

Creates a new GitHooksCommand instance.

public __construct(FilesystemInterface  $filesystem, FileLocatorInterface  $fileLocator, FinderFactoryInterface  $finderFactory, FileDiffer  $fileDiffer, LoggerInterface  $logger, SymfonyStyle  $io) : mixed
Parameters
$filesystem : FilesystemInterface

Description

the filesystem used to copy hooks

$fileLocator : FileLocatorInterface

Description

the locator used to find packaged hooks

$finderFactory : FinderFactoryInterface

Description

the factory used to create finders for hook files

$fileDiffer : FileDiffer
$logger : LoggerInterface

Description

the output-aware logger

$io : SymfonyStyle

addJsonOption()

Protected

Adds the standard JSON output options to the current command.

protected addJsonOption() : static
Return values
static

configure()

Protected

Configures hook source, target, and initialization options.

protected configure() : void

execute()

Protected

Copies packaged Git hooks.

protected execute(InputInterface  $input, OutputInterface  $output) : int
Parameters
$input : InputInterface

Description

the command input

$output : OutputInterface

Description

the command output

Return values
int

Description

the command status code

isJsonOutput()

Protected

Determines whether JSON output was requested.

protected isJsonOutput(InputInterface  $input) : bool

Description

The pretty-json flag SHALL imply JSON output.

Parameters
$input : InputInterface
Return values
bool

isPrettyJsonOutput()

Protected

Determines whether pretty JSON output was requested.

protected isPrettyJsonOutput(InputInterface  $input) : bool
Parameters
$input : InputInterface
Return values
bool

failure()

Private

Logs a failed command result and returns the failure exit code.

private failure( string  $message, InputInterface  $input[, array<string, mixed>  $context = []][, string|null  $file = null][, int|null  $line = null]) : int
Parameters
$message : string

Description

the failure message

$input : InputInterface

Description

the originating command input

$context : array<string, mixed> = []

Description

optional extra log context

$file : string|null = null

Description

the related file path when known

$line : int|null = null

Description

the related line when known

Return values
int

installHook()

Private

Installs a single hook and rewrites drifted targets defensively.

private installHook( string  $sourcePath, string  $hookPath, bool  $replaceExisting, InputInterface  $input) : bool
Parameters
$sourcePath : string

Description

the packaged hook path

$hookPath : string

Description

the target repository hook path

$replaceExisting : bool

Description

whether an existing hook SHOULD be removed first

$input : InputInterface

Description

the originating command input

Return values
bool

Description

true when the hook was installed successfully

notice()

Private

Logs an informational command message at notice level.

private notice( string  $message, InputInterface  $input[, array<string, mixed>  $context = []]) : void
Parameters
$message : string

Description

the notice message

$input : InputInterface

Description

the originating command input

$context : array<string, mixed> = []

Description

optional extra log context

shouldReplaceHook()

Private

Prompts whether a drifted hook should be replaced.

private shouldReplaceHook( string  $hookPath) : bool
Parameters
$hookPath : string

Description

the hook path that would be replaced

Return values
bool

Description

true when the replacement SHOULD proceed

success()

Private

Logs a successful command result and returns the success exit code.

private success( string  $message, InputInterface  $input[, array<string, mixed>  $context = []][, string  $logLevel = LogLevel::INFO]) : int
Parameters
$message : string

Description

the success message

$input : InputInterface

Description

the originating command input

$context : array<string, mixed> = []

Description

optional extra log context

$logLevel : string = LogLevel::INFO

Description

the PSR-3 log level used for the successful result

Return values
int