PublishScp   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 70
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 0
Metric Value
dl 0
loc 70
rs 10
c 0
b 0
f 0
wmc 3
lcom 1
cbo 2

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A handle() 0 6 1
A abortCommandExecution() 0 6 1
1
<?php
2
3
namespace Acacha\ForgePublish\Commands;
4
5
use Acacha\ForgePublish\Commands\Traits\ChecksEnv;
6
use Acacha\ForgePublish\Commands\Traits\RunsSSHCommands;
7
use GuzzleHttp\Client;
8
use Illuminate\Console\Command;
9
10
/**
11
 * Class PublishScp.
12
 *
13
 * @package Acacha\ForgePublish\Commands
14
 */
15
class PublishScp extends Command
16
{
17
    use ChecksEnv, RunsSSHCommands;
18
19
    /**
20
     * Server name
21
     *
22
     * @var String
23
     */
24
    protected $server;
25
26
    /**
27
     * Domain
28
     *
29
     * @var String
30
     */
31
    protected $domain;
32
33
    /**
34
     * The name and signature of the console command.
35
     *
36
     * @var string
37
     */
38
    protected $signature = 'publish:scp {file} {--server=} {--domain=}';
39
40
    /**
41
     * The console command description.
42
     *
43
     * @var string
44
     */
45
    protected $description = 'Copy file or folder to production via scp';
46
47
    /**
48
     * Guzzle http client.
49
     *
50
     * @var Client
51
     */
52
    protected $http;
53
54
    /**
55
     * Create a new command instance.
56
     *
57
     */
58
    public function __construct(Client $http)
59
    {
60
        parent::__construct();
61
        $this->http = $http;
62
    }
63
64
    /**
65
     * Execute the console command.
66
     *
67
     */
68
    public function handle()
69
    {
70
        $this->abortCommandExecution();
71
        $file = $this->argument('file');
72
        $this->runScp(base_path($file), $this->domain, null, true);
73
    }
74
75
    /**
76
     * Abort command execution?
77
     */
78
    protected function abortCommandExecution()
79
    {
80
        $this->server = $this->checkEnv('server', 'ACACHA_FORGE_SERVER');
81
        $this->domain = $this->checkEnv('domain', 'ACACHA_FORGE_DOMAIN');
82
        $this->abortIfNoSSHConnection();
83
    }
84
}
85