|
| 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