auto-gemsets 0.2.0 → 0.2.1
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/HELP.md +4 -0
- data/VERSION +1 -1
- data/auto-gemsets.gemspec +4 -3
- data/lib/auto-gemsets/application.rb +83 -73
- data/lib/auto-gemsets/auto_gemsets.sh +19 -20
- data/spec/application_spec.rb +6 -9
- data/travis.yml +3 -0
- metadata +4 -3
data/HELP.md
CHANGED
@@ -20,6 +20,10 @@ Examples:
|
|
20
20
|
Commands:
|
21
21
|
========
|
22
22
|
|
23
|
+
init
|
24
|
+
----
|
25
|
+
This command will copy the auto_gemsets.sh script into the `/usr/local/share/auto_gemsets` folder. This is the small shell script that does the automatic switching for you. Once this file is in place, simply `source` it somewhere in your profile and auto-gemsets will be activated.
|
26
|
+
|
23
27
|
ls, list
|
24
28
|
--------
|
25
29
|
gemset ls
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.1
|
data/auto-gemsets.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "auto-gemsets"
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Dayton Nolan"]
|
12
|
-
s.date = "
|
12
|
+
s.date = "2013-01-01"
|
13
13
|
s.description = "auto-gemsets creates a gemset named after the parent directory of every Gemfile you encounter. This let's you automatically scope your gems without using shims or creating gemsets. "
|
14
14
|
s.email = "dnolan@gmail.com"
|
15
15
|
s.executables = ["gemset"]
|
@@ -33,7 +33,8 @@ Gem::Specification.new do |s|
|
|
33
33
|
"lib/auto-gemsets/auto_gemsets.sh",
|
34
34
|
"spec/application_spec.rb",
|
35
35
|
"spec/auto-gemsets_spec.rb",
|
36
|
-
"spec/spec_helper.rb"
|
36
|
+
"spec/spec_helper.rb",
|
37
|
+
"travis.yml"
|
37
38
|
]
|
38
39
|
s.homepage = "http://github.com/daytonn/auto-gemsets"
|
39
40
|
s.licenses = ["Apache 2.0"]
|
@@ -21,8 +21,7 @@ module AutoGemsets
|
|
21
21
|
@output = output
|
22
22
|
@input = input
|
23
23
|
@args = args
|
24
|
-
@command = @args.
|
25
|
-
|
24
|
+
@command = @args.empty? ? :current : @args.shift.to_sym unless @args.first =~ /^-/
|
26
25
|
parse_options
|
27
26
|
end
|
28
27
|
|
@@ -33,33 +32,11 @@ module AutoGemsets
|
|
33
32
|
end
|
34
33
|
|
35
34
|
def run
|
36
|
-
|
37
|
-
self.send @command, *@args
|
38
|
-
else
|
39
|
-
if options[:help]
|
40
|
-
help
|
41
|
-
elsif options[:version]
|
42
|
-
version
|
43
|
-
else
|
44
|
-
self.send(:current)
|
45
|
-
end
|
46
|
-
end
|
35
|
+
self.send @command, *@args
|
47
36
|
end
|
48
37
|
|
49
38
|
def ls
|
50
|
-
gemsets = Dir.glob(File.join(ENV['HOME'], '.gemsets', '*')).map
|
51
|
-
gemset = File.basename(d)
|
52
|
-
case gemset
|
53
|
-
when default_gemset
|
54
|
-
gemset = " #{gemset}*"
|
55
|
-
when ENV['GEMSET']
|
56
|
-
gemset = "-> #{gemset}"
|
57
|
-
else
|
58
|
-
gemset = " #{gemset}"
|
59
|
-
end
|
60
|
-
gemset
|
61
|
-
end
|
62
|
-
|
39
|
+
gemsets = Dir.glob(File.join(ENV['HOME'], '.gemsets', '*')).map { |d| display_gemset d }
|
63
40
|
@output.puts gemsets.join "\n"
|
64
41
|
end
|
65
42
|
|
@@ -78,23 +55,20 @@ module AutoGemsets
|
|
78
55
|
end
|
79
56
|
|
80
57
|
def mv(gemset, new_gemset)
|
81
|
-
if !File.exists?(gemset_path(new_gemset))
|
82
|
-
|
83
|
-
@output.puts "#{gemset} renamed to #{new_gemset}"
|
84
|
-
end
|
58
|
+
if !File.exists?(gemset_path(new_gemset)) && FileUtils.mv(gemset_path(gemset), gemset_path(new_gemset))
|
59
|
+
@output.puts "#{gemset} renamed to #{new_gemset}"
|
85
60
|
else
|
86
61
|
@output.puts "#{new_gemset} already exists!"
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
end
|
62
|
+
confirm("Do you really wish to replace #{new_gemset} with #{gemset}?", {
|
63
|
+
accept: -> {
|
64
|
+
if FileUtils.rm_rf(gemset_path(new_gemset)) && FileUtils.mv(gemset_path(gemset), gemset_path(new_gemset))
|
65
|
+
@output.puts "#{gemset} renamed to #{new_gemset}"
|
66
|
+
end
|
67
|
+
},
|
68
|
+
deny: -> {
|
69
|
+
@output.puts "No gemsets were harmed."
|
70
|
+
}
|
71
|
+
})
|
98
72
|
end
|
99
73
|
end
|
100
74
|
|
@@ -103,34 +77,37 @@ module AutoGemsets
|
|
103
77
|
end
|
104
78
|
|
105
79
|
def rm(gemset)
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
80
|
+
confirm("Are you sure you wish to delete the #{gemset} gemset?", {
|
81
|
+
accept: -> {
|
82
|
+
if File.exists?(gemset_path(gemset)) && FileUtils.rm_rf(gemset_path(gemset))
|
83
|
+
@output.puts "#{gemset} gemset removed!"
|
84
|
+
end
|
85
|
+
},
|
86
|
+
deny: -> {
|
87
|
+
@output.puts "No gemsets were harmed."
|
88
|
+
}
|
89
|
+
})
|
115
90
|
end
|
116
91
|
|
117
92
|
def remove(gemset)
|
118
93
|
rm(gemset)
|
119
94
|
end
|
120
95
|
|
121
|
-
def open(gemset=nil)
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
96
|
+
def open(gemset = nil)
|
97
|
+
command = case
|
98
|
+
when AutoGemsets::on_OSX?
|
99
|
+
'open'
|
100
|
+
when AutoGemsets::on_linux?
|
101
|
+
'xdg-open'
|
102
|
+
when AutoGemsets::on_windows?
|
103
|
+
'explorer'
|
104
|
+
end
|
105
|
+
|
106
|
+
if gemset
|
107
|
+
%x{#{command} #{gemset_path(gemset)}} if File.exists?(gemset_path(gemset))
|
108
|
+
@output.puts "No gemset named #{gemset}!" unless File.exists?(gemset_path(gemset))
|
132
109
|
else
|
133
|
-
|
110
|
+
%x{#{command} #{AutoGemsets::GEMSET_ROOT}}
|
134
111
|
end
|
135
112
|
end
|
136
113
|
|
@@ -140,20 +117,19 @@ module AutoGemsets
|
|
140
117
|
end
|
141
118
|
|
142
119
|
def init
|
143
|
-
FileUtils.mkdir_p(AutoGemsets::INSTALL_ROOT) unless File.exists? AutoGemsets::INSTALL_ROOT
|
144
|
-
script_file = File.join(AutoGemsets::ROOT, 'lib', 'auto-gemsets', 'auto_gemsets.sh')
|
145
120
|
if File.exists? script_file
|
146
121
|
@output.puts "auto-gemsets is already installed!"
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
122
|
+
confirm("Do you wish overwrite this installation?", {
|
123
|
+
accept: -> {
|
124
|
+
create_script
|
125
|
+
},
|
126
|
+
deny: -> {
|
127
|
+
@output.puts "Existing installation preserved."
|
128
|
+
}
|
129
|
+
})
|
130
|
+
else
|
131
|
+
create_script
|
154
132
|
end
|
155
|
-
FileUtils.cp(script_file, AutoGemsets::INSTALL_ROOT)
|
156
|
-
FileUtils.chmod("a+x", "#{AutoGemsets::INSTALL_ROOT}/auto_gemsets.sh")
|
157
133
|
end
|
158
134
|
|
159
135
|
private
|
@@ -162,10 +138,12 @@ module AutoGemsets
|
|
162
138
|
OptionParser.new do |opts|
|
163
139
|
opts.on("-v", "--version", "Version info") do
|
164
140
|
@options[:version] = true
|
141
|
+
@command = :version
|
165
142
|
end
|
166
143
|
|
167
144
|
opts.on('-h', '--help', 'Display help') do
|
168
145
|
@options[:help] = true
|
146
|
+
@command = :help
|
169
147
|
end
|
170
148
|
end.parse!
|
171
149
|
|
@@ -187,6 +165,38 @@ module AutoGemsets
|
|
187
165
|
def default_gemset
|
188
166
|
File.basename(ENV['DEFAULT_GEMSET'])
|
189
167
|
end
|
168
|
+
|
169
|
+
def display_gemset(gemset_dir)
|
170
|
+
case gemset = File.basename(gemset_dir)
|
171
|
+
when default_gemset
|
172
|
+
gemset = " #{gemset}*"
|
173
|
+
when ENV['GEMSET']
|
174
|
+
gemset = "-> #{gemset}"
|
175
|
+
else
|
176
|
+
gemset = " #{gemset}"
|
177
|
+
end
|
178
|
+
gemset
|
179
|
+
end
|
180
|
+
|
181
|
+
def confirm(question, callbacks = {})
|
182
|
+
settings = {
|
183
|
+
accept: -> { nil },
|
184
|
+
deny: -> { nil }
|
185
|
+
}.merge! callbacks
|
186
|
+
|
187
|
+
@output.puts "#{question} y/n"
|
188
|
+
@input.gets =~ /^y/i ? settings[:accept].call : settings[:deny].call
|
189
|
+
end
|
190
|
+
|
191
|
+
def script_file
|
192
|
+
File.join(AutoGemsets::INSTALL_ROOT, "auto_gemsets.sh")
|
193
|
+
end
|
194
|
+
|
195
|
+
def create_script
|
196
|
+
FileUtils.mkdir_p(AutoGemsets::INSTALL_ROOT) unless File.exists? AutoGemsets::INSTALL_ROOT
|
197
|
+
FileUtils.cp(File.join(AutoGemsets::ROOT, 'lib', 'auto-gemsets', 'auto_gemsets.sh'), AutoGemsets::INSTALL_ROOT)
|
198
|
+
FileUtils.chmod("a+x", File.join(AutoGemsets::INSTALL_ROOT, File.basename(script_file)))
|
199
|
+
end
|
190
200
|
end
|
191
201
|
|
192
202
|
end
|
@@ -71,28 +71,32 @@ auto_gemsets() {
|
|
71
71
|
|
72
72
|
until [[ -z "$dir" ]]; do
|
73
73
|
GEMFILE="$dir/Gemfile"
|
74
|
+
ag_get_parent_dirname
|
75
|
+
|
76
|
+
if [ "$GEMSET" == "$PARENT_DIR" ]; then
|
77
|
+
break
|
78
|
+
fi
|
74
79
|
|
75
80
|
if [ -f "$GEMFILE" ]; then
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
else
|
84
|
-
if [ ! "$GEMSET" == "$DEFAULT" ]; then
|
85
|
-
ag_set_default_gemset
|
86
|
-
fi
|
81
|
+
ag_set_gemset "$PARENT_DIR"
|
82
|
+
break
|
83
|
+
fi
|
84
|
+
|
85
|
+
if [ -z "${dir%/*}" ] && [ ! "$GEMSET" == $( basename $DEFAULT_GEMSET ) ]; then
|
86
|
+
ag_set_default_gemset
|
87
|
+
break
|
87
88
|
fi
|
88
89
|
|
89
90
|
dir="${dir%/*}"
|
90
91
|
done
|
92
|
+
|
91
93
|
}
|
92
94
|
|
93
95
|
ag_get_parent_dirname() {
|
94
|
-
|
95
|
-
|
96
|
+
if [ ! -z "$GEMFILE" ]; then
|
97
|
+
IFS='/' read -a gemfile_path_parts <<< "$GEMFILE"
|
98
|
+
PARENT_DIR="${gemfile_path_parts[${#gemfile_path_parts[@]}-2]}"
|
99
|
+
fi
|
96
100
|
}
|
97
101
|
|
98
102
|
ag_set_gemset() {
|
@@ -162,15 +166,10 @@ else
|
|
162
166
|
# If there's already a prompt command,
|
163
167
|
if [ -n "$PROMPT_COMMAND" ]; then
|
164
168
|
# check if it's already in the PROMPT
|
165
|
-
if [
|
169
|
+
if [ -z "$(echo $PROMPT_COMMAND | grep auto_gemsets)" ] ; then
|
166
170
|
PROMPT_COMMAND="$PROMPT_COMMAND; auto_gemsets"
|
167
171
|
fi
|
168
172
|
else
|
169
173
|
PROMPT_COMMAND="auto_gemsets"
|
170
174
|
fi
|
171
|
-
fi
|
172
|
-
|
173
|
-
# Set default when sourced
|
174
|
-
ag_silent "on"
|
175
|
-
ag_set_default_gemset
|
176
|
-
ag_silent "off"
|
175
|
+
fi
|
data/spec/application_spec.rb
CHANGED
@@ -10,22 +10,19 @@ describe AutoGemsets::Application do
|
|
10
10
|
@gemset = SecureRandom::hex
|
11
11
|
@random_gemset = File.join(ENV['HOME'], '.gemsets', @gemset)
|
12
12
|
FileUtils.mkdir_p(@random_gemset)
|
13
|
+
@env_gemset = ENV['GEMSET']
|
14
|
+
@env_default_gemset = ENV['DEFAULT_GEMSET']
|
15
|
+
ENV['DEFAULT_GEMSET'] = 'mygemset'
|
16
|
+
ENV['GEMSET'] = @gemset
|
13
17
|
end
|
14
18
|
|
15
19
|
after do
|
16
20
|
FileUtils.rm_rf(@random_gemset) if File.exists? @random_gemset
|
21
|
+
ENV['GEMSET'] = @env_gemset
|
22
|
+
ENV['DEFAULT_GEMSET'] = @env_default_gemset
|
17
23
|
end
|
18
24
|
|
19
25
|
describe 'current' do
|
20
|
-
before do
|
21
|
-
@env_gemset = ENV['GEMSET']
|
22
|
-
ENV['GEMSET'] = @gemset
|
23
|
-
end
|
24
|
-
|
25
|
-
after do
|
26
|
-
ENV['GEMSET'] = @env_gemset
|
27
|
-
end
|
28
|
-
|
29
26
|
it "shows the current gemset" do
|
30
27
|
@output.should_receive(:puts).with("-> #{@gemset}")
|
31
28
|
@app.current
|
data/travis.yml
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: auto-gemsets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-01-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -134,6 +134,7 @@ files:
|
|
134
134
|
- spec/application_spec.rb
|
135
135
|
- spec/auto-gemsets_spec.rb
|
136
136
|
- spec/spec_helper.rb
|
137
|
+
- travis.yml
|
137
138
|
homepage: http://github.com/daytonn/auto-gemsets
|
138
139
|
licenses:
|
139
140
|
- Apache 2.0
|
@@ -149,7 +150,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
149
150
|
version: '0'
|
150
151
|
segments:
|
151
152
|
- 0
|
152
|
-
hash:
|
153
|
+
hash: 4587648895543290072
|
153
154
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
154
155
|
none: false
|
155
156
|
requirements:
|