Completed
Push — master ( 5987cd...c258b5 )
by Michal
04:11
created

CLI   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 50
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 0 Features 1
Metric Value
wmc 10
c 1
b 0
f 1
lcom 0
cbo 1
dl 0
loc 50
ccs 0
cts 36
cp 0
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A usage() 0 4 1
B parse() 0 20 5
A run() 0 21 4
1
<?php
2
3
/**
4
 * CLI interface
5
 *
6
 * @package    SqlParser
7
 * @subpackage Utils
8
 */
9
namespace SqlParser\Utils;
10
11
/**
12
 * CLI interface
13
 *
14
 * @category   Exceptions
15
 * @package    SqlParser
16
 * @subpackage Utils
17
 * @author     Michal Čihař <[email protected]>
18
 * @license    http://opensource.org/licenses/GPL-2.0 GNU Public License
19
 */
20
class CLI
21
{
22
    public function usage()
23
    {
24
        echo "Usage: highlight-query --query SQL [--format html|cli|text]\n";
25
    }
26
27
    public function parse()
28
    {
29
        $longopts = array('help', 'query:', 'format:');
30
        $params = getopt(
31
            'hq:f:', $longopts
32
        );
33
        foreach ($longopts as $value) {
34
            $value = rtrim($value, ':');
35
            if (isset($params[$value])) {
36
                $params[$value[0]] = $params[$value];
37
            }
38
        }
39
        if (! isset($params['f'])) {
40
            $params['f'] = 'cli';
41
        }
42
        if (! in_array($params['f'], array('html', 'cli', 'text'))) {
43
            return false;
44
        }
45
        return $params;
46
    }
47
48
    public function run()
49
    {
50
        $params = $this->parse();
51
        if ($params === false) {
52
            return 1;
53
        }
54
        if (isset($params['h'])) {
55
            $this->usage();
56
            return 0;
57
        }
58
        if (isset($params['q'])) {
59
            echo Formatter::format(
60
                $params['q'], array('type' => $params['f'])
61
            );
62
            echo "\n";
63
            return 0;
64
        }
65
        echo "ERROR: Missing parameters!\n";
66
        $this->usage();
67
        return 1;
68
    }
69
}
70