#!/usr/bin/env php
<?php

//支持的提交动作
$action = [
    'install', 'remove'
];

if (empty($argv[1]) || !in_array($argv[1], $action)) {
    print<<<EOT
不支持的提交动作，请使用以下参数提交
install:    安装php-csc检测钩子到.git/hooks【copy pre-commit 到 .git/hooks/pre-commit】 并且备份原有钩子文件
remove:     删除php-csc检测钩子 .git/hooks/pre-commit 删除钩子不会回复原有备份文件
EOT;
    exit(1);
}

switch ($argv[1]) {
    case 'install':
        install();
        break;
    case 'remove':
        remove();
        break;
}

function install()
{
    # check git
    echo "Checking git repository...\n";
    if (!is_dir("./.git")) {
        echo "Your project has not been init by git! Please check it...\n";
        exit(1);
    }

    # check phplint
    echo "Checking phplint install...\n";
    exec('./vendor/bin/phplint --version', $phpLintCheckRs, $returnVar);
    if ($returnVar) {
        echo "Checking phplint failed! Please install phplint first!";
        exit(1);
    } else {
        echo "Checking phplint success!\n";
        echo $phpLintCheckRs[0] . "\n";
    }

    # check phpcs
    echo "Checking phpcs install...\n";
    exec('phpcs --version', $phpCsCheckRs, $returnVar);
    if ($returnVar) {
        echo "Checking phpcs failed! Please install phpcs first!";
        exit(1);
    } else {
        echo "Checking phpcs success!\n";
        echo $phpCsCheckRs[0] . "\n";
    }
    # check&&back pre-commit
    if (is_file('./.git/hooks/pre-commit')
        && md5_file('./.git/hooks/pre-commit') != md5_file('./vendor/giles/php-csc/pre-commit')) {
        exec('mv ./.git/hooks/pre-commit ./.git/hooks/pre-commit.bak.' . time());
    }
    if (is_file('./.git/hooks/pre-commit')
        && md5_file('./.git/hooks/pre-commit') == md5_file('./vendor/giles/php-csc/pre-commit')) {
        echo "php-csc install success!\n";
        exit(0);
    }

    exec('cp ./vendor/giles/php-csc/pre-commit ./.git/hooks');

    echo "php-csc install success!\n";
    exit(0);
}

function remove()
{
    # delete phpcc file
    echo "Delete pre-commit file...\n";
    if (is_file('.git/hooks/pre-commit')) {
        exec('rm -f .git/hooks/pre-commit');
    }

    echo "Remove phpcsc success!\n";
    exit(0);
}
