PHPCP is a PHP Symfony application to list and interact with CPanel Git repositories through the API.
Allows you to list available repositories in the CPanel account A website hosted in a CPanel server using the Git Version Control, this allows you to perform the manual operations for 'Pull or Deploy' in the CPanel Git repositories interface.
- List existing repositories information
- Pull a git repository
- Push a git repository
- View or Download a file
$ composer require phpcp/phpcp
When the package is installed, the bin phpcp
is added to the composer's
vendor/bin
directory, you can run the application with php vendor/bin/phpcp
.
$ php vendor/bin/phpcp
PHP CPanel cli 0.0.1
Usage:
command [options] [arguments]
Options:
...
-h, --help Display help for the given command. When no command is given display help for the list command
-n, --no-interaction Do not ask any interactive question
Available commands:
...
config Print configurations
file
file:download [fetch] Download a CPanel file
repo
repo:deploy [deploy] Deploy a CPanel repository
repo:list [repos] List CPanel repositories
repo:pull [pull] Pull a CPanel repository
The configurations are loaded using Yaml files and default values are gathered from environment variables.
You can see the current configuration by running the command config
.
$ php vendor/bin/phpcp config
phpcp:
github:
token: '${env.PHPCP_GITHUB_TOKEN}'
user: '${env.PHPCP_GITHUB_USER}'
repo: '${env.PHPCP_GITHUB_REPO}'
cpanel:
token: '${env.PHPCP_CPANEL_TOKEN}'
url: '${env.PHPCP_CPANEL_URL}'
The provided configurations are looking for environment variables. See below the used variables.
- PHPCP_CPANEL_TOKEN - The CPanel username:password in base64 format
- PHPCP_CPANEL_URL - The CPanel base url (i.e: https://cpanelXXX.dnscpanel.com:XXXX/cpsessXXXXXXXXXX)
- PHPCP_GITHUB_TOKEN - The GitHub API token (required when using option
--git
in commandrepo:list
) - PHPCP_GITHUB_USER - The GitHub username (i.e: joaocsilva) (required when
using option
--git
in commandrepo:list
) - PHPCP_GITHUB_REPO - The GitHub repository (i.e: phpcp) (required when
using option
--git
in commandrepo:list
)
PHPCP will search and load the following configuration files phpcp.yml.dist
and phpcp.yml
.
An example of configuration file to interact with CPanel only using static values.
phpcp:
cpanel:
token: 'aBCF'
url: 'https://cpanelXXX.dnscpanel.com:XXXX/cpsessXXXXXXXXXX'
When using a command option, the value defined in the configuration file is overridden.
CPanel related options
Used in commands: repos, pull, deploy
--cp-token
- The CPanel auth token--cp-base-url
- The CPanel base url
GitHub related options
Use when option --git
is used in commands: repos
--github-token
- The GitHub API access token--github-user
- The GitHub username--github-repo
- The GitHub repository
View all loaded configurations.
$ php vendor/bin/phpcp config
View a specific configuration.
$ php vendor/bin/phpcp config phpcp.cpanel.url
View command information, options, arguments and usages.
$ php vendor/bin/phpcp help repo:list
Description:
List CPanel repositories
Usage:
repo:list [options]
repos
repo:list --git
repo:list --cp-token="aBcdef" --cp-base-url="https://cpanelXXX.dnscpanel.com:XXXX/cpsessXXXXXXXXXX"
Options:
--git Check for branch HEAD commit hash in GitHub.
--github-token=GITHUB-TOKEN The GitHub API access token
--github-user=GITHUB-USER The GitHub username, i.e: joaocsilva
--github-repo=GITHUB-REPO The GitHub repository, i.e: phpcp
--cp-token=CP-TOKEN The CPanel auth token, usually a base64 encode
--cp-base-url=CP-BASE-URL The CPanel base url, i.e: https://cpanelXXX.dnscpanel.com:XXXX/cpsessXXXXXXXXXX
View a specific configuration.
$ php vendor/bin/phpcp config phpcp.cpanel.url
List the available repositories that the current user has access to.
It is the same list present in the CPanel interface for Git™ Version Control
tool.
$ php vendor/bin/phpcp repo:list
Perform the action to pull a repository in the CPanel interface
Git™ Version Control
>Pull or Deploy
, button Update from Remote
.
This will pull the changes from the remote.
The command has a required parameter for the branch name to identify the repo.
$ php vendor/bin/phpcp repo:pull master
Perform the action to deploy a repository in the CPanel interface
Git™ Version Control
>Pull or Deploy
, button Deploy HEAD Commit
.
This will trigger the CPanel deployment and execute the .cpanel
file.
The command has a required argument for the branch name to identify the repo.
$ php vendor/bin/phpcp repo:deploy master
Output a file content or to a file with option --output
.
The command has a required arguments dir and file to specify the directory where the file is and the filename.
Print the composer.json content.
$ php vendor/bin/phpcp file:download /home/user composer.json
Download the composer.json file to a file named remote-composer.json.
$ php vendor/bin/phpcp file:download /home/user composer.json --output=remote-composer.json
You can use docker to run the project locally.
The docker-compose.yml file contains the environment variables needs for the commands.
PHPCP_GITHUB_TOKEN:
PHPCP_CPANEL_TOKEN:
PHPCP_CPANEL_URL:
You can map these variables to your own env variables with.
PHPCP_GITHUB_TOKEN: ${GITHUB_TOKEN}
PHPCP_CPANEL_TOKEN: ${CPANEL_TOKEN}
PHPCP_CPANEL_URL: ${CPANEL_URL}
Usage.
# Start containers.
$ docker compose up -d
# Install composer dependencies..
$ docker compose exec web composer install
# Check if the phpcp is running.
$ docker compose exec web php phpcp
# List CPanel repositories.
$ docker compose exec web php phpcp repo:list