diff --git a/Gemfile b/Gemfile index c93af3b..e92684c 100644 --- a/Gemfile +++ b/Gemfile @@ -1,3 +1,4 @@ +require 'rbconfig' source 'https://rubygems.org' # Add dependencies required to use your gem here. @@ -16,6 +17,9 @@ group :development do gem "simplecov", :platforms => :mri_19 gem "test_construct" gem "capture-output", "~> 1.0.0" + if RbConfig::CONFIG['host_os'] =~ /linux|freebsd|openbsd|sunos|solaris/ + gem 'libnotify' + end if RUBY_VERSION >= '1.9.2' gem "rubocop" end diff --git a/README.markdown b/README.markdown index 48c8000..1069de3 100644 --- a/README.markdown +++ b/README.markdown @@ -1,6 +1,9 @@ # homesick +[![Gem Version](https://badge.fury.io/rb/homesick.png)](http://badge.fury.io/rb/homesick) [![Build Status](https://travis-ci.org/technicalpickles/homesick.png?branch=master)](https://travis-ci.org/technicalpickles/homesick) +[![Dependency Status](https://gemnasium.com/technicalpickles/homesick.png)](https://gemnasium.com/technicalpickles/homesick) +[![Code Climate](https://codeclimate.com/github/technicalpickles/homesick.png)](https://codeclimate.com/github/technicalpickles/homesick) Your home directory is your castle. Don't leave your dotfiles behind. @@ -31,11 +34,11 @@ You can remove symlinks anytime when you don't need them anymore homesick unlink pickled-vim -If you need to add further configuration steps you can add these in a file called '.homesickrc' in the root of a castle. Once you've cloned a castle with one of these files apply these steps with: +If you need to add further configuration steps you can add these in a file called '.homesickrc' in the root of a castle. Once you've cloned a castle with a .homesickrc run the configuration with: homesick rc CASTLE -The contents of the .homesickrc file must be valid Ruby code as the file will be executed with Ruby's eval construct. +The contents of the .homesickrc file must be valid Ruby code as the file will be executed with Ruby's eval construct. The .homesickrc is also passed the current homesick object during its execution and this is available within the .homesickrc file as the 'self' variable. If you're not sure what castles you have around, you can easily list them: diff --git a/Rakefile b/Rakefile index 996e98e..b55731d 100644 --- a/Rakefile +++ b/Rakefile @@ -1,5 +1,6 @@ require 'rubygems' require 'bundler' +require_relative 'lib/homesick/version' begin Bundler.setup(:default, :development) rescue Bundler::BundlerError => e @@ -23,7 +24,7 @@ Jeweler::Tasks.new do |gem| gem.email = ["josh@technicalpickles.com", "info@muratayusuke.com"] gem.homepage = "http://github.com/technicalpickles/homesick" gem.authors = ["Joshua Nichols", "Yusuke Murata"] - gem.version = "0.9.7" + gem.version = Homesick::Version::STRING gem.license = "MIT" # Have dependencies? Add them to Gemfile diff --git a/lib/homesick.rb b/lib/homesick.rb index eb19073..039de4a 100644 --- a/lib/homesick.rb +++ b/lib/homesick.rb @@ -4,9 +4,11 @@ require 'thor' class Homesick < Thor autoload :Shell, 'homesick/shell' autoload :Actions, 'homesick/actions' + autoload :Version, 'homesick/version' include Thor::Actions include Homesick::Actions + include Homesick::Version add_runtime_options! @@ -15,6 +17,9 @@ class Homesick < Thor DEFAULT_CASTLE_NAME = 'dotfiles' + map '-v' => :version + map '--version' => :version + def initialize(args = [], options = {}, config = {}) super self.shell = Homesick::Shell.new @@ -264,6 +269,11 @@ class Homesick < Thor end end + desc 'version', 'Display the current version of homesick' + def version + say Homesick::Version::STRING + end + protected def home_dir diff --git a/lib/homesick/version.rb b/lib/homesick/version.rb new file mode 100644 index 0000000..8e372a2 --- /dev/null +++ b/lib/homesick/version.rb @@ -0,0 +1,10 @@ +# -*- encoding : utf-8 -*- +class Homesick + module Version + MAJOR = 0 + MINOR = 9 + PATCH = 8 + + STRING = "#{MAJOR}.#{MINOR}.#{PATCH}" + end +end diff --git a/spec/homesick_spec.rb b/spec/homesick_spec.rb index 830f2ca..cd23742 100644 --- a/spec/homesick_spec.rb +++ b/spec/homesick_spec.rb @@ -565,4 +565,11 @@ describe 'homesick' do expect { homesick.open "castle_repo" }.to raise_error(SystemExit) end end + + describe 'version' do + it 'should print the current version of homesick' do + text = Capture.stdout { homesick.version } + text.chomp.should =~ /\d+\.\d+\.\d+/ + end + end end