Completed
Pull Request — master (#7)
by Raphael
02:55
created

Scripts   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 69
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 6
c 1
b 0
f 0
lcom 0
cbo 0
dl 0
loc 69
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
B installGitMessageHook() 0 56 6
1
<?php
2
declare(strict_types = 1);
3
namespace PurpleBooth\GitLintValidators\Composer;
4
5
use Composer\Script\Event;
6
7
class Scripts
0 ignored issues
show
Coding Style introduced by
Scripts does not seem to conform to the naming convention (Utils?$).

This check examines a number of code elements and verifies that they conform to the given naming conventions.

You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods.

Loading history...
8
{
9
10
    /**
11
     * Installs and activates the Git commit message
12
     * hook when confirmed by the user. An existing hook
13
     * is backed with the .bak extension.
14
     *
15
     *
16
     * @param  Event $event The script event.
17
     * @return boolean
18
     */
19
    public static function installGitMessageHook(Event $event)
1 ignored issue
show
Coding Style introduced by
function installGitMessageHook() does not seem to conform to the naming convention (^(?:is|has|should|may|supports)).

This check examines a number of code elements and verifies that they conform to the given naming conventions.

You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods.

Loading history...
20
    {
21
        $gitHookContent = <<<CONTENT
22
#!/bin/sh
23
24
vendor/bin/git-lint-validators git-lint-validator:hook $1
25
CONTENT;
26
27
        $io = $event->getIO();
0 ignored issues
show
Comprehensibility introduced by
Avoid variables with short names like $io. Configured minimum length is 3.

Short variable names may make your code harder to understand. Variable names should be self-descriptive. This check looks for variable names who are shorter than a configured minimum.

Loading history...
Coding Style introduced by
Equals sign not aligned with surrounding assignments; expected 7 spaces but found 1 space

This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.

To visualize

$a = "a";
$ab = "ab";
$abc = "abc";

will produce issues in the first and second line, while this second example

$a   = "a";
$ab  = "ab";
$abc = "abc";

will produce no issues.

Loading history...
28
        $question = "Do you want to install and activate the Git "
29
            . "commit message hook? ";
30
31
        if ($io->askConfirmation($question, false)) {
32
            $gitDirectory = dirname(__DIR__, 4) . DIRECTORY_SEPARATOR . '.git';
33
            if (!is_dir($gitDirectory)) {
34
                $errorMessage = "Couldn't locate the .git directory. "
35
                    . "Aborting the Git hook installation.";
36
                $io->error($errorMessage);
37
38
                return false;
39
            }
40
41
            $gitCommitMessageHookFile = $gitDirectory
0 ignored issues
show
Comprehensibility Naming introduced by
The variable name $gitCommitMessageHookFile exceeds the maximum configured length of 20.

Very long variable names usually make code harder to read. It is therefore recommended not to make variable names too verbose.

Loading history...
42
                . DIRECTORY_SEPARATOR . 'hooks'
43
                . DIRECTORY_SEPARATOR . 'commit-msg';
44
45
            $backedExistingGitCommitMessageHookFile = false;
0 ignored issues
show
Comprehensibility Naming introduced by
The variable name $backedExistingGitCommitMessageHookFile exceeds the maximum configured length of 20.

Very long variable names usually make code harder to read. It is therefore recommended not to make variable names too verbose.

Loading history...
46
            if (file_exists($gitCommitMessageHookFile)) {
47
                $backedExistingGitCommitMessageHookFile = copy(
48
                    $gitCommitMessageHookFile,
49
                    $gitCommitMessageHookFile . '.bak'
50
                );
51
            }
52
53
            file_put_contents($gitCommitMessageHookFile, $gitHookContent);
54
            chmod($gitCommitMessageHookFile, 0751);
55
56
            $io->write("Installed and activated the Git commit message hook.");
57
58
            if ($backedExistingGitCommitMessageHookFile) {
59
                $io->write("Backed previous Git commit message hook.");
60
            }
61
62
            if ($io->isVerbose()) {
63
                $io->write("Wrote");
64
                $io->write("<comment>$gitHookContent</comment>");
65
                $io->write("into <info>$gitCommitMessageHookFile</info> and made it executable.");
66
            }
67
68
            return true;
69
        }
70
71
        $io->write("Aborted installation and activation of the Git commit message hook.");
72
73
        return false;
74
    }
75
}
76