Int2stringCharacters::handle()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 14
Code Lines 7

Duplication

Lines 14
Ratio 100 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
cc 2
eloc 7
nc 2
nop 0
dl 14
loc 14
ccs 0
cts 8
cp 0
crap 6
rs 9.4285
c 0
b 0
f 0
1
<?php
2
3
namespace App\Support\Console\Commands;
4
5
use Illuminate\Console\Command;
6
7 View Code Duplication
class Int2stringCharacters extends Command
8
{
9
    /**
10
     * The name and signature of the console command.
11
     *
12
     * @var string
13
     */
14
    protected $signature = '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 = 'Set 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 [$characters] 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());
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);
73
    }
74
}
75