Skip to content

Commit 9237760

Browse files
committed
up: support string for get same opts and args
1 parent ecfb9dd commit 9237760

File tree

3 files changed

+53
-36
lines changed

3 files changed

+53
-36
lines changed

src/Concern/InputArgumentsTrait.php

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -252,30 +252,26 @@ public function getArrayArg($key, array $default = []): array
252252

253253
/**
254254
* Get same args value
255-
* eg: des description
255+
* eg: des = description
256256
*
257257
* ```php
258+
* $input->sameArg('des, description');
258259
* $input->sameArg(['des', 'description']);
259260
* ```
260261
*
261-
* @param array $names
262-
* @param mixed $default
263-
*
264-
* @return bool|mixed|null
265-
*/
266-
public function getSameArg(array $names, $default = null)
267-
{
268-
return $this->sameArg($names, $default);
269-
}
270-
271-
/**
272-
* @param array $names
262+
* @param string|array $names
273263
* @param mixed $default
274264
*
275265
* @return mixed
276266
*/
277-
public function sameArg(array $names, $default = null)
267+
public function getSameArg($names, $default = null)
278268
{
269+
if (is_string($names)) {
270+
$names = array_map('trim', explode(',', $names));
271+
} elseif (!is_array($names)) {
272+
$names = (array)$names;
273+
}
274+
279275
foreach ($names as $name) {
280276
if ($this->hasArg($name)) {
281277
return $this->get($name);
@@ -285,6 +281,17 @@ public function sameArg(array $names, $default = null)
285281
return $default;
286282
}
287283

284+
/**
285+
* @param string|array $names
286+
* @param mixed $default
287+
*
288+
* @return mixed
289+
*/
290+
public function sameArg($names, $default = null)
291+
{
292+
return $this->getSameArg($names, $default);
293+
}
294+
288295
/**
289296
* clear args
290297
*/

src/Concern/InputOptionsTrait.php

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,12 @@
33
namespace Inhere\Console\Concern;
44

55
use Inhere\Console\Exception\PromptException;
6+
use function array_map;
67
use function array_merge;
8+
use function explode;
9+
use function is_array;
710
use function is_bool;
11+
use function is_string;
812

913
/**
1014
* Trait InputOptionsTrait
@@ -13,7 +17,6 @@
1317
*/
1418
trait InputOptionsTrait
1519
{
16-
1720
/**
1821
* Input short-opts data
1922
*
@@ -99,12 +102,12 @@ public function getStringOpt(string $name, string $default = ''): string
99102
/**
100103
* Get an string option(long/short) value
101104
*
102-
* @param string[] $names eg ['n', 'name']
105+
* @param string|string[] $names eg 'n,name' OR ['n', 'name']
103106
* @param string $default
104107
*
105108
* @return string
106109
*/
107-
public function getSameStringOpt(array $names, string $default = ''): string
110+
public function getSameStringOpt($names, string $default = ''): string
108111
{
109112
return (string)$this->getSameOpt($names, $default);
110113
}
@@ -140,12 +143,12 @@ public function getBoolOpt(string $name, bool $default = false): bool
140143
* Get (long/short)option value(bool)
141144
* eg: -h --help
142145
*
143-
* @param string[] $names
146+
* @param string|string[] $names eg 'n,name' OR ['n', 'name']
144147
* @param bool $default
145148
*
146149
* @return bool
147150
*/
148-
public function getSameBoolOpt(array $names, bool $default = false): bool
151+
public function getSameBoolOpt($names, bool $default = false): bool
149152
{
150153
return (bool)$this->getSameOpt($names, $default);
151154
}
@@ -180,36 +183,43 @@ public function hasOpt(string $name): bool
180183
* eg: -h --help
181184
*
182185
* ```php
186+
* $input->sameOpt('h,help');
183187
* $input->sameOpt(['h','help']);
184188
* ```
185189
*
186-
* @param array $names
190+
* @param string|string[] $names eg 'n,name' OR ['n', 'name']
187191
* @param mixed $default
188192
*
189193
* @return bool|mixed|null
190194
*/
191-
public function getSameOpt(array $names, $default = null)
195+
public function getSameOpt($names, $default = null)
192196
{
193-
return $this->sameOpt($names, $default);
197+
if (is_string($names)) {
198+
$names = array_map('trim', explode(',', $names));
199+
} elseif (!is_array($names)) {
200+
$names = (array)$names;
201+
}
202+
203+
foreach ($names as $name) {
204+
if ($this->hasOpt($name)) {
205+
return $this->getOpt($name);
206+
}
207+
}
208+
209+
return $default;
194210
}
195211

196212
/**
197213
* Alias of the getSameOpt()
198214
*
199-
* @param array $names
200-
* @param null $default
215+
* @param string|array $names
216+
* @param mixed $default
201217
*
202218
* @return bool|mixed|null
203219
*/
204-
public function sameOpt(array $names, $default = null)
220+
public function sameOpt($names, $default = null)
205221
{
206-
foreach ($names as $name) {
207-
if ($this->hasOpt($name)) {
208-
return $this->getOpt($name);
209-
}
210-
}
211-
212-
return $default;
222+
return $this->getSameOpt($names, $default);
213223
}
214224

215225
/**

src/Concern/InputOutputAwareTrait.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,13 +90,13 @@ public function getRequiredArg($name)
9090
}
9191

9292
/**
93-
* @param array $names
93+
* @param string|array $names
9494
* @param mixed $default
9595
*
9696
* @return bool|mixed|null
9797
* @see Input::getSameArg()
9898
*/
99-
public function getSameArg(array $names, $default = null)
99+
public function getSameArg($names, $default = null)
100100
{
101101
return $this->input->getSameArg($names, $default);
102102
}
@@ -113,12 +113,12 @@ public function getOpt($name, $default = null)
113113
}
114114

115115
/**
116-
* @param array $names
116+
* @param string|string[] $names eg 'n,name' OR ['n', 'name']
117117
* @param mixed $default
118118
*
119119
* @return mixed
120120
*/
121-
public function getSameOpt(array $names, $default = null)
121+
public function getSameOpt($names, $default = null)
122122
{
123123
return $this->input->getSameOpt($names, $default);
124124
}

0 commit comments

Comments
 (0)