Skip to content

Commit 9a8bde6

Browse files
committed
Added skeleton script (shudd3r/skeletons engine)
1 parent b2af06f commit 9a8bde6

2 files changed

Lines changed: 59 additions & 1 deletion

File tree

composer.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@
1515
"friendsofphp/php-cs-fixer": "3.9.*",
1616
"squizlabs/php_codesniffer": "^3.7.1",
1717
"phpunit/phpunit": "^9.5.21",
18-
"php-coveralls/php-coveralls": "^2.5.2"
18+
"php-coveralls/php-coveralls": "^2.5.2",
19+
"shudd3r/skeletons": "~0.5.3"
1920
},
2021
"autoload": {
2122
"psr-4": {
@@ -27,6 +28,9 @@
2728
"Polymorphine\\Dev\\Tests\\": "tests/"
2829
}
2930
},
31+
"bin": [
32+
"polymorphine-skeleton"
33+
],
3034
"scripts": {
3135
"test-cs": [
3236
"php-cs-fixer --dry-run -v --config=cs-fixer.php.dist --path-mode=intersection fix src tests",

polymorphine-skeleton

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
#!/usr/bin/env php
2+
<?php declare(strict_types=1);
3+
4+
/*
5+
* This file is part of Polymorphine/Dev package.
6+
*
7+
* (c) Shudd3r <q3.shudder@gmail.com>
8+
*
9+
* This source file is subject to the MIT license that is bundled
10+
* with this source code in the file LICENSE.
11+
*/
12+
13+
use Shudd3r\Skeletons\Application;
14+
use Shudd3r\Skeletons\InputArgs;
15+
use Shudd3r\Skeletons\Environment\Files\Directory\LocalDirectory;
16+
use Shudd3r\Skeletons\Replacements\Replacement;
17+
use Shudd3r\Skeletons\Templates\Contents;
18+
use Shudd3r\Skeletons\Templates\Template;
19+
20+
// This script should be executed from package root directory
21+
$rootDirectory = getcwd();
22+
if (!file_exists($rootDirectory . '/vendor/autoload.php')) {
23+
fwrite(STDERR, 'Cannot find vendor/autoload.php file in package root directory');
24+
die(1);
25+
}
26+
27+
if (!file_exists($rootDirectory . '/composer.json')) {
28+
fwrite(STDERR, 'Cannot find composer.json file in package root directory');
29+
die(1);
30+
}
31+
32+
require_once $rootDirectory . '/vendor/autoload.php';
33+
34+
$args = new InputArgs($argv ?? []);
35+
36+
$skeleton = new LocalDirectory(__DIR__ . '/template');
37+
$package = new LocalDirectory($rootDirectory);
38+
$app = new Application($package, $skeleton);
39+
40+
$app->backup(new LocalDirectory($rootDirectory . '/.dev/.skeleton-backup'));
41+
42+
$app->replacement('package.name')->add(new Replacement\PackageName());
43+
$app->replacement('repository.name')->add(new Replacement\RepositoryName('package.name'));
44+
$app->replacement('package.description')->add(new Replacement\PackageDescription('package.name'));
45+
$app->replacement('namespace.src')->add(new Replacement\SrcNamespace('package.name'));
46+
47+
$isUpdate = $args->command() === 'update';
48+
$app->template('composer.json')->createWith(function (Contents $contents) use ($isUpdate) {
49+
$baseTemplate = new Template\BasicTemplate($contents->template());
50+
return new Template\MergedJsonTemplate($baseTemplate, $contents->package(), $isUpdate);
51+
});
52+
53+
$exitCode = $app->run($args);
54+
exit($exitCode);

0 commit comments

Comments
 (0)