sparkison / cmsmove
CMSMove - automated CMS deployment.
Installs: 98
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 2
Forks: 1
Open Issues: 3
pkg:composer/sparkison/cmsmove
Requires
- php: >=5.6.0
- guzzlehttp/guzzle: ~4.0|~5.0|~6.0
- phpseclib/phpseclib: ^2.0
- symfony/console: ~2.3|~3.0
- symfony/process: ~2.3|~3.0
- dev-master
- 1.0.63
- 1.0.62
- 1.0.61
- 1.0.60
- 1.0.59
- 1.0.58
- 1.0.57
- 1.0.53
- 1.0.48
- 1.0.47
- 1.0.46
- 1.0.45
- 1.0.44
- 1.0.43
- 1.0.42
- 1.0.41
- 1.0.40
- 1.0.39
- 1.0.38
- 1.0.37
- 1.0.36
- 1.0.35
- 1.0.34
- 1.0.33
- 1.0.32
- 1.0.31
- 1.0.30
- 1.0.29
- 1.0.28
- 1.0.26
- 1.0.25
- 1.0.24
- 1.0.23
- 1.0.21
- 1.0.20
- 1.0.19
- 1.0.18
- 1.0.17
- 1.0.16
- 1.0.15
- 1.0.14
- 1.0.13
- 1.0.12
- 1.0.11
- 1.0.10
- 1.0.9
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- dev-dependabot/composer/guzzlehttp/guzzle-6.5.8
- dev-dependabot/composer/guzzlehttp/psr7-1.8.5
- dev-dependabot/composer/phpseclib/phpseclib-2.0.31
This package is auto-updated.
Last update: 2025-01-21 23:06:02 UTC
README
Automated deployment for popular content management systems
Currently supported systems:
- Craft CMS - versions 2 and 3.
- ExpressionEngine (2 and 3)
- Laravel 5.x - tested up to 5.8, currently still utilizes the
laravel53config command however. - WordPress
We've been using extensively for the frameworks mentioned above. If you run into any issues please let us know so that we can get them fixed.
Requirements
Installation instructions
-
Ensure that the
~/.composer/vendor/binis available in your terminal PATH.sudo nano ~/.bash_profile- Make sure you have a line similar to the following:
export PATH="~/.composer/vendor/bin:$PATH"
-
Require
cmsmoveglobally by using this command:composer global require sparkison/cmsmove -
Change to a project directory, such as
~/Sites/mysite.dev, and runcmsmove config <framework>where<framework>is one of the configured CMS for cmsmove*
*See Usage below for more information
Usage
Getting started
After installing either the phar file or using the global composer install, ensure you can issue the cmsmove from the command line.
To use cmsmove you must first add a config file and an ignore file. To bootstrap these items, cd into your projects root working directory and issue:
cmsmove config <framework>where<framework>is one of the supported CMS systems- Currently support options for
<framework>arecraft,laravel53,wordpress,ee2andee3
- Currently support options for
This will generate the required moveConfig.json and rsync.ignore files. The moveConfig.json file will contain all the needed variables for pushing and pulling. The rsync.ignore file will contain a list of files/folders to ignore. Add items to this list as needed.
Configure moveConfig.json
This is a JSON file use to get the needed variables for accessing the local installation and database as well the configured remote hosts
Example config file:
{
"type": "craft",
"mappings": {
"app": "craft",
"www": "public",
"config": "config",
"plugins": "plugins",
"templates": "templates",
"custom": {
"uploads": {
"type": "public",
"directory": "uploads"
},
"assets": {
"type": "public",
"directory": "dist"
}
}
},
"environments": {
"local": {
"root": "/Users/MY_USER_NAME/Sites/mysite.dev",
"db": "local_db_dev",
"dbHost": "localhost",
"dbUser": "root",
"dbPass": "root",
"dbPort": "3306"
},
"staging": {
"host": "REMOTE HOST OR IP",
"root" : "/home/user",
"public": "public_html",
"user": "SSH USER NAME",
"password": "SSH PASSWORD",
"keyfile": "SSH KEY FILE (takes precedence over the password field)",
"port": "22",
"db": "REMOTE DATABASE NAME",
"dbHost": "localhost",
"dbUser": "REMOTE DATABASE USER",
"dbPass": "REMOTE DATABASE PASSWORD",
"dbPort": "3306"
},
"production": {
"host": "",
"root" : "/home/mysite",
"public": "public_html",
"user": "",
"password": "",
"keyfile": "",
"port": "22",
"db": "",
"dbHost": "localhost",
"dbUser": "",
"dbPass": "",
"dbPort": "3306"
}
}
}
Configuration notes:
Required: The following fields are required:
typetells cmsmove what framework is being used.mappingscontains information for the local setup; this section is typically framework specificappthe application main folderwwwthe public folder- The rest of the items in this list are framework specific
environmentsthe various environments (e.g. local, staging, production)localthis is the only required environment for accessing the local database, all other environments are optional, and can be named whatever you like
App not above root: If the app and public folder are one in the same simply set mappings.www as an empty string, and set mappings.app as the public folder.
Additionally, set the environments.<your_environment>.root to your remote host public folder and leave environments.<your_environment>.public as an empty string.
Adding custom directories for syncing:
Within the mappings.custom array of the config file add a key => array mapping for your custom directory.
The custom directory must contain two key/value pairs: type and directory.
Issuing cmsmove push staging custom will present you with a prompt of your configured custom directories to choose from
E.g.
... "custom": { "uploads": { "type": "public", "directory": "uploads" }, "assets": { "type": "public", "directory": "dist" } } ...
Using the example above, issuing cmsmove push staging custom will give a prompt similar to the following:
[0] uploads
[1] assets
>
Entering 0 at the prompt would push the "uploads" directory from the local to the remote configured public directory. While entering 1 would push the assets directory. Additionally, you can specify a specific file as apposed to a directory using the following syntax:
... "custom": { ... "env": { "type": "root", "file": "y", "directory": ".env" } ... } ...
Note that the file parameter just needs to be a "truthy" variable. For example "yes", "y" and "true" are all valid.
Updating
Simply issue the following command: composer global update sparkison/cmsmove
To view the currently installed version issue: cmsmove --version
Contributing
Pull requests, contributions, issues and feature requests are always welcome... Although I would prefer a pull request for new features... ;)