SetEnvCommand   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 43
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 16
c 1
b 0
f 0
dl 0
loc 43
rs 10
wmc 5

2 Methods

Rating   Name   Duplication   Size   Complexity  
A handle() 0 3 1
A setEnv() 0 19 4
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($name, $value = null)
32
    {
33
    	$env = $name;
34
    	if (is_string($name) && !isset($value)) {
35
    		$env = [
36
    				$name => $value
37
    		];
38
    	}
39
    	
40
    	foreach ($env as $key => $value) {
41
    		$oldSetting = $key . '=' . env($key);
42
    		$newSetting = $key . '=' . $value;
43
    		
44
    		putenv($newSetting);
45
    		
46
    		file_put_contents(app()->environmentFilePath(), str_replace(
47
    			$oldSetting,
48
    			$newSetting,
49
    			file_get_contents(app()->environmentFilePath())
50
    		));
51
    	}
52
    }
53
}
54