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

GenerateInt2stringCharacters   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 68
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
dl 0
loc 68
ccs 0
cts 24
cp 0
rs 10
c 0
b 0
f 0
wmc 5
lcom 1
cbo 1

3 Methods

Rating   Name   Duplication   Size   Complexity  
A handle() 0 14 2
A generateRandomCharacters() 0 4 1
A setCharactersInEnvironmentFile() 0 14 2
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