From d3438b67a3f12dfd3d94078107923741ebf7fb45 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Fri, 2 May 2025 12:42:43 +0200 Subject: [PATCH 1/3] [docs] jack --- resources/docs/jack.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 resources/docs/jack.md diff --git a/resources/docs/jack.md b/resources/docs/jack.md new file mode 100644 index 000000000..620e7bbc1 --- /dev/null +++ b/resources/docs/jack.md @@ -0,0 +1,17 @@ +In real world, "jack" is a tool that helps to raise your heavy car one inch at a time. So you can fix any issues down there and drive safely on journeys to come. + +In Composer world, Jack helps you to raise dependencies one version at a time, safely and steadily. + +## Install + +It requires **PHP 8.2**. + +Install with Composer: + +```bash +composer require rector/jack --dev +``` + +## Features + +@todo From 4b47e1f65478581f5d8bb8924fbe18c61734f21b Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Fri, 2 May 2025 13:06:31 +0200 Subject: [PATCH 2/3] [docs] add jack, add jack package --- composer.json | 5 +- composer.lock | 247 +++++++++++++++++++++------------- resources/docs/jack.md | 59 +++++++- resources/docs/swiss-knife.md | 2 - 4 files changed, 210 insertions(+), 103 deletions(-) diff --git a/composer.json b/composer.json index 5ec2a99d5..71fe5e9ab 100644 --- a/composer.json +++ b/composer.json @@ -22,12 +22,13 @@ "barryvdh/laravel-ide-helper": "^3.5", "driftingly/rector-laravel": "^2.0.2", "nette/robot-loader": "^4.0", + "phpecs/phpecs": "^2.1", "phpstan/extension-installer": "^1.4", "phpstan/phpstan": "^2.1.13", "phpstan/phpstan-webmozart-assert": "^2.0", "phpunit/phpunit": "11.4", - "rector/swiss-knife": "^1.0", - "phpecs/phpecs": "^2.1", + "rector/jack": "^0.1.1", + "rector/swiss-knife": "^2.0", "tomasvotruba/class-leak": "^2.0" }, "autoload": { diff --git a/composer.lock b/composer.lock index ba3504c65..878cde394 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "ccae07866813303e46518521a1282067", + "content-hash": "cbe7da95392fd86ac7a42d88ac11fe92", "packages": [ { "name": "brick/math", @@ -1215,16 +1215,16 @@ }, { "name": "laravel/framework", - "version": "v12.11.1", + "version": "v12.12.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "bd0d62bd9c5196728e428cd695d89ec8640daac1" + "reference": "8f6cd73696068c28f30f5964556ec9d14e5d90d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/bd0d62bd9c5196728e428cd695d89ec8640daac1", - "reference": "bd0d62bd9c5196728e428cd695d89ec8640daac1", + "url": "https://api.github.com/repos/laravel/framework/zipball/8f6cd73696068c28f30f5964556ec9d14e5d90d7", + "reference": "8f6cd73696068c28f30f5964556ec9d14e5d90d7", "shasum": "" }, "require": { @@ -1426,7 +1426,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2025-04-30T13:48:39+00:00" + "time": "2025-05-01T16:13:12+00:00" }, { "name": "laravel/prompts", @@ -2280,16 +2280,16 @@ }, { "name": "nesbot/carbon", - "version": "3.9.0", + "version": "3.9.1", "source": { "type": "git", "url": "https://github.com/CarbonPHP/carbon.git", - "reference": "6d16a8a015166fe54e22c042e0805c5363aef50d" + "reference": "ced71f79398ece168e24f7f7710462f462310d4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/6d16a8a015166fe54e22c042e0805c5363aef50d", - "reference": "6d16a8a015166fe54e22c042e0805c5363aef50d", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/ced71f79398ece168e24f7f7710462f462310d4d", + "reference": "ced71f79398ece168e24f7f7710462f462310d4d", "shasum": "" }, "require": { @@ -2382,7 +2382,7 @@ "type": "tidelift" } ], - "time": "2025-03-27T12:57:33+00:00" + "time": "2025-05-01T19:51:51+00:00" }, { "name": "nette/schema", @@ -3636,16 +3636,16 @@ }, { "name": "symfony/console", - "version": "v7.2.5", + "version": "v7.2.6", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "e51498ea18570c062e7df29d05a7003585b19b88" + "reference": "0e2e3f38c192e93e622e41ec37f4ca70cfedf218" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/e51498ea18570c062e7df29d05a7003585b19b88", - "reference": "e51498ea18570c062e7df29d05a7003585b19b88", + "url": "https://api.github.com/repos/symfony/console/zipball/0e2e3f38c192e93e622e41ec37f4ca70cfedf218", + "reference": "0e2e3f38c192e93e622e41ec37f4ca70cfedf218", "shasum": "" }, "require": { @@ -3709,7 +3709,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.2.5" + "source": "https://github.com/symfony/console/tree/v7.2.6" }, "funding": [ { @@ -3725,7 +3725,7 @@ "type": "tidelift" } ], - "time": "2025-03-12T08:11:12+00:00" + "time": "2025-04-07T19:09:28+00:00" }, { "name": "symfony/css-selector", @@ -4222,16 +4222,16 @@ }, { "name": "symfony/http-foundation", - "version": "v7.2.5", + "version": "v7.2.6", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "371272aeb6286f8135e028ca535f8e4d6f114126" + "reference": "6023ec7607254c87c5e69fb3558255aca440d72b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/371272aeb6286f8135e028ca535f8e4d6f114126", - "reference": "371272aeb6286f8135e028ca535f8e4d6f114126", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/6023ec7607254c87c5e69fb3558255aca440d72b", + "reference": "6023ec7607254c87c5e69fb3558255aca440d72b", "shasum": "" }, "require": { @@ -4280,7 +4280,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.2.5" + "source": "https://github.com/symfony/http-foundation/tree/v7.2.6" }, "funding": [ { @@ -4296,20 +4296,20 @@ "type": "tidelift" } ], - "time": "2025-03-25T15:54:33+00:00" + "time": "2025-04-09T08:14:01+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.2.5", + "version": "v7.2.6", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "b1fe91bc1fa454a806d3f98db4ba826eb9941a54" + "reference": "f9dec01e6094a063e738f8945ef69c0cfcf792ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/b1fe91bc1fa454a806d3f98db4ba826eb9941a54", - "reference": "b1fe91bc1fa454a806d3f98db4ba826eb9941a54", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f9dec01e6094a063e738f8945ef69c0cfcf792ec", + "reference": "f9dec01e6094a063e738f8945ef69c0cfcf792ec", "shasum": "" }, "require": { @@ -4394,7 +4394,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.2.5" + "source": "https://github.com/symfony/http-kernel/tree/v7.2.6" }, "funding": [ { @@ -4410,20 +4410,20 @@ "type": "tidelift" } ], - "time": "2025-03-28T13:32:50+00:00" + "time": "2025-05-02T09:04:03+00:00" }, { "name": "symfony/mailer", - "version": "v7.2.3", + "version": "v7.2.6", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "f3871b182c44997cf039f3b462af4a48fb85f9d3" + "reference": "998692469d6e698c6eadc7ef37a6530a9eabb356" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/f3871b182c44997cf039f3b462af4a48fb85f9d3", - "reference": "f3871b182c44997cf039f3b462af4a48fb85f9d3", + "url": "https://api.github.com/repos/symfony/mailer/zipball/998692469d6e698c6eadc7ef37a6530a9eabb356", + "reference": "998692469d6e698c6eadc7ef37a6530a9eabb356", "shasum": "" }, "require": { @@ -4474,7 +4474,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.2.3" + "source": "https://github.com/symfony/mailer/tree/v7.2.6" }, "funding": [ { @@ -4490,20 +4490,20 @@ "type": "tidelift" } ], - "time": "2025-01-27T11:08:17+00:00" + "time": "2025-04-04T09:50:51+00:00" }, { "name": "symfony/mime", - "version": "v7.2.4", + "version": "v7.2.6", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "87ca22046b78c3feaff04b337f33b38510fd686b" + "reference": "706e65c72d402539a072d0d6ad105fff6c161ef1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/87ca22046b78c3feaff04b337f33b38510fd686b", - "reference": "87ca22046b78c3feaff04b337f33b38510fd686b", + "url": "https://api.github.com/repos/symfony/mime/zipball/706e65c72d402539a072d0d6ad105fff6c161ef1", + "reference": "706e65c72d402539a072d0d6ad105fff6c161ef1", "shasum": "" }, "require": { @@ -4558,7 +4558,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.2.4" + "source": "https://github.com/symfony/mime/tree/v7.2.6" }, "funding": [ { @@ -4574,7 +4574,7 @@ "type": "tidelift" } ], - "time": "2025-02-19T08:51:20+00:00" + "time": "2025-04-27T13:34:41+00:00" }, { "name": "symfony/polyfill-ctype", @@ -4657,7 +4657,7 @@ }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.31.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", @@ -4715,7 +4715,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.32.0" }, "funding": [ { @@ -4818,7 +4818,7 @@ }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.31.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", @@ -4879,7 +4879,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.32.0" }, "funding": [ { @@ -4899,19 +4899,20 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "v1.31.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", - "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", "shasum": "" }, "require": { + "ext-iconv": "*", "php": ">=7.2" }, "provide": { @@ -4959,7 +4960,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.32.0" }, "funding": [ { @@ -4975,20 +4976,20 @@ "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2024-12-23T08:48:59+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.31.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", - "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608", "shasum": "" }, "require": { @@ -5039,7 +5040,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.32.0" }, "funding": [ { @@ -5055,11 +5056,11 @@ "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2025-01-02T08:10:11+00:00" }, { "name": "symfony/polyfill-php83", - "version": "v1.31.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php83.git", @@ -5115,7 +5116,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.32.0" }, "funding": [ { @@ -5135,7 +5136,7 @@ }, { "name": "symfony/polyfill-uuid", - "version": "v1.31.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-uuid.git", @@ -5194,7 +5195,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.32.0" }, "funding": [ { @@ -5439,16 +5440,16 @@ }, { "name": "symfony/string", - "version": "v7.2.0", + "version": "v7.2.6", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82" + "reference": "a214fe7d62bd4df2a76447c67c6b26e1d5e74931" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/446e0d146f991dde3e73f45f2c97a9faad773c82", - "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82", + "url": "https://api.github.com/repos/symfony/string/zipball/a214fe7d62bd4df2a76447c67c6b26e1d5e74931", + "reference": "a214fe7d62bd4df2a76447c67c6b26e1d5e74931", "shasum": "" }, "require": { @@ -5506,7 +5507,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.2.0" + "source": "https://github.com/symfony/string/tree/v7.2.6" }, "funding": [ { @@ -5522,20 +5523,20 @@ "type": "tidelift" } ], - "time": "2024-11-13T13:31:26+00:00" + "time": "2025-04-20T20:18:16+00:00" }, { "name": "symfony/translation", - "version": "v7.2.4", + "version": "v7.2.6", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "283856e6981286cc0d800b53bd5703e8e363f05a" + "reference": "e7fd8e2a4239b79a0fd9fb1fef3e0e7f969c6dc6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/283856e6981286cc0d800b53bd5703e8e363f05a", - "reference": "283856e6981286cc0d800b53bd5703e8e363f05a", + "url": "https://api.github.com/repos/symfony/translation/zipball/e7fd8e2a4239b79a0fd9fb1fef3e0e7f969c6dc6", + "reference": "e7fd8e2a4239b79a0fd9fb1fef3e0e7f969c6dc6", "shasum": "" }, "require": { @@ -5601,7 +5602,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.2.4" + "source": "https://github.com/symfony/translation/tree/v7.2.6" }, "funding": [ { @@ -5617,7 +5618,7 @@ "type": "tidelift" } ], - "time": "2025-02-13T10:27:23+00:00" + "time": "2025-04-07T19:09:28+00:00" }, { "name": "symfony/translation-contracts", @@ -5773,16 +5774,16 @@ }, { "name": "symfony/var-dumper", - "version": "v7.2.3", + "version": "v7.2.6", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "82b478c69745d8878eb60f9a049a4d584996f73a" + "reference": "9c46038cd4ed68952166cf7001b54eb539184ccb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/82b478c69745d8878eb60f9a049a4d584996f73a", - "reference": "82b478c69745d8878eb60f9a049a4d584996f73a", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/9c46038cd4ed68952166cf7001b54eb539184ccb", + "reference": "9c46038cd4ed68952166cf7001b54eb539184ccb", "shasum": "" }, "require": { @@ -5836,7 +5837,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.2.3" + "source": "https://github.com/symfony/var-dumper/tree/v7.2.6" }, "funding": [ { @@ -5852,20 +5853,20 @@ "type": "tidelift" } ], - "time": "2025-01-17T11:39:41+00:00" + "time": "2025-04-09T08:14:01+00:00" }, { "name": "symfony/yaml", - "version": "v7.2.5", + "version": "v7.2.6", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "4c4b6f4cfcd7e52053f0c8bfad0f7f30fb924912" + "reference": "0feafffb843860624ddfd13478f481f4c3cd8b23" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/4c4b6f4cfcd7e52053f0c8bfad0f7f30fb924912", - "reference": "4c4b6f4cfcd7e52053f0c8bfad0f7f30fb924912", + "url": "https://api.github.com/repos/symfony/yaml/zipball/0feafffb843860624ddfd13478f481f4c3cd8b23", + "reference": "0feafffb843860624ddfd13478f481f4c3cd8b23", "shasum": "" }, "require": { @@ -5908,7 +5909,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.2.5" + "source": "https://github.com/symfony/yaml/tree/v7.2.6" }, "funding": [ { @@ -5924,7 +5925,7 @@ "type": "tidelift" } ], - "time": "2025-03-03T07:12:39+00:00" + "time": "2025-04-04T10:10:11+00:00" }, { "name": "symplify/vendor-patches", @@ -6026,16 +6027,16 @@ }, { "name": "vlucas/phpdotenv", - "version": "v5.6.1", + "version": "v5.6.2", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2" + "reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/a59a13791077fe3d44f90e7133eb68e7d22eaff2", - "reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/24ac4c74f91ee2c193fa1aaa5c249cb0822809af", + "reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af", "shasum": "" }, "require": { @@ -6094,7 +6095,7 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.1" + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.2" }, "funding": [ { @@ -6106,7 +6107,7 @@ "type": "tidelift" } ], - "time": "2024-07-20T21:52:34+00:00" + "time": "2025-04-30T23:37:27+00:00" }, { "name": "voku/portable-ascii", @@ -7371,18 +7372,65 @@ ], "time": "2024-10-05T08:39:03+00:00" }, + { + "name": "rector/jack", + "version": "0.1.1", + "source": { + "type": "git", + "url": "https://github.com/rectorphp/jack.git", + "reference": "dddfc1e2650b67e90e1eb67bda354d9cc6587820" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rectorphp/jack/zipball/dddfc1e2650b67e90e1eb67bda354d9cc6587820", + "reference": "dddfc1e2650b67e90e1eb67bda354d9cc6587820", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "bin": [ + "bin/jack" + ], + "type": "library", + "autoload": { + "psr-4": { + "Rector\\SwissKnife\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Swiss knife in pocket of every upgrade architect", + "support": { + "issues": "https://github.com/rectorphp/jack/issues", + "source": "https://github.com/rectorphp/jack/tree/0.1.1" + }, + "funding": [ + { + "url": "https://www.paypal.me/rectorphp", + "type": "custom" + }, + { + "url": "https://github.com/tomasvotruba", + "type": "github" + } + ], + "time": "2025-05-02T10:59:09+00:00" + }, { "name": "rector/swiss-knife", - "version": "1.0.0", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/rectorphp/swiss-knife.git", - "reference": "b2302d518ff96ff76ae5f64e9f833e7cdcb3271c" + "reference": "32688d02c0f84b12dc98b137e13e87a42203ed96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/swiss-knife/zipball/b2302d518ff96ff76ae5f64e9f833e7cdcb3271c", - "reference": "b2302d518ff96ff76ae5f64e9f833e7cdcb3271c", + "url": "https://api.github.com/repos/rectorphp/swiss-knife/zipball/32688d02c0f84b12dc98b137e13e87a42203ed96", + "reference": "32688d02c0f84b12dc98b137e13e87a42203ed96", "shasum": "" }, "require": { @@ -7392,6 +7440,11 @@ "bin/swiss-knife" ], "type": "library", + "autoload": { + "psr-4": { + "Rector\\SwissKnife\\": "src" + } + }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" @@ -7399,7 +7452,7 @@ "description": "Swiss knife in pocket of every upgrade architect", "support": { "issues": "https://github.com/rectorphp/swiss-knife/issues", - "source": "https://github.com/rectorphp/swiss-knife/tree/1.0.0" + "source": "https://github.com/rectorphp/swiss-knife/tree/2.2.0" }, "funding": [ { @@ -7411,7 +7464,7 @@ "type": "github" } ], - "time": "2024-10-01T15:44:55+00:00" + "time": "2025-04-13T21:54:21+00:00" }, { "name": "sebastian/cli-parser", diff --git a/resources/docs/jack.md b/resources/docs/jack.md index 620e7bbc1..99a6aa815 100644 --- a/resources/docs/jack.md +++ b/resources/docs/jack.md @@ -2,9 +2,11 @@ In real world, "jack" is a tool that helps to raise your heavy car one inch at a In Composer world, Jack helps you to raise dependencies one version at a time, safely and steadily. +
+ ## Install -It requires **PHP 8.2**. +Rector Jack is downgraded and scoped. It requires **PHP 7.2+** and can be installed on any legacy project. Install with Composer: @@ -14,4 +16,57 @@ composer require rector/jack --dev ## Features -@todo +### 1. Too many outdated dependencies? Let your CI tell you + +This command checks **major outdated dependencies** in your project. If there is **more than 5**, it will fail: + +```bash +vendor/bin/jack breakpoint +``` + +Use `--limit` option to change the number of allowed major outdated dependencies. + +
+ +Use this command in CI to prevent too many outdated dependencies. It helps us to keep the project healthy without constant need to checking the dependencies yourself. + +
+ +### 2. Open up Next versions + +We know we're behind the latest versions of our dependencies, but where to start? Which versions should be force to update first? We can get lot of conflicts if we try to bump wrong end of knot. + +Instead, let Composer handle it. How? We open-up package constraints in `composer.json`: + +```bash +vendor/bin/jack open-versions +``` + +This command opens up 5 versions to their next nearest step, e.g.: + +```diff + { + "require": { + "php": "^7.4", +- "symfony/console": "5.1.*" ++ "symfony/console": "5.2.*|5.2.*" + }, + "require-dev": { +- "phpunit/phpunit": "^9.0" ++ "phpunit/phpunit": "^9.0|^10.0" + } + } + } +``` + +Then we run Composer to do the work: + +```bash +composer update +``` + +You can change number of opened versions with `--limit` option. Run with `--dry-run` to see the proposed changes first. + +
+ +See [Jack Github repository](https://github.com/rectorphp/jack) for full documentation. diff --git a/resources/docs/swiss-knife.md b/resources/docs/swiss-knife.md index 09543f840..0d684f07a 100644 --- a/resources/docs/swiss-knife.md +++ b/resources/docs/swiss-knife.md @@ -34,5 +34,3 @@ It helps you to:
See [Swiss knife Github repository](https://github.com/rectorphp/swiss-knife) for full documentation. - - From 0ebfb38b8a8ea6c2da636fb6010dbcedffcabcd2 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Fri, 2 May 2025 13:07:25 +0200 Subject: [PATCH 3/3] [ci] add rector jack --- .github/workflows/code_analysis.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/code_analysis.yaml b/.github/workflows/code_analysis.yaml index 426354a50..e9c96dfe4 100644 --- a/.github/workflows/code_analysis.yaml +++ b/.github/workflows/code_analysis.yaml @@ -17,6 +17,11 @@ jobs: name: 'Validate rule definitions' run: php artisan app:validate-rule-definitions + # @see https://github.com/rectorphp/jack + - + name: 'Rector Jack' + run: vendor/bin/jack breakpoint --limit 2 --ansi + - name: 'PHPStan' run: composer phpstan