Passed
Push — master ( e4e152...8fde47 )
by Georgi
02:55
created

SetEnvCommand::handle()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 3
rs 10
1
<?php
2
3
namespace Epesi\Core\Console;
4
5
use Illuminate\Console\Command;
6
7
class SetEnvCommand extends Command
8
{
9
    /**
10
     * The name and signature of the console command.
11
     *
12
     * @var string
13
     */
14
    protected $signature = 'epesi:env {name : Env variable(s) to set} {value? : Env variable value}';
15
16
    /**
17
     * The console command description.
18
     *
19
     * @var string
20
     */
21
    protected $description = 'Update ENV variable';
22
23
    /**
24
     * Execute the console command.
25
     */
26
    public function handle()
27
    {
28
    	$this->setEnv($this->argument('name'), $this->argument('value'));
29
    }
30
    
31
    private static function setEnv($key, $value = null)
32
    {
33
    	$env = $key;
34
    	if (is_string($key) && !isset($value)) {
35
    		$env = [
36
    				$key => $value
37
    		];
38
    	}
39
    	
40
    	foreach ($env as $key => $value) {
0 ignored issues
show
introduced by
$key is overwriting one of the parameters of this function.
Loading history...
41
    		$oldSetting = $key . '=' . env($key);
42
    		$newSetting = $key . '=' . $value;
43
    		
44
    		putenv($newSetting);
45
    		
46
    		file_put_contents(app()->environmentFilePath(), str_replace(
1 ignored issue
show
introduced by
The method environmentFilePath() does not exist on Illuminate\Container\Container. Are you sure you never get this type here, but always one of the subclasses? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

46
    		file_put_contents(app()->/** @scrutinizer ignore-call */ environmentFilePath(), str_replace(
Loading history...
47
    			$oldSetting,
48
    			$newSetting,
49
    			file_get_contents(app()->environmentFilePath())
50
    		));
51
    	}
52
    }
53
}
54