# appbundle-updater Helper to update Chef and Chef-DK appbundle'd apps inside of an omnibus bundle. ## Requirements * A ChefDK or Chef Client installation in the standard location. * You need to have the `git` command in your PATH. ## Usage Examples Install as a gem: ``` gem install appbundle-updater ``` Updating chef in the /opt/chefdk bundle to master: ``` sudo appbundle-updater chefdk chef master ``` Updating chef-dk in the /opt/chefdk bundle to master (sorry about the inconsistent dashes here but the project/gem is called "chef-dk" while the path on the filesystem is /opt/chefdk, the path on the filesystem comes first): ``` sudo appbundle-updater chefdk chef-dk master ``` Updating various other softwares in /opt/chefdk bundle to master: ``` sudo appbundle-updater chefdk berkshelf master sudo appbundle-updater chefdk chef-vault master sudo appbundle-updater chefdk cookstyle master sudo appbundle-updater chefdk ohai master sudo appbundle-updater chefdk foodcritic master sudo appbundle-updater chefdk test-kitchen master ``` Updating chef and ohai in the /opt/chef bundle to master: ``` sudo appbundle-updater chef chef master sudo appbundle-updater chef ohai master ``` Windows users from PowerShell use the bat file: ```powershell & appbundle-updater chefdk test-kitchen master ``` If you don't want "master" you can use any other git tag/branch/sha/etc that git understands. ## Using a GitHub Fork By default this gem clones from the official repos from the software. To override and point at at fork use the `--github`` option on the command-line: ```ruby sudo appbundle-updater chef chef lcg/cool-feature --github lamont-granquist/chef ``` ## Using a GitHub tarball instead of a git clone Using the `--tarball` method will not use `git clone` and will not require the git binary being installed on the system. By using this command the whole functionality should run in pure ruby, be portable across all operating systems that omnibus-chef is ported to, and should only use ruby stdlib functions. The disadvantage is that you do now wind up with a real git checkout in the apps directory, just an extracted snapshot. ```ruby sudo appbundle-updater chef chef master --tarball ``` ## Execution and Target rubies This does not need to be installed into the embedded ruby that you are doing the update on. You can install this into an rvm gemset as a local user (for example) and run: ``` rvmsudo appbundle-updater chef chef master ``` It will invoke appbundle-updater via rvm (using your user ruby+gemset under sudo), but will correctly break the bundle and setup the PATH in order to manipulate your /opt/chefdk or /opt/chef ruby environment. Only tested with RVM, but chruby and rbenv are usually simpler and easier. ## Development * Source hosted at [GitHub][repo] * Report issues/questions/feature requests on [GitHub Issues][issues] Pull requests are very welcome! Make sure your patches are well tested. Ideally create a topic branch for every separate change you make. For example: 1. Fork the repo 2. Create your feature branch (`git checkout -b my-new-feature`) 3. Commit your changes (`git commit -am 'Added some feature'`) 4. Push to the branch (`git push origin my-new-feature`) 5. Create new Pull Request ## Authors Created and maintained by [Fletcher Nichol][fnichol] () ## License Apache 2.0 (see [LICENSE][license]) [license]: https://github.com/chef/appbundle-updater/blob/master/LICENSE [fnichol]: https://github.com/fnichol [repo]: https://github.com/chef/appbundle-updater [issues]: https://github.com/chef/appbundle-updater/issues