16 Star 39 Fork 0

Gitee 极速下载/sylius

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
此仓库是为了提升国内下载速度的镜像仓库,每日同步一次。 原始仓库: https://github.com/Sylius/Sylius.git
克隆/下载
RoboFile.php 4.37 KB
一键复制 编辑 原始数据 按行查看 历史
<?php
use Robo\Exception\TaskException;
use Robo\Result;
use Robo\Symfony\ConsoleIO;
use Robo\Tasks;
class RoboFile extends Tasks
{
const ROOT_DIR = __DIR__;
const SUCCESS = 'success';
const FAILED = 'failed';
const YES = 'yes';
public function ciPackages(ConsoleIO $io, string $packagesJson): ?Result
{
$packages = json_decode($packagesJson, true);
$result = [];
$failed = false;
foreach ($packages as $package) {
$this->startGroup($package);
try {
$processResult = $this->processPackagePipeline($package);
$result[$package] = null !== $processResult && $processResult->wasSuccessful() ? self::SUCCESS : self::FAILED;
} catch (TaskException) {
$result[$package] = self::FAILED;
}
}
$this->endGroup();
foreach ($result as $packageName => $value) {
printf("%s %s%s", $value === self::SUCCESS ? '✅' : '❌', $packageName, PHP_EOL);
$failed = $failed || $value === self::FAILED;
}
exit(false === $failed ? 0 : 1);
}
/**
* @throws TaskException
*/
private function processPackagePipeline(string $package): ?Result
{
$symfonyVersion = getenv('SYMFONY_VERSION');
$useSwiftmailer = getenv('USE_SWIFTMAILER');
$unstable = getenv('UNSTABLE');
$packagePath = sprintf('%s/src/Sylius/%s', self::ROOT_DIR, $package);
if (false === $symfonyVersion) {
throw new RuntimeException('SYMFONY_VERSION environment variable is not set.');
}
$task = $this->taskExecStack()
->dir($packagePath)
->stopOnFail()
->exec(sprintf('composer config extra.symfony.require "%s"', $symfonyVersion))
;
if (self::YES === $useSwiftmailer) {
$task
->exec('composer require --no-progress --no-update --no-scripts --no-plugins "sylius/mailer-bundle:^1.8"')
->exec('composer require --no-progress --no-update --no-scripts --no-plugins "symfony/swiftmailer-bundle:^3.4"')
;
}
if (self::YES === $unstable) {
$task->exec('composer config minimum-stability dev');
$task->exec('composer config prefer-stable false');
}
$task
->exec('composer update --no-scripts --no-interaction')
->exec('composer validate --ansi --strict')
;
if (in_array($package, ['Bundle/AdminBundle', 'Bundle/ApiBundle', 'Bundle/CoreBundle'])) {
$this->createTestAssets(sprintf('%s/Tests/Application', $packagePath));
$this->createTestAssets(sprintf('%s/test', $packagePath)); // Remove after all test apps have been moved
}
if ('Bundle/ApiBundle' === $package) {
$task->exec('Tests/Application/bin/console doctrine:schema:update --force');
}
if (false === str_starts_with($symfonyVersion, '^5.4') && 'Bundle/UserBundle' === $package) {
$task->exec('rm spec/Security/UserPasswordEncoderSpec.php');
}
if (file_exists(sprintf('%s/phpspec.yml', $packagePath)) || file_exists(sprintf('%s/phpspec.yml.dist', $packagePath)) || file_exists(sprintf('%s/phpspec.yaml', $packagePath))) {
$task->exec('vendor/bin/phpspec run --ansi --no-interaction -f dot');
}
if (file_exists(sprintf('%s/phpunit.xml', $packagePath)) || file_exists(sprintf('%s/phpunit.xml.dist', $packagePath))) {
$task->exec('vendor/bin/phpunit --colors=always');
}
return $task->run();
}
private function createTestAssets(string $testAppDirectory): void
{
$adminBuildDir = sprintf('%s/public/build/admin', $testAppDirectory);
$shopBuildDir = sprintf('%s/public/build/shop', $testAppDirectory);
if (!file_exists($adminBuildDir)) {
mkdir($adminBuildDir, 0777, true);
file_put_contents(sprintf('%s/manifest.json', $adminBuildDir), '{}');
}
if (!file_exists($shopBuildDir)) {
mkdir($shopBuildDir, 0777, true);
file_put_contents(sprintf('%s/manifest.json', $shopBuildDir), '{}');
}
}
private function startGroup(string $groupName): void
{
printf("::group::%s\n", $groupName);
}
private function endGroup(): void
{
echo "\n::endgroup::\n\n";
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/mirrors/sylius.git
git@gitee.com:mirrors/sylius.git
mirrors
sylius
sylius
1.14

搜索帮助