cubadevops / upgrader
PHP Project Upgrader
Installs: 43
Dependents: 1
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
Type:package
Requires
- php: >=7.4
- ext-curl: *
- ext-json: *
- ext-zip: *
- bangpound/composer-constants: ^2.0
- guzzlehttp/guzzle: ^7.7
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.57
- phpunit/phpunit: ^9.6
- roave/security-advisories: dev-latest
- vimeo/psalm: ^5.22.2
README
A PHP script to manage upgrades for your project using different repository providers.
Table of Contents
- State of the Art
- How it Works
- Requirements
- Installation
- Features
- Configuration
- Usage
- Contributing
- License
State of the Art
Composer is the most widely used package manager for PHP projects. However, while it allows you to update your project's dependencies, it doesn't offer a way to upgrade the project itself. This script is designed to address that limitation by providing a method to upgrade your project's root to a specific version, the latest version, or the highest minor version available.
How it Works
The script connects to the API of a configured provider to fetch the latest release information for a specified repository. It then downloads the release's artifact files and extracts them into the project directory. Additionally, the script allows users to exclude certain resources from the upgrade process, giving them more control and helping to prevent conflicts with existing files.
Requirements
- PHP 7.4 or higher
- Composer
- Zip extension
- Json extension
- Curl extension
Installation
To install the project, use Composer:
composer require cubadevops/upgrader
Features
- Show available update versions
- Upgrade safely to the highest minor version
- Upgrade to the latest version
- Upgrade to a specific version
Configuration
The script requires a configuration file to be present in the root of your project. The configuration file should be
named upgrader.json
or upgrader.json.dist
and should contain the following:
{ "repository_provider": "github", "repository_identifier": "owner/repository", "project_dir": "/var/www/html", "has_root_directory": true, "excluded_resources": [ "tests", ".github" ] }
repository_provider: The repository provider to use. Currently, only github
is supported but more providers will be
added soon.
repository_identifier: The owner and repository name separated by a slash.
project_dir: The directory where the project is located. Usually this is the directory where the composer.json
file
is located.
has_root_directory: true
if the artifact files are compressed into a root directory that acts as a container for all
files, false
otherwise.
excluded_resources: An array of resources to exclude from the upgrade process. This can be directories or files.
Usage
Run the script from the command line. Below are the available commands:
Help
vendor/bin/upgrader --help|-h
Show Available Versions
vendor/bin/upgrader show-candidates
Upgrade to a Specific Version
vendor/bin/upgrader upgrade <version>
Upgrade to the Latest Version
vendor/bin/upgrader upgrade-to-latest
Upgrade Safely to the Highest Minor Version
vendor/bin/upgrader upgrade-safely
Contributing
Contributions are always welcome! Please open an issue or a pull request.
License
This project is licensed under the MIT License - see the LICENSE file for details.