Skip to content

Commit 0e802d0

Browse files
qschmickroshangautam
authored andcommitted
refactor(arguments) : add support for a mix of parameters and arguments
resolves codestudiohq#48
1 parent 1746047 commit 0e802d0

File tree

2 files changed

+61
-1
lines changed

2 files changed

+61
-1
lines changed

src/Task.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,9 @@ public function compileParameters($console = false)
7575
$parameters = collect($matches)->mapWithKeys(function ($parameter) use ($console) {
7676
$param = explode('=', $parameter[0]);
7777

78-
return count($param) > 1 ? ($console ? ((starts_with($param[0], '--') ? [$param[0] => $param[1]] : [$param[1]])) : [$param[0] => $param[1]]) : $param;
78+
return count($param) > 1 ?
79+
($console ? ((starts_with($param[0], '--') ? [$param[0] => $param[1]] : [$param[1]])) : [$param[0] => $param[1]])
80+
: (starts_with($param[0], '--') ? [$param[0] => true] : $param);
7981
})->toArray();
8082

8183
return $parameters;
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
<?php
2+
3+
namespace Studio\Totem\Tests\Feature;
4+
5+
use Studio\Totem\Task;
6+
use Studio\Totem\Tests\TestCase;
7+
8+
class CompileParametersTest extends TestCase
9+
{
10+
/** @test */
11+
public function no_paramters()
12+
{
13+
$task = factory(Task::class)->create();
14+
$parameters = $task->compileParameters();
15+
16+
$this->assertEmpty($parameters);
17+
}
18+
19+
/** @test */
20+
public function multiple_paramters()
21+
{
22+
$task = factory(Task::class)->create();
23+
$task->parameters = '--parameter-1=value --parameter-2=value --parameter-3=value';
24+
$parameters = $task->compileParameters();
25+
26+
$this->assertCount(3, $parameters);
27+
$this->assertEquals('value', $parameters['--parameter-1']);
28+
$this->assertEquals('value', $parameters['--parameter-2']);
29+
$this->assertEquals('value', $parameters['--parameter-3']);
30+
}
31+
32+
public function flag_and_paramter()
33+
{
34+
$task = factory(Task::class)->create();
35+
$task->parameters = '--parameter-1=value --dry-run';
36+
$parameters = $task->compileParameters();
37+
38+
$this->assertCount(2, $parameters);
39+
$this->assertArrayHasKey('--dry-run', $parameters);
40+
$this->assertTrue($parameters['--dry-run']);
41+
$this->assertEquals('value', $parameters['--parameter-1']);
42+
}
43+
44+
public function multiple_flags()
45+
{
46+
$task = factory(Task::class)->create();
47+
$task->parameters = '--dry-run --debug --log-output';
48+
$parameters = $task->compileParameters();
49+
50+
$this->assertCount(3, $parameters);
51+
$this->assertArrayHasKey('--dry-run', $parameters);
52+
$this->assertArrayHasKey('--debug', $parameters);
53+
$this->assertArrayHasKey('--log-output', $parameters);
54+
$this->assertTrue($parameters['--dry-run']);
55+
$this->assertTrue($parameters['--debug']);
56+
$this->assertTrue($parameters['--log-output']);
57+
}
58+
}

0 commit comments

Comments
 (0)