PublishInfo::name()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 0
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Acacha\ForgePublish\Commands;
4
5
use Acacha\ForgePublish\Commands\Traits\ChecksServer;
6
use Acacha\ForgePublish\Commands\Traits\ChecksSite;
7
use Acacha\ForgePublish\Commands\Traits\ChecksToken;
8
use Acacha\ForgePublish\Commands\Traits\ItFetchesServers;
9
use GuzzleHttp\Client;
10
use Illuminate\Console\Command;
11
12
/**
13
 * Class PublishInfo.
14
 *
15
 * @package Acacha\ForgePublish\Commands
16
 */
17
class PublishInfo extends Command
18
{
19
    use ChecksToken, ChecksServer, ChecksSite;
20
21
    /**
22
     * Servers
23
     *
24
     * @var array
25
     */
26
    protected $servers;
27
28
    /**
29
     * The name and signature of the console command.
30
     *
31
     * @var string
32
     */
33
    protected $signature = 'publish:info';
34
35
    /**
36
     * The console command description.
37
     *
38
     * @var string
39
     */
40
    protected $description = 'Show Acacha Forge info';
41
42
    /**
43
     * Guzzle Http client
44
     *
45
     * @var Client
46
     */
47
    protected $http;
48
49
    /**
50
     * PublishCreateSite constructor.
51
     *
52
     * @param Client $client
53
     */
54
    public function __construct(Client $client)
55
    {
56
        parent::__construct();
57
        $this->http = $client;
58
    }
59
60
    /**
61
     * Execute the console command.
62
     *
63
     */
64
    public function handle()
65
    {
66
        $this->info('Here is your configuration:');
67
68
        $headers = ['Key', 'Value'];
69
70
        $tasks = [
71
            [ 'ACACHA_FORGE_URL', fp_env('ACACHA_FORGE_URL', 'Not available!')],
72
            [ 'ACACHA_FORGE_ACCESS_TOKEN', $this->token() ],
73
            [ 'ACACHA_FORGE_EMAIL', fp_env('ACACHA_FORGE_EMAIL', 'Not available!')],
74
            [ 'ACACHA_FORGE_SERVER', $this->server()],
75
            [ 'ACACHA_FORGE_IP_ADDRESS', $this->ip()],
76
            [ 'ACACHA_FORGE_SERVER_NAME', $this->name()],
77
            [ 'ACACHA_FORGE_DOMAIN', fp_env('ACACHA_FORGE_DOMAIN', 'Not available!')],
78
            [ 'ACACHA_FORGE_PROJECT_TYPE', fp_env('ACACHA_FORGE_PROJECT_TYPE', 'Not available!')],
79
            [ 'ACACHA_FORGE_SITE', $this->site()],
80
            [ 'ACACHA_FORGE_SITE_DIRECTORY', fp_env('ACACHA_FORGE_SITE_DIRECTORY', 'Not available!')],
81
            [ 'ACACHA_FORGE_GITHUB_REPO', fp_env('ACACHA_FORGE_GITHUB_REPO', 'Not available!')]
82
        ];
83
84
        $this->table($headers, $tasks);
85
    }
86
87
    /**
88
     * Check and obtain token state.
89
     */
90
    protected function token()
91
    {
92
        if ($token = fp_env('ACACHA_FORGE_ACCESS_TOKEN', null)) {
93
            if ($this->checkToken($token)) {
94
                return 'OK!';
95
            }
96
            $this->error('Be careful! The token you provided is not valid (unauthorized!)');
97
            return '<error>Available but not correct!</error>';
98
        } else {
99
            return 'Not available!';
100
        }
101
    }
102
103
    /**
104
     * Check and obtain server Forge id.
105
     *
106
     * @return null
107
     */
108
    protected function server()
109
    {
110
        return $this->check('ACACHA_FORGE_SERVER', 'checkServer');
111
    }
112
113
    /**
114
     * Check and obtain site Forge id.
115
     *
116
     * @return null
117
     */
118
    protected function site()
119
    {
120
        return $this->check('ACACHA_FORGE_SITE', 'checkSite');
121
    }
122
123
    /**
124
     * Check and obtain ip.
125
     *
126
     * @return null
127
     */
128
    protected function ip()
129
    {
130
        return $this->check('ACACHA_FORGE_IP_ADDRESS', 'checkIp');
131
    }
132
133
    /**
134
     * Check and obtain server name.
135
     *
136
     * @return null
137
     */
138
    protected function name()
139
    {
140
        return $this->check('ACACHA_FORGE_SERVER_NAME', 'checkServerName');
141
    }
142
143
    /**
144
     * Check and obtain ip.
145
     *
146
     * @return null
147
     */
148
    protected function check($env_var, $functionName)
149
    {
150
        if ($value = fp_env($env_var, null)) {
151
            if ($this->$functionName()) {
152
                return $value;
153
            }
154
            $this->error("Be careful! The $env_var you provided doesn't match Laravel Forge server");
155
            return "<error>$value</error>";
156
        } else {
157
            return 'Not available!';
158
        }
159
    }
160
}
161