freerange-cli 0.0.6 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ /pkg
data/README ADDED
@@ -0,0 +1,7 @@
1
+ A very simple command line tool to make our development easier. Currently with the following commands:
2
+
3
+ freerange pair NAME - Starts pairing with the given member on the given project
4
+ freerange unpair - Stop pairing
5
+ freerange members - List all members
6
+
7
+ There is also a zsh completion script under the zsh folder
data/Rakefile ADDED
@@ -0,0 +1,100 @@
1
+ require "rubygems"
2
+ require "rake/gempackagetask"
3
+ require "rake/rdoctask"
4
+
5
+
6
+
7
+ task :default => :package do
8
+ puts "Don't forget to write some tests!"
9
+ end
10
+
11
+ # This builds the actual gem. For details of what all these options
12
+ # mean, and other ones you can add, check the documentation here:
13
+ #
14
+ # http://rubygems.org/read/chapter/20
15
+ #
16
+ spec = Gem::Specification.new do |s|
17
+
18
+ # Change these as appropriate
19
+ s.name = "freerange-cli"
20
+ s.version = "0.0.9"
21
+ s.summary = "Simple commands to help with Freerange"
22
+ s.author = "Tom Ward"
23
+ s.email = "tom.ward@gofreerange.com"
24
+ s.homepage = "http://gofreerange.com"
25
+
26
+ s.has_rdoc = true
27
+ # You should probably have a README of some kind. Change the filename
28
+ # as appropriate
29
+ # s.extra_rdoc_files = %w(README)
30
+ # s.rdoc_options = %w(--main README)
31
+
32
+ # Add any extra files to include in the gem (like your README)
33
+ s.files = `git ls-files`.split("\n").sort
34
+ s.require_paths = ["lib"]
35
+
36
+ s.executables = FileList["bin/**"].map { |f| File.basename(f) }
37
+
38
+ # If you want to depend on other gems, add them here, along with any
39
+ # relevant versions
40
+ s.add_dependency("thor")
41
+
42
+ # If your tests use any gems, include them here
43
+ # s.add_development_dependency("mocha") # for example
44
+ end
45
+
46
+ # This task actually builds the gem. We also regenerate a static
47
+ # .gemspec file, which is useful if something (i.e. GitHub) will
48
+ # be automatically building a gem for this project. If you're not
49
+ # using GitHub, edit as appropriate.
50
+ #
51
+ # To publish your gem online, install the 'gemcutter' gem; Read more
52
+ # about that here: http://gemcutter.org/pages/gem_docs
53
+ Rake::GemPackageTask.new(spec) do |pkg|
54
+ pkg.gem_spec = spec
55
+ end
56
+
57
+ # Stolen from jeweler
58
+ def prettyify_array(gemspec_ruby, array_name)
59
+ gemspec_ruby.gsub(/s\.#{array_name.to_s} = \[.+?\]/) do |match|
60
+ leadin, files = match[0..-2].split("[")
61
+ leadin + "[\n #{files.split(",").join(",\n ")}\n ]"
62
+ end
63
+ end
64
+
65
+ task :gemspec do
66
+ output = spec.to_ruby
67
+ output = prettyify_array(output, :files)
68
+ output = prettyify_array(output, :test_files)
69
+ output = prettyify_array(output, :extra_rdoc_files)
70
+
71
+ file = File.expand_path("../#{spec.name}.gemspec", __FILE__)
72
+ File.open(file, "w") {|f| f << output }
73
+ end
74
+
75
+ task :package => :gemspec
76
+
77
+ # Generate documentation
78
+ Rake::RDocTask.new do |rd|
79
+ rd.rdoc_files.include("lib/**/*.rb")
80
+ rd.rdoc_dir = "rdoc"
81
+ end
82
+
83
+ desc 'Clear out RDoc and generated packages'
84
+ task :clean => [:clobber_rdoc, :clobber_package] do
85
+ rm "#{spec.name}.gemspec"
86
+ end
87
+
88
+ task :release => [:gemspec, :package] do
89
+ if `git diff --cached`.empty?
90
+ if `git tag`.split("\n").include?("v#{spec.version}")
91
+ raise "Version #{spec.version} has already been released"
92
+ end
93
+ `git add #{File.expand_path("../#{spec.name}.gemspec", __FILE__)}`
94
+ `git commit -m "Released version #{spec.version}"`
95
+ `git tag v#{spec.version}`
96
+ `gem push pkg/#{spec.name}-#{spec.version}.gem`
97
+ else
98
+ raise "Unstaged changes still waiting to be committed"
99
+ end
100
+ end
@@ -0,0 +1,39 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{freerange-cli}
5
+ s.version = "0.0.9"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Tom Ward"]
9
+ s.date = %q{2010-05-23}
10
+ s.default_executable = %q{freerange}
11
+ s.email = %q{tom.ward@gofreerange.com}
12
+ s.executables = ["freerange"]
13
+ s.files = [
14
+ ".gitignore",
15
+ "README",
16
+ "Rakefile",
17
+ "bin/freerange",
18
+ "freerange-cli.gemspec",
19
+ "lib/freerange.rb",
20
+ "zsh/_freerange"
21
+ ]
22
+ s.homepage = %q{http://gofreerange.com}
23
+ s.require_paths = ["lib"]
24
+ s.rubygems_version = %q{1.3.6}
25
+ s.summary = %q{Simple commands to help with Freerange}
26
+
27
+ if s.respond_to? :specification_version then
28
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
29
+ s.specification_version = 3
30
+
31
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
32
+ s.add_runtime_dependency(%q<thor>, [">= 0"])
33
+ else
34
+ s.add_dependency(%q<thor>, [">= 0"])
35
+ end
36
+ else
37
+ s.add_dependency(%q<thor>, [">= 0"])
38
+ end
39
+ end
data/lib/freerange.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  require 'rubygems'
2
2
  require 'thor'
3
3
 
4
-
5
4
  module FreeRange
6
5
  MEMBERS = {
7
6
  'james.adam' => 'James Adam',
@@ -14,6 +13,22 @@ module FreeRange
14
13
  }
15
14
 
16
15
  class CLI < Thor
16
+ class Pair
17
+ def initialize(pair)
18
+ @pair = pair
19
+ owner_name = `git config --global --get user.name`.strip
20
+ @owner = MEMBERS.keys.detect {|x| MEMBERS[x] == owner_name }
21
+ end
22
+
23
+ def name
24
+ [MEMBERS[@pair], MEMBERS[@owner]].sort.join(" & ")
25
+ end
26
+
27
+ def email
28
+ [@owner, @pair].sort.join('+') + "+pairing@gofreerange.com"
29
+ end
30
+ end
31
+
17
32
  desc 'members', 'Lists freerange members'
18
33
  def members
19
34
  MEMBERS.keys.sort.each {|name| puts name }
@@ -22,17 +37,25 @@ module FreeRange
22
37
  desc 'pair NAME', 'Changes who you are pairing with'
23
38
  method_options :show => :boolean
24
39
  def pair(author)
25
- owner_name = `git config --global --get user.name`.strip
26
- owner = MEMBERS.keys.detect {|x| MEMBERS[x] == owner_name }
27
- pair = [MEMBERS[owner], MEMBERS[author]].sort
28
- `git config user.name '#{pair.join(" & ")}'`
29
- `git config user.email '#{[owner,author].sort.join('+')}+pairing@gofreerange.com'`
40
+ p = Pair.new(author)
41
+ set 'user.name' => p.name, 'user.email' => p.email
30
42
  end
31
43
 
32
44
  desc 'unpair', 'Stop pairing'
33
45
  def unpair
34
- `git config --unset user.name`
35
- `git config --unset user.email`
46
+ unset 'user.name', 'user.email'
47
+ end
48
+
49
+ private
50
+
51
+ def set(options = {})
52
+ options.each do |key, value|
53
+ `git config #{key} '#{value}'`
54
+ end
55
+ end
56
+
57
+ def unset(*options)
58
+ options.each {|o| `git config --unset #{o}`}
36
59
  end
37
60
  end
38
61
  end
data/zsh/_freerange ADDED
@@ -0,0 +1,32 @@
1
+ #compdef freerange
2
+
3
+ local curcontext="$curcontext" state line ret=1
4
+
5
+ _arguments -C \
6
+ '(- 1 *)'{-h,--help}'[display help information]' \
7
+ '(- 1)--version[display version information]' \
8
+ '1: :->cmds' \
9
+ '*: :->args' && ret=0
10
+
11
+ case $state in
12
+ cmds)
13
+ if (( ! $+_freerange_cmds )) ; then
14
+ typeset -gH _freerange_cmds
15
+ _freerange_cmds=( $(freerange help | grep '^ [a-z]' | cut -d " " -f 4) )
16
+ fi
17
+ compadd $_freerange_cmds && ret=0
18
+ ;;
19
+ args)
20
+ case $line[1] in
21
+ (pair)
22
+ if (( ! $+_freerange_members )) ; then
23
+ typeset -gH _freerange_members
24
+ _freerange_members=( $(freerange members | grep '^[A-Za-z]' | cut -d " " -f 1) )
25
+ fi
26
+ compadd $_freerange_members && ret=0
27
+ ;;
28
+ esac
29
+ ;;
30
+ esac
31
+
32
+ return ret
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 6
9
- version: 0.0.6
8
+ - 9
9
+ version: 0.0.9
10
10
  platform: ruby
11
11
  authors:
12
12
  - Tom Ward
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-05-21 00:00:00 +01:00
17
+ date: 2010-05-23 00:00:00 +01:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -30,7 +30,7 @@ dependencies:
30
30
  type: :runtime
31
31
  version_requirements: *id001
32
32
  description:
33
- email: tom@popdog.net
33
+ email: tom.ward@gofreerange.com
34
34
  executables:
35
35
  - freerange
36
36
  extensions: []
@@ -38,7 +38,13 @@ extensions: []
38
38
  extra_rdoc_files: []
39
39
 
40
40
  files:
41
+ - .gitignore
42
+ - README
43
+ - Rakefile
44
+ - bin/freerange
45
+ - freerange-cli.gemspec
41
46
  - lib/freerange.rb
47
+ - zsh/_freerange
42
48
  has_rdoc: true
43
49
  homepage: http://gofreerange.com
44
50
  licenses: []
@@ -68,6 +74,6 @@ rubyforge_project:
68
74
  rubygems_version: 1.3.6
69
75
  signing_key:
70
76
  specification_version: 3
71
- summary: What this thing does
77
+ summary: Simple commands to help with Freerange
72
78
  test_files: []
73
79