auto-gemsets 0.1.7 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Changelog.md +5 -0
- data/HELP.md +61 -0
- data/README.md +52 -1
- data/VERSION +1 -1
- data/auto-gemsets.gemspec +4 -4
- data/lib/auto-gemsets.rb +2 -1
- data/lib/auto-gemsets/application.rb +19 -2
- data/{auto_gemsets.sh → lib/auto-gemsets/auto_gemsets.sh} +49 -2
- data/spec/application_spec.rb +38 -0
- data/spec/auto-gemsets_spec.rb +4 -0
- metadata +5 -5
- data/HELP +0 -41
data/Changelog.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
#Changelog
|
2
2
|
|
3
|
+
## Version 0.2.0
|
4
|
+
- init command to copy script to /usr/local/share/auto_gemsets
|
5
|
+
- utility to install gems in the default gemset from anywhere
|
6
|
+
- utility to remove gems from the default gemset from anywhere
|
7
|
+
|
3
8
|
## Version 0.1.7
|
4
9
|
- Fixed a bug where calling gemset with -v would error
|
5
10
|
- Set appropriate gem bin directories in PATH
|
data/HELP.md
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
When the gemset command is called with no arguments,
|
2
|
+
it simply displays the current gemset in use.
|
3
|
+
Note that the GEM environment includes both
|
4
|
+
the current and default gemset's gems.
|
5
|
+
|
6
|
+
gemset -h/--help
|
7
|
+
gemset -v/--version
|
8
|
+
gemset [command] [arguments...]
|
9
|
+
|
10
|
+
Examples:
|
11
|
+
---------
|
12
|
+
gemset list
|
13
|
+
gemset remove mygemset
|
14
|
+
gemset create mygemset
|
15
|
+
gemset rename mygemset awesome-gemset
|
16
|
+
gemset edit mygemset
|
17
|
+
gemset help
|
18
|
+
gemset version
|
19
|
+
|
20
|
+
Commands:
|
21
|
+
========
|
22
|
+
|
23
|
+
ls, list
|
24
|
+
--------
|
25
|
+
gemset ls
|
26
|
+
gemset list
|
27
|
+
|
28
|
+
List all gemsets in your `GEMSET_ROOT`.
|
29
|
+
The gemset with the -> at the begining is the current gemset.
|
30
|
+
The gemset with the * at the end is the default gemset.
|
31
|
+
Note that the GEM environment includes both the current and default gemset's gems.
|
32
|
+
|
33
|
+
rm, remove
|
34
|
+
----------
|
35
|
+
gemset rm (gemset)
|
36
|
+
gemset remove (gemset)
|
37
|
+
|
38
|
+
Removes the given gemset from the `GEMSET_ROOT`.
|
39
|
+
To prevent unwanted deletions, a confirmation dialog will ask if you wish to continue.
|
40
|
+
|
41
|
+
touch, create
|
42
|
+
-------------
|
43
|
+
gemset touch (gemset)
|
44
|
+
gemset create (gemset)
|
45
|
+
|
46
|
+
Create a new gemset in the `GEMSET_ROOT` with the given name
|
47
|
+
|
48
|
+
mv, rename
|
49
|
+
----------
|
50
|
+
gemset mv (gemset) (name)
|
51
|
+
gemset rename (gemset) (name)
|
52
|
+
|
53
|
+
Renames the given gemset with the given name within the `GEMSET_ROOT`.
|
54
|
+
If the new gemset name conflicts with an existing gemset,
|
55
|
+
a confirmation dialog will ask if you wish to continue
|
56
|
+
|
57
|
+
edit
|
58
|
+
----
|
59
|
+
gemset edit (gemset)
|
60
|
+
|
61
|
+
Opens the gemset's Gemfile in your default `EDITOR` or `TERM_EDITOR`
|
data/README.md
CHANGED
@@ -1,4 +1,55 @@
|
|
1
1
|
auto-gemsets
|
2
2
|
==============
|
3
3
|
|
4
|
-
|
4
|
+
Tired of typing `rbenv-rehash`, `rvm gemset use`, and `rvm gemset create` for every project? `auto-gemsets` is for you.
|
5
|
+
|
6
|
+
Any `Gemfile` you encounter will cause auto-gemsets to automatically create and switch to a gemset based on the Gemfile's parent folder. Given a `Gemfile` in a directory named `my-project`, auto-gemsets will create a `~/.gemsets/my-project` directory (if one does not exist), and set all the GEM environment variables appropriate to that gemset. This means that you can enjoy sandboxed gem environments without having to micro-manage your GEM environment.
|
7
|
+
|
8
|
+
## Installation
|
9
|
+
|
10
|
+
### Using RubyGems:
|
11
|
+
|
12
|
+
gem install auto-gemsets
|
13
|
+
gemset init
|
14
|
+
|
15
|
+
### Configuration:
|
16
|
+
|
17
|
+
The `gemset init` command will create a copy of `auto_gemsets.sh` into `/usr/local/share/auto_gemsets` To use auto-gemsets, you will need to source this file in your `~/.bashrc` (`~/.bash_profile` on OSX) or `~/.zshrc` file.
|
18
|
+
|
19
|
+
source /usr/local/share/auto_gemsets/auto_gemsets.sh
|
20
|
+
|
21
|
+
That's it, reload your `.bashrc` (`source ~/.bashrc`) or open a new terminal and auto-gemsets will now be managing your ruby gems environment.
|
22
|
+
|
23
|
+
NOTE: If you've already installed `auto-gemsets` you will receive a warning asking you if you wish to overwrite this installation. You may want to do this after updating your `auto-gemsets` version
|
24
|
+
|
25
|
+
### Default Gemset:
|
26
|
+
|
27
|
+
If you wish to have certain gems available globally no matter what project you're in, you may set a `DEFAULT_GEMSET` variable that points to a gemset directory that will be available no matter what specific project gemset is currently in use. To set a default gemset simply add the `DEFAULT_GEMSET` variable in your `.bashrc` or `.zshrc` file (it must be a valid path):
|
28
|
+
|
29
|
+
# auto-gemsets
|
30
|
+
export DEFAULT_GEMSET="$HOME/.gemsets/$USER"
|
31
|
+
|
32
|
+
auto-gemsets will add this gemset to your `GEM_PATH` and add it's bin directory to your `PATH`. This gemset will always be active. When another gemset is also active, installed gems will automatically belong to that gemset. When _ONLY_ the default gemset is active, installed gems will belong to the default gemset.
|
33
|
+
|
34
|
+
## Command Line
|
35
|
+
|
36
|
+
Although auto-gemsets focuses on automatic management of your gemsets, there are times when interaction is necessary. For these occaisions, auto-gemsets comes with a command line application named `gemset`.
|
37
|
+
|
38
|
+
See the [HELP](https://github.com/daytonn/auto-gemsets/blob/master/HELP.md) file for `gemset`'s Documentation.
|
39
|
+
|
40
|
+
## default-gemset
|
41
|
+
The defalt-gemset command is an auto-gems utility to manage gems
|
42
|
+
in the default* gemset from within other gemsets.
|
43
|
+
|
44
|
+
### Usage:
|
45
|
+
|
46
|
+
default-gemset (command) [options]
|
47
|
+
|
48
|
+
### Examples:
|
49
|
+
|
50
|
+
default-gemset install rake
|
51
|
+
default-gemset uninstall rake -v=10.0.1
|
52
|
+
default-gemset list --local
|
53
|
+
|
54
|
+
`default-gemset` accepts any valid `gem` command, with any valid arguments and options.
|
55
|
+
It is simply a pass-through to the `gem` command with the context of the default gemset.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
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.
|
8
|
+
s.version = "0.2.0"
|
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 = "2012-12-
|
12
|
+
s.date = "2012-12-23"
|
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"]
|
@@ -21,16 +21,16 @@ Gem::Specification.new do |s|
|
|
21
21
|
"Changelog.md",
|
22
22
|
"Gemfile",
|
23
23
|
"Gemfile.lock",
|
24
|
-
"HELP",
|
24
|
+
"HELP.md",
|
25
25
|
"LICENSE",
|
26
26
|
"README.md",
|
27
27
|
"Rakefile",
|
28
28
|
"VERSION",
|
29
29
|
"auto-gemsets.gemspec",
|
30
|
-
"auto_gemsets.sh",
|
31
30
|
"bin/gemset",
|
32
31
|
"lib/auto-gemsets.rb",
|
33
32
|
"lib/auto-gemsets/application.rb",
|
33
|
+
"lib/auto-gemsets/auto_gemsets.sh",
|
34
34
|
"spec/application_spec.rb",
|
35
35
|
"spec/auto-gemsets_spec.rb",
|
36
36
|
"spec/spec_helper.rb"
|
data/lib/auto-gemsets.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
module AutoGemsets
|
2
2
|
ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
3
3
|
GEMSET_ROOT = ENV['GEMSET_ROOT'] || File.join(ENV['HOME'], '.gemsets')
|
4
|
+
INSTALL_ROOT = File.join('/', 'usr', 'local', 'share', 'auto_gemsets')
|
4
5
|
VERSION = File.read "#{ROOT}/VERSION"
|
5
|
-
HELP = File.read "#{ROOT}/HELP"
|
6
|
+
HELP = File.read "#{ROOT}/HELP.md"
|
6
7
|
|
7
8
|
def self.on_windows?
|
8
9
|
(/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil
|
@@ -86,7 +86,7 @@ module AutoGemsets
|
|
86
86
|
@output.puts "#{new_gemset} already exists!"
|
87
87
|
@output.puts "Do you really wish to replace #{new_gemset} with #{gemset}? y/n"
|
88
88
|
|
89
|
-
confirmation = @input.gets
|
89
|
+
confirmation = @input.gets
|
90
90
|
if confirmation =~ /^y/i
|
91
91
|
FileUtils.rm_rf(gemset_path(new_gemset))
|
92
92
|
if FileUtils.mv(gemset_path(gemset), gemset_path(new_gemset))
|
@@ -104,7 +104,7 @@ module AutoGemsets
|
|
104
104
|
|
105
105
|
def rm(gemset)
|
106
106
|
@output.puts "Are you sure you wish to delete the #{gemset} gemset? y/n"
|
107
|
-
confirmation = @input.gets
|
107
|
+
confirmation = @input.gets
|
108
108
|
if confirmation =~ /^y/i
|
109
109
|
if File.exists?(gemset_path(gemset)) && FileUtils.rm_rf(gemset_path(gemset))
|
110
110
|
@output.puts "#{gemset} gemset removed!"
|
@@ -139,6 +139,23 @@ module AutoGemsets
|
|
139
139
|
%x{#{ENV['EDITOR'] || ENV['TERM_EDITOR']} #{ENV['GEMFILE']}} if File.exists ENV['GEMFILE']
|
140
140
|
end
|
141
141
|
|
142
|
+
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
|
+
if File.exists? script_file
|
146
|
+
@output.puts "auto-gemsets is already installed!"
|
147
|
+
@output.puts "Do you wish overwrite this installation? y/n"
|
148
|
+
confirmation = @input.gets
|
149
|
+
if confirmation =~ /^y/i
|
150
|
+
|
151
|
+
else
|
152
|
+
@output.puts "Existing installation preserved."
|
153
|
+
end
|
154
|
+
end
|
155
|
+
FileUtils.cp(script_file, AutoGemsets::INSTALL_ROOT)
|
156
|
+
FileUtils.chmod("a+x", "#{AutoGemsets::INSTALL_ROOT}/auto_gemsets.sh")
|
157
|
+
end
|
158
|
+
|
142
159
|
private
|
143
160
|
def parse_options
|
144
161
|
@options = {}
|
@@ -1,3 +1,14 @@
|
|
1
|
+
SILENT="off"
|
2
|
+
|
3
|
+
ag_silent() {
|
4
|
+
if [ -n "$1" ] && [ "$1" == "on" ]; then
|
5
|
+
SILENT="on"
|
6
|
+
else
|
7
|
+
SILENT="off"
|
8
|
+
fi
|
9
|
+
|
10
|
+
}
|
11
|
+
|
1
12
|
ag_set_default_gemset() {
|
2
13
|
if [ -n "${DEFAULT_GEMSET}" ]; then
|
3
14
|
if [ ! "$GEM_PATH" == "${DEFAULT_GEMSET}" ]; then
|
@@ -22,7 +33,9 @@ ag_set_default_gemset() {
|
|
22
33
|
}
|
23
34
|
|
24
35
|
ag_using_gemset_via() {
|
25
|
-
|
36
|
+
if [ "$SILENT" == "off" ]; then
|
37
|
+
echo "Now using $GEMSET gemset via $1"
|
38
|
+
fi
|
26
39
|
}
|
27
40
|
|
28
41
|
ag_remove_path() {
|
@@ -105,6 +118,38 @@ ag_create_gemset_if_missing() {
|
|
105
118
|
fi
|
106
119
|
}
|
107
120
|
|
121
|
+
default-gemset() {
|
122
|
+
if [ -n "$1" ]; then
|
123
|
+
ag_silent "on"
|
124
|
+
G="$GEMSET"
|
125
|
+
ag_set_default_gemset
|
126
|
+
gem "$@"
|
127
|
+
ag_set_gemset "$G"
|
128
|
+
ag_silent "off"
|
129
|
+
else
|
130
|
+
cat <<EOF
|
131
|
+
The defalt-gemset command is an auto-gems utility to manage gems
|
132
|
+
in the default* gemset from within other gemsets.
|
133
|
+
|
134
|
+
Usage:
|
135
|
+
------
|
136
|
+
|
137
|
+
default-gemset (command) [options]
|
138
|
+
|
139
|
+
Examples:
|
140
|
+
---------
|
141
|
+
|
142
|
+
default-gemset install mygem
|
143
|
+
default-gemset uninstall mygem
|
144
|
+
default-gemset list
|
145
|
+
|
146
|
+
`default-gemset` accepts any valid `gem` command, with any valid arguments and options.
|
147
|
+
It is simply a pass-through to the `gem` command with the context of the default gemset.
|
148
|
+
EOF
|
149
|
+
|
150
|
+
fi
|
151
|
+
}
|
152
|
+
|
108
153
|
# Create a GEMSET_ROOT if none is set
|
109
154
|
if [ ! -n "$GEMSET_ROOT" ]; then
|
110
155
|
export GEMSET_ROOT="${HOME}/.gemsets"
|
@@ -126,4 +171,6 @@ else
|
|
126
171
|
fi
|
127
172
|
|
128
173
|
# Set default when sourced
|
129
|
-
|
174
|
+
ag_silent "on"
|
175
|
+
ag_set_default_gemset
|
176
|
+
ag_silent "off"
|
data/spec/application_spec.rb
CHANGED
@@ -130,4 +130,42 @@ describe AutoGemsets::Application do
|
|
130
130
|
|
131
131
|
end
|
132
132
|
|
133
|
+
describe 'init' do
|
134
|
+
|
135
|
+
before do
|
136
|
+
@script_file = File.join('/', 'usr', 'local', 'share', 'auto_gemsets', 'auto_gemsets.sh')
|
137
|
+
FileUtils.mv(@script_file, "#{@script_file}.bak") if File.exists?(@script_file)
|
138
|
+
end
|
139
|
+
|
140
|
+
after do
|
141
|
+
FileUtils.rm_rf(@script_file) if File.exists?(@script_file)
|
142
|
+
FileUtils.mv("#{@script_file}.bak", @script_file) if File.exists?("#{@script_file}.bak")
|
143
|
+
end
|
144
|
+
|
145
|
+
it "copies the auto_gemsets script in the share directory" do
|
146
|
+
@app.init
|
147
|
+
script_file = File.join(AutoGemsets::ROOT, 'lib', 'auto-gemsets', 'auto_gemsets.sh')
|
148
|
+
expect(File.read(@script_file)).to eq(File.read(script_file))
|
149
|
+
end
|
150
|
+
|
151
|
+
it "warns if the script is already loaded and does nothing when y is not pressed" do
|
152
|
+
FileUtils.touch @script_file
|
153
|
+
@output.should_receive(:puts).once.with("auto-gemsets is already installed!")
|
154
|
+
@output.should_receive(:puts).once.with("Do you wish overwrite this installation? y/n")
|
155
|
+
@output.should_receive(:puts).once.with("Existing installation preserved.")
|
156
|
+
@input.stub!(:gets).and_return("n")
|
157
|
+
@app.init
|
158
|
+
end
|
159
|
+
|
160
|
+
it "warns if the script is already loaded and overwrites it when y is pressed" do
|
161
|
+
FileUtils.touch @script_file
|
162
|
+
@output.should_receive(:puts).once.with("auto-gemsets is already installed!")
|
163
|
+
@output.should_receive(:puts).once.with("Do you wish overwrite this installation? y/n")
|
164
|
+
@input.stub!(:gets).and_return("y")
|
165
|
+
@app.init
|
166
|
+
expect(File.read(@script_file)).to eq(File.read(File.join(AutoGemsets::INSTALL_ROOT, 'auto_gemsets.sh')))
|
167
|
+
end
|
168
|
+
|
169
|
+
end
|
170
|
+
|
133
171
|
end
|
data/spec/auto-gemsets_spec.rb
CHANGED
@@ -14,6 +14,10 @@ describe AutoGemsets do
|
|
14
14
|
expect(AutoGemsets::GEMSET_ROOT).to eq(File.join(ENV['HOME'], '.gemsets'))
|
15
15
|
end
|
16
16
|
|
17
|
+
it "has an INSTALL_ROOT" do
|
18
|
+
expect(AutoGemsets::INSTALL_ROOT).to eq('/usr/local/share/auto_gemsets')
|
19
|
+
end
|
20
|
+
|
17
21
|
it "has a VERSION" do
|
18
22
|
expect(AutoGemsets::VERSION).to match(/\d+\.\d+\.\d+/)
|
19
23
|
end
|
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.
|
4
|
+
version: 0.2.0
|
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: 2012-12-
|
12
|
+
date: 2012-12-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -121,16 +121,16 @@ files:
|
|
121
121
|
- Changelog.md
|
122
122
|
- Gemfile
|
123
123
|
- Gemfile.lock
|
124
|
-
- HELP
|
124
|
+
- HELP.md
|
125
125
|
- LICENSE
|
126
126
|
- README.md
|
127
127
|
- Rakefile
|
128
128
|
- VERSION
|
129
129
|
- auto-gemsets.gemspec
|
130
|
-
- auto_gemsets.sh
|
131
130
|
- bin/gemset
|
132
131
|
- lib/auto-gemsets.rb
|
133
132
|
- lib/auto-gemsets/application.rb
|
133
|
+
- lib/auto-gemsets/auto_gemsets.sh
|
134
134
|
- spec/application_spec.rb
|
135
135
|
- spec/auto-gemsets_spec.rb
|
136
136
|
- spec/spec_helper.rb
|
@@ -149,7 +149,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
149
149
|
version: '0'
|
150
150
|
segments:
|
151
151
|
- 0
|
152
|
-
hash:
|
152
|
+
hash: 3895543352290661910
|
153
153
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
154
154
|
none: false
|
155
155
|
requirements:
|
data/HELP
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
gemset [command]
|
2
|
-
|
3
|
-
When the gemset command is called with no arguments,
|
4
|
-
it simply displays the current gemset in use.
|
5
|
-
Note that the GEM environment includes both
|
6
|
-
the current and default gemset's gems.
|
7
|
-
|
8
|
-
Commands
|
9
|
-
========
|
10
|
-
|
11
|
-
ls, list
|
12
|
-
List all gemsets in your GEMSET_ROOT.
|
13
|
-
The gemset with the -> at the begining is the current gemset.
|
14
|
-
The gemset with the * at the end is the default gemset.
|
15
|
-
Note that the GEM environment includes both the current and default gemset's gems.
|
16
|
-
|
17
|
-
rm, remove
|
18
|
-
gemset rm (gemset)
|
19
|
-
gemset remove (gemset)
|
20
|
-
|
21
|
-
Removes the given gemset from the GEMSET_ROOT.
|
22
|
-
To prevent unwanted deletions, a confirmation dialog will ask if you wish to continue.
|
23
|
-
|
24
|
-
touch, create
|
25
|
-
gemset touch (gemset)
|
26
|
-
gemset create (gemset)
|
27
|
-
|
28
|
-
Create a new gemset in the GESET_ROOT with the given name
|
29
|
-
|
30
|
-
mv, rename
|
31
|
-
gemset mv (gemset) (name)
|
32
|
-
gemset rename (gemset) (name)
|
33
|
-
|
34
|
-
Renames the given gemset with the given name within the GESET_ROOT.
|
35
|
-
If the new gemset name conflicts with an existing gemset,
|
36
|
-
a confirmation dialog will ask if you wish to continue
|
37
|
-
|
38
|
-
edit
|
39
|
-
gemset edit (gemset)
|
40
|
-
|
41
|
-
Opens the gemset's Gemfile in your default EDITOR or TERM_EDITOR
|