-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathcastor.php
64 lines (51 loc) · 1.72 KB
/
castor.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php
/*
* This file is part of JoliCode's Harvest PHP API project.
*
* (c) JoliCode <[email protected]>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace sdk;
use Castor\Attribute\AsTask;
use function Castor\exit_code;
use function Castor\fs;
use function Castor\http_request;
use function Castor\import;
use function Castor\io;
import(__DIR__ . '/tools/php-cs-fixer/castor.php');
const SPEC_URL = 'https://raw.githubusercontent.com/jolicode/harvest-openapi-generator/master/generated/harvest-openapi.yaml';
#[AsTask(description: 'Downloads the last specification and re-generates the SDK', aliases: ['update'])]
function update(): int
{
update_specification();
return generate();
}
#[AsTask(description: 'Downloads the last specification from Github')]
function update_specification(): void
{
io()->comment(\sprintf('Download the spec from %s', SPEC_URL));
fs()->dumpFile(
'Resources/harvest-openapi.yaml',
http_request('GET', SPEC_URL)->getContent()
);
io()->success('Successfully updated the OpenAPI specification file.');
}
#[AsTask(description: 'Re-generates the SDK using the local specification')]
function generate(): int
{
io()->comment('Generating the SDK using Jane OpenAPI...');
$result = exit_code('./vendor/bin/jane-openapi generate -c .jane-openapi.php');
if (0 !== $result) {
io()->error('An error occurred while generating the SDK.');
} else {
io()->success('Successfully generated the SDK');
}
return $result;
}
#[AsTask(description: 'Runs the test suite', namespace: 'qa')]
function test(): int
{
return exit_code('./vendor/bin/simple-phpunit');
}