Introducing version 1.9 of vv! In the WordPress world, quite a few developers use Varying Vagrant Vagrants for their local development environments. Just under a year ago, I started building Variable VVV, a tool to help people leverage VVV and make it easier to use.
A quick history
In case you’re not familiar with Variable VVV (vv), it is mostly used to automate the set up of custom local sites on top of VVV. vv also does quite a bit more. When I started, I built it as the spiritual successor to Alison Barrett’s vvv-site-wizard, which was the go to solution for this. There were a few bugs in this I wanted to fix, as well as some features.
Since this initial release, I’ve added countless features, fixes, and functionality. And as such, vv has become the standard site creation wizard for almost everyone using VVV. Since the first release in December of 2014, there have been a lot of really changes and fixes put into the project. I’m really excited for how far it has come.
Some of the major updates that have been released so far:
- 1.0 – Initial stable release
- 1.1 – Added deployments
- 1.2 – Added automatic updates
- 1.3 – Initial stable release.
- 1.4 – Added basic Blueprints for defining a site’s plugins, themes, options
- 1.5 – Lots of cleanup and bug fixes, no big features.
- 1.6 – Added the ability to import a custom database, allowed creating non-WordPress sites, added more flags and options
- 1.7 – Start of making everything extensible. Added the ability to customize the structure of VVV, and the ability to remove default themes / plugins.
- 1.8 – More flags and options, including the ability to change your database prefix, install with Bedrock, better Windows Support, and more debugging information.
Throughout these versions, there have been minor releases of bug fixes. Also, there have now been a total of a dozen different contributors to the project!
I’m excited to announce one of the most feature-filled releases yet, version 1.9! This update is super awesome.
Hooks System
The biggest featured that 1.9 adds is a ‘hooks’ system, very similar to the system present inside of WordPress. Right now, you can hook into almost every single action that happens in vv and run your own code, written in any language that can be executed on the command line. This includes Bash, PHP, Python, Node, Ruby, and more.
See the Readme on Github for some quick examples of what is possible, and watch this blog for some posts in the future about other projects you can do with this system.
For the advanced users out there, you can now even source vv in your scripts and completely replace all of the functionality with your own code and extend it however you’d like.
Completions
vv 1.9 also adds tab-completions, which makes it so all of the flags, options, and settings are now easier to use and remember. Adding this is as simple as adding source $( echo $(which vv)-completions) to the end of your .bash_profile, .bashrc or .zshrc.
Site Creation
There are a few options I’ve added to site creation. You can now install WordPress trunk for a site and vvv will automatically pull the latest version of the in-development copy of WordPress every time you do a `vagrant provision`. This is great for any development you do that you want to test against the upcoming versions of WordPress.
You can also now install WordPress in other languages by simply passing in the --locale or --language flag followed by a language code.
General Fixes
vv now has automated testing, to make sure future releases don’t break your system. This is currently very basic, but every line of code in vv has been checked for security and sanity, so important files or folders will never be removed form your system.
vv also does not require Python to be installed on your system anymore, which until this version, was a requirement. The only requirement now is having Vagrant and VVV installed.
Debugging
In 1.9, two new debugging tools have been added to facilitate bug reporting. A --debug-vv flag allows for viewing information about your system and the command line utilities that vv leverages. There is also a vv_internal_debug option that shows the exact line of code that vv is executing while it runs.
How to Update
Updating vv is quite simple. Simply run vv on the command line, and you should automatically update. If for some reason this fails, which seems to happen with Brew sometimes, you can also run vv --force-update to attempt a more aggressive update process. If that does not work you can safely uninstall vv and re-install it via Homebrew, you can do this with these commands: brew remove vv
then brew untap bradp/vv
and finally, run the install command brew install bradp/vv/vv
.
Whatever update path you use, you will not lose any settings or sites.
Looking to the Future
With the release of this version, I’ve started planning version 2.0. You can follow the development of that here. If you have any ideas for features, feel free to post in that Github Issue.
Currently, I’m planning a few things for the near future. Some of the biggest things I’m excited about are:
- Shortcutting the re-provisioning process, so that new sites will only take a fraction of the time to spin up.
- Adding the ability to save defaults for all questions asked in the wizard, as well as any options or flags.
- Fully supporting WPEngine’s HGV.
- Making the tab-completion system better.
- Adding multi-site domains without editing files.
There are a handful of other things I’m working on improving or taking a second look at, including the questions in the wizard, blueprints, and re-organizing the documentation available.
Another fun project!
One of the worst parts about VVV is the time it takes to provision a new site. If you’re using VVV, make sure you check out my new project: VVV Provision Flipper. With VVV Provision Flipper, you can easily set up multiple named Varying Vagrant Vagrants provisioning scripts and toggle between them. I was able to get my provision time down to only twenty seconds! It’s super fast and everything works exactly the same.
Clarification
Right now, as of October 6th, 2015 – the stable, released version of vv is 1.9.3. There were some issues with the 1.9.0 release, so three point updates were pushed out.