Skip to content

Commit 2ad57dd

Browse files
authored
Merge pull request #17 from binafy/feat/add-convenience-methods
[1.x] Feat/add convenience methods
2 parents 797d25a + 50258ce commit 2ad57dd

File tree

3 files changed

+130
-0
lines changed

3 files changed

+130
-0
lines changed

README.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
- [`download`](#download)
2626
- [`generate`](#generate)
2727
- [`generateForce`](#generate-force)
28+
- [`generateIf`](#generate-if)
29+
- [`generateUnless`](#generate-unless)
2830
- [Contributors](#contributors)
2931
- [Security](#security)
3032
- [Changelog](#changelog)
@@ -292,6 +294,40 @@ LaravelStub::from(__DIR__ . 'model.stub')
292294
->generateForce();
293295
```
294296

297+
<a name="generate-if"></a>
298+
### `generateIf`
299+
300+
If you want to generate a stub file if given boolean expression evaluates to `true`, you can use the `generateIf` method:
301+
302+
```php
303+
LaravelStub::from(__DIR__ . 'model.stub')
304+
->to(__DIR__ . '/App')
305+
->name('new-model')
306+
->ext('php')
307+
->replaces([
308+
'NAMESPACE' => 'App',
309+
'CLASS' => 'Milwad'
310+
])
311+
->generateIf(true);
312+
```
313+
314+
<a name="generate-unless"></a>
315+
### `generateUnless`
316+
317+
If you want to generate a stub file if given boolean expression evaluates to `false`, you can use the `generateIf` method:
318+
319+
```php
320+
LaravelStub::from(__DIR__ . 'model.stub')
321+
->to(__DIR__ . '/App')
322+
->name('new-model')
323+
->ext('php')
324+
->replaces([
325+
'NAMESPACE' => 'App',
326+
'CLASS' => 'Milwad'
327+
])
328+
->generateUnless(true);
329+
```
330+
295331
<a name="contributors"></a>
296332
## Contributors
297333

src/LaravelStub.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,30 @@ public function generateForce(): bool
161161
return $this->generate(true);
162162
}
163163

164+
/**
165+
* Generate stub if condition pass.
166+
*/
167+
public function generateIf(bool $condition): bool
168+
{
169+
if ($condition) {
170+
return $this->generate();
171+
}
172+
173+
return false;
174+
}
175+
176+
/**
177+
* Generate stub if condition pass (reversed).
178+
*/
179+
public function generateUnless(bool $condition): bool
180+
{
181+
if (! $condition) {
182+
return $this->generate();
183+
}
184+
185+
return false;
186+
}
187+
164188
/**
165189
* Generate stub file.
166190
*/

tests/Feature/LaravelStubTest.php

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,3 +191,73 @@
191191
assertFileExists(__DIR__ . '/../App/new-test.php');
192192
assertFileDoesNotExist(__DIR__ . '/../App/test.stub');
193193
});
194+
195+
test('generate stub successfully with `generateIf` method', function () {
196+
$stub = __DIR__ . '/test.stub';
197+
198+
$generate = LaravelStub::from($stub)
199+
->to(__DIR__ . '/../App')
200+
->replaces([
201+
'CLASS' => 'Milwad',
202+
'NAMESPACE' => 'App\Models'
203+
])
204+
->name('new-test')
205+
->ext('php')
206+
->moveStub()
207+
->generateIf(true);
208+
209+
assertTrue($generate);
210+
assertFileExists(__DIR__ . '/../App/new-test.php');
211+
assertFileDoesNotExist(__DIR__ . '/../App/test.stub');
212+
});
213+
214+
test('generate stub unsuccessfully with `generateIf` method', function () {
215+
$stub = __DIR__ . '/test.stub';
216+
217+
$generate = LaravelStub::from($stub)
218+
->to(__DIR__ . '/../App')
219+
->replaces([
220+
'CLASS' => 'Milwad',
221+
'NAMESPACE' => 'App\Models'
222+
])
223+
->name('new-test')
224+
->ext('php')
225+
->generateIf(false);
226+
227+
\PHPUnit\Framework\assertFalse($generate);
228+
});
229+
230+
test('generate stub successfully with `generateUnless` method', function () {
231+
$stub = __DIR__ . '/test.stub';
232+
233+
$generate = LaravelStub::from($stub)
234+
->to(__DIR__ . '/../App')
235+
->replaces([
236+
'CLASS' => 'Milwad',
237+
'NAMESPACE' => 'App\Models'
238+
])
239+
->name('new-test')
240+
->ext('php')
241+
->moveStub()
242+
->generateUnless(false);
243+
244+
assertTrue($generate);
245+
assertFileExists(__DIR__ . '/../App/new-test.php');
246+
assertFileDoesNotExist(__DIR__ . '/../App/test.stub');
247+
});
248+
249+
test('generate stub unsuccessfully with `generateUnless` method', function () {
250+
$stub = __DIR__ . '/test.stub';
251+
252+
$generate = LaravelStub::from($stub)
253+
->to(__DIR__ . '/../App')
254+
->replaces([
255+
'CLASS' => 'Milwad',
256+
'NAMESPACE' => 'App\Models'
257+
])
258+
->name('new-test')
259+
->ext('php')
260+
->generateUnless(true);
261+
262+
\PHPUnit\Framework\assertFalse($generate);
263+
});

0 commit comments

Comments
 (0)