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 +1 -0
- data/README +7 -0
- data/Rakefile +100 -0
- data/freerange-cli.gemspec +39 -0
- data/lib/freerange.rb +31 -8
- data/zsh/_freerange +32 -0
- metadata +11 -5
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
|
-
|
26
|
-
|
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
|
-
|
35
|
-
|
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
|
-
-
|
9
|
-
version: 0.0.
|
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-
|
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@
|
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:
|
77
|
+
summary: Simple commands to help with Freerange
|
72
78
|
test_files: []
|
73
79
|
|