Completed
Push — master ( 7e59dd...f0d1a4 )
by Elf
04:46
created

setCharactersInEnvironmentFile()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 14
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
cc 2
eloc 7
nc 2
nop 1
dl 0
loc 14
ccs 0
cts 10
cp 0
crap 6
rs 9.4285
c 0
b 0
f 0
1
<?php
2
3
namespace ElfSundae\Laravel\Support\Console\Commands;
4
5
use Illuminate\Console\Command;
6
7
class GenerateInt2stringCharacters extends Command
8
{
9
    /**
10
     * The name and signature of the console command.
11
     *
12
     * @var string
13
     */
14
    protected $signature = 'support:generate-int2string-characters
15
        {--show : Display the characters instead of modifying the config file}
16
        {--c|characters=0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ : Generate with custom characters}';
17
18
    /**
19
     * The console command description.
20
     *
21
     * @var string
22
     */
23
    protected $description = 'Generate characters for `Helper::int2string()`.';
24
25
    /**
26
     * Execute the console command.
27
     *
28
     * @return mixed
29
     */
30
    public function handle()
31
    {
32
        $characters = $this->generateRandomCharacters($this->option('characters'));
33
34
        if ($this->option('show')) {
35
            return $this->comment($characters);
36
        }
37
38
        $this->setCharactersInEnvironmentFile($characters);
39
40
        $this->laravel['config']['support.int2string'] = $characters;
41
42
        $this->info("Characters [<comment>$characters</comment>] set successfully.");
43
    }
44
45
    /**
46
     * Generate random characters.
47
     *
48
     * @return string
49
     */
50
    protected function generateRandomCharacters($characters)
51
    {
52
        return str_shuffle(count_chars($characters, 3));
53
    }
54
55
    /**
56
     * Set the characters in the environment file.
57
     *
58
     * @param  string  $characters
59
     */
60
    protected function setCharactersInEnvironmentFile($characters)
61
    {
62
        $content = file_get_contents($this->laravel->environmentFilePath());
1 ignored issue
show
Bug introduced by
The method environmentFilePath() does not exist on Illuminate\Contracts\Foundation\Application. Did you maybe mean environment()?

This check marks calls to methods that do not seem to exist on an object.

This is most likely the result of a method being renamed without all references to it being renamed likewise.

Loading history...
63
64
        $text = 'INT2STRING_CHARACTERS='.$characters;
65
66
        $content = preg_replace('#INT2STRING_CHARACTERS=.*#', $text, $content, -1, $replaceCount);
67
68
        if (0 === $replaceCount) {
69
            $content .= $text.PHP_EOL;
70
        }
71
72
        file_put_contents($this->laravel->environmentFilePath(), $content);
1 ignored issue
show
Bug introduced by
The method environmentFilePath() does not exist on Illuminate\Contracts\Foundation\Application. Did you maybe mean environment()?

This check marks calls to methods that do not seem to exist on an object.

This is most likely the result of a method being renamed without all references to it being renamed likewise.

Loading history...
73
    }
74
}
75