Deploys a git Repo to the WordPress SVN repo
This plugin requires Grunt >=0.4.1
and node >=6.0.0
If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
npm install grunt-wp-deploy --save-dev
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt.loadNpmTasks('grunt-wp-deploy');
This task is for deploying a plug-in to the WordPress repository from a 'build directory'.
- To have been accepted on to the WordPress repository
- plugin-slug - You can get this from your plug-in's repo url: https://wordpress.org/plugins/{plugin-slug}
- readme.txt (or
readme.md
) - See https://wordpress.org/plugins/about/#readme - plugin-slug.php - The 'main file' of the plug-in (containing the plugin header).
- build directory - This a complete copy of the plug-in as you want it on the directory
- (Optional) assets directory - This directory should contain the plug-in's screenshots and other files you want in the 'assets' directory in the root of the plug-ins WordPress SVN repo. See https://wordpress.org/plugins/about/faq/ for details.
In your project's Gruntfile, add a section named wp_deploy
to the data object passed into grunt.initConfig()
.
grunt.initConfig({
wp_deploy: {
deploy: {
options: {
plugin_slug: 'your-plugin-slug',
svn_user: 'your-wp-repo-username',
build_dir: 'build', //relative path to your build directory
assets_dir: 'wp-assets' //relative path to your assets directory (optional).
},
}
},
})
Type: String
Default value: false
Your plug-in's slug as indicated by its repository url https://wordpress.org/plugins/{plugin-slug}
Type: String
Default value: false
Use this option if the name of your plug-in's main file (the PHP file with WordPress plugin headers) differs from the slug name. Pass the full file name with extension, e.g.: my-plugin.php
Type: String
Default value: false
Your WordPress repository username. If not provided, you'll be prompted for this when the task runs.
Type: String
Default value: false
The directory where the plug-in exists as you want it on the repo.
Type: String
Default value: false
The directory where the plug-in's assets (i.e. screenshots) exist. This gets copied into the 'assets' directory in the root of your WordPress SVN repo. Typically this directory contains your plug-in's screenshots, which you want uploaded to the WordPress repo, but do not necessary want included in the plug-in distrubted to users. For more details see: https://wordpress.org/plugins/about/faq/.
Type: String
Default value: https://plugins.svn.wordpress.org/{plugin-slug}/
For flexibilty this plug-in can work with other repos. Simple provide the SVN url, using {plugin-slug}
as placeholder indicating where the plug-in slug should be.
Type: Integer
Default value: 200*1024
Sets the maximum buffer for the SVN checkout of the repo.
Type: String
Default value: /tmp/
Location where your SVN repository is checked out to. Note: Before the the repository is checked out <tmp_dir>/<plugin_slug>
is deleted.
Type: Bool
Default value: false
If false
, you will be asked for confirmation before commiting the plug-in to the repository. This will give you the opportunity to inspect the trunk
in the options.tmp_dir
to see what is being committed.
Type: Bool
Default value: true
Whether to deploy to trunk. This could be set to false
to only commit the assets directory.
Type: Bool
Default value: true
Whether to deploy to a tag. You will need to have set to options.deploy_trunk
to true
. This can set to false
to only deploy to trunk (e.g. when only updating the 'Tested up to' value and not deploying a release).
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.
- Add package-lock
- Update diff dependencie
- Publish through GitHub actions
- Update dependencies, resolve security warnings
- No longer checkouts out tags, which reduces check-out time. Thanks to @johnbillion
- Updated inquirer and other dependencies due to potential security vulnerabilities. Thanks to @dbtlr. Fixes #40
- Fixed regular expression for parsing stable tag. Thanks to @ocean90. Fixes #34
- Skips version check if no stable tag is provided - thanks to @markjaquith
- Defaults SVN url to HTTPs - thanks to @fjarrett
- Fixed error message when plugin and readme version do not match
- Fixed README.md (updated links to HTTPS, corrected example) thanks to @ntwb
- Don't check the README version if
deploy_tag
is set tofalse
- thanks to @mundschenk-at
- Added option to disable the commit confirmation
- Added options to disable committing to trunk and/or tag
- Added support for
readme.md
(as an alternative toreadme.txt
). - Added support for variations on readme file casing (readme, README, ReadMe)
- Add --force-interactive to request password if it is not know. Fixes #15
- Set seperate message for trunk/tag/asset commits. Make logs more verbose. Ref #10
- Add option (
tmp_dir
) for specifying the temporary directory to checkout the SVN repository to
- Fixed bug with undefined max_buffer option. Thanks to @tamarazuk.
- Fixes bug where files in sub directory are missed
- Fixes bug where assets/build directory are not given a trailing slash
- Adds max_buffer option for SVN checkout
- Run assets after commiting to trunk/tag has complete. Fixes SVN E155037 error.
- Rewrote task to use
grunt.file.copy
(skirts around issues on Windows) - Fixed bugs (related to SVN) with commiting the assets directory
- Added support for
assets_dir
- Add more verbose error messages.
- Use
cp -a
instead ofcp -ar
(fixes #1,#2)
- Improved regex for version detection in
{plugin-slug}.php
- Improved regex for version detection in
readme.txt
/{plugin-slug}.php
- Abort (fail with warning) if versions do not match
- Linted plug-in
- Corrected abort message
- Fixed readme
Initial release