auto-gemsets 0.3.0 → 0.4.0
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/Changelog.md +13 -0
- data/HELP.md +1 -1
- data/README.md +33 -16
- data/Rakefile +9 -0
- data/VERSION +1 -1
- data/auto-gemsets.gemspec +14 -3
- data/lib/auto-gemsets.rb +1 -1
- data/lib/auto-gemsets/.auto-gemsets +1 -0
- data/lib/auto-gemsets/application.rb +20 -6
- data/lib/auto-gemsets/auto-gemsets.sh +120 -0
- data/lib/auto-gemsets/default-gems.sh +32 -0
- data/spec/application_spec.rb +46 -10
- data/spec/auto-gemsets_spec.rb +1 -1
- data/test/ag_add_path_test.sh +20 -0
- data/test/ag_init_test.sh +81 -0
- data/test/ag_parent_dir_test.sh +18 -0
- data/test/ag_remove_path_test.sh +19 -0
- data/test/ag_set_gemset_test.sh +67 -0
- data/test/auto_gemsets_test.sh +83 -0
- data/test/helper.sh +59 -0
- data/test/project/Gemfile +0 -0
- data/test/runner +13 -0
- metadata +15 -4
- data/lib/auto-gemsets/auto_gemsets.sh +0 -174
data/Changelog.md
CHANGED
@@ -1,5 +1,18 @@
|
|
1
1
|
#Changelog
|
2
2
|
|
3
|
+
## Version 0.4.0 (unreleased)
|
4
|
+
- Create default gemset if one does not exist
|
5
|
+
- Complete shunit2 test suite coverage (and subsequent refactor/overhall)
|
6
|
+
- Default gemset is now simply called default
|
7
|
+
- Renamed `/usr/local/share/auto_gemsets` to `/usr/local/share/auto-gemsets`
|
8
|
+
- Added configuration file `~/.auto-gemsets` to turn on/off reporting
|
9
|
+
- `gemset init` creates `auto-gemsets.sh`, `default-gems.sh`, and `.auto-gemsets`
|
10
|
+
- `gemset init` creates the default gemset
|
11
|
+
|
12
|
+
## Version 0.3.0
|
13
|
+
- No longer setting the auto_gemsets.sh file as executable
|
14
|
+
- Change `default-gemsets` to `default-gems`
|
15
|
+
|
3
16
|
## Version 0.2.1
|
4
17
|
- add `init` command
|
5
18
|
|
data/HELP.md
CHANGED
@@ -22,7 +22,7 @@ Commands:
|
|
22
22
|
|
23
23
|
init
|
24
24
|
----
|
25
|
-
This command will copy the
|
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
26
|
|
27
27
|
ls, list
|
28
28
|
--------
|
data/README.md
CHANGED
@@ -14,22 +14,31 @@ Any `Gemfile` you encounter will cause auto-gemsets to automatically create and
|
|
14
14
|
|
15
15
|
### Configuration:
|
16
16
|
|
17
|
-
The `gemset init` command will create a copy of `
|
17
|
+
The `gemset init` command will create a copy of `auto-gemsets.sh` and `default-gems.sh` into `/usr/local/share/auto-gemsets` To use auto-gemsets, you will need to source these files in your `~/.bashrc` (`~/.bash_profile` on OSX) or `~/.zshrc` file.
|
18
18
|
|
19
|
-
source /usr/local/share/
|
19
|
+
source /usr/local/share/auto-gemsets/auto-gemsets.sh
|
20
|
+
source /usr/local/share/auto-gemsets/default-gems.sh
|
21
|
+
|
22
|
+
In addition to these two scripts, `init` also creates a `~/.auto-gemsets` config file to allow for customization of `auto-gemsets`.
|
23
|
+
|
24
|
+
Once you source `.bashrc`, `.bash_profile`, or `~/.zshrc` (`source ~/.bashrc`) or open a new terminal auto-gemsets will now be active and managing your ruby gems.
|
20
25
|
|
21
|
-
|
26
|
+
Since, `auto-gemsets` creates a new default gemset, you will need to reinstall `auto-gemsets` to use the `gemset` command.
|
22
27
|
|
23
|
-
|
28
|
+
gem install auto-gemsets
|
29
|
+
|
30
|
+
A NOTE ON UPGRADING: 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
31
|
|
25
32
|
### Default Gemset:
|
26
33
|
|
27
|
-
|
34
|
+
A default gemset will be created for you when you run `gemset init` in `~/.gemsets/default`.
|
35
|
+
|
36
|
+
If you wish to override this location simply set the `DEFAULT_GEMSET` variable somewhere in your `.bashrc`, `.bash_profile`, or `.zshrc` depending on your environment:
|
28
37
|
|
29
38
|
# auto-gemsets
|
30
|
-
export DEFAULT_GEMSET="
|
39
|
+
export DEFAULT_GEMSET="/custom/path/to/default_gemset"
|
31
40
|
|
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.
|
41
|
+
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
42
|
|
34
43
|
## Command Line
|
35
44
|
|
@@ -37,19 +46,27 @@ Although auto-gemsets focuses on automatic management of your gemsets, there are
|
|
37
46
|
|
38
47
|
See the [HELP](https://github.com/daytonn/auto-gemsets/blob/master/HELP.md) file for `gemset`'s Documentation.
|
39
48
|
|
49
|
+
There is also a utility that allows you to isolate your `default` gemset when running gem commands named `default-gems`
|
50
|
+
|
51
|
+
For more documentation simply type
|
52
|
+
|
53
|
+
default-gems
|
54
|
+
|
40
55
|
## default-gems
|
41
|
-
The defalt-
|
56
|
+
The defalt-gems command is an auto-gemsets utility to manage gems
|
42
57
|
in the default* gemset from within other gemsets.
|
43
58
|
|
44
|
-
|
59
|
+
Usage:
|
60
|
+
------
|
45
61
|
|
46
|
-
|
62
|
+
default-gems (command) [options]
|
47
63
|
|
48
|
-
|
64
|
+
Examples:
|
65
|
+
---------
|
49
66
|
|
50
|
-
|
51
|
-
|
52
|
-
|
67
|
+
default-gems install mygem
|
68
|
+
default-gems uninstall mygem
|
69
|
+
default-gems list
|
53
70
|
|
54
|
-
|
55
|
-
It is simply a pass-through to the
|
71
|
+
default-gems accepts any valid gem command, with any valid arguments and options.
|
72
|
+
It is simply a pass-through to the gem command with the context of the default gemset.
|
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.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.4.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 = "2013-01-
|
12
|
+
s.date = "2013-01-07"
|
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"]
|
@@ -29,11 +29,22 @@ Gem::Specification.new do |s|
|
|
29
29
|
"auto-gemsets.gemspec",
|
30
30
|
"bin/gemset",
|
31
31
|
"lib/auto-gemsets.rb",
|
32
|
+
"lib/auto-gemsets/.auto-gemsets",
|
32
33
|
"lib/auto-gemsets/application.rb",
|
33
|
-
"lib/auto-gemsets/
|
34
|
+
"lib/auto-gemsets/auto-gemsets.sh",
|
35
|
+
"lib/auto-gemsets/default-gems.sh",
|
34
36
|
"spec/application_spec.rb",
|
35
37
|
"spec/auto-gemsets_spec.rb",
|
36
38
|
"spec/spec_helper.rb",
|
39
|
+
"test/ag_add_path_test.sh",
|
40
|
+
"test/ag_init_test.sh",
|
41
|
+
"test/ag_parent_dir_test.sh",
|
42
|
+
"test/ag_remove_path_test.sh",
|
43
|
+
"test/ag_set_gemset_test.sh",
|
44
|
+
"test/auto_gemsets_test.sh",
|
45
|
+
"test/helper.sh",
|
46
|
+
"test/project/Gemfile",
|
47
|
+
"test/runner",
|
37
48
|
"travis.yml"
|
38
49
|
]
|
39
50
|
s.homepage = "http://github.com/daytonn/auto-gemsets"
|
data/lib/auto-gemsets.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
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', '
|
4
|
+
INSTALL_ROOT = File.join('/', 'usr', 'local', 'share', 'auto-gemsets')
|
5
5
|
VERSION = File.read "#{ROOT}/VERSION"
|
6
6
|
HELP = File.read "#{ROOT}/HELP.md"
|
7
7
|
|
@@ -0,0 +1 @@
|
|
1
|
+
export AUTO_GEMSETS_REPORTING=on
|
@@ -117,22 +117,32 @@ module AutoGemsets
|
|
117
117
|
end
|
118
118
|
|
119
119
|
def init
|
120
|
-
if File.exists?
|
120
|
+
if File.exists? script_file
|
121
121
|
@output.puts "auto-gemsets is already installed!"
|
122
122
|
confirm("Do you wish overwrite this installation?", {
|
123
123
|
accept: -> {
|
124
|
-
|
124
|
+
install_auto_gemsets
|
125
125
|
},
|
126
126
|
deny: -> {
|
127
127
|
@output.puts "Existing installation preserved."
|
128
128
|
}
|
129
129
|
})
|
130
130
|
else
|
131
|
-
|
131
|
+
install_auto_gemsets
|
132
132
|
end
|
133
133
|
end
|
134
134
|
|
135
135
|
private
|
136
|
+
def install_auto_gemsets
|
137
|
+
create_script 'auto-gemsets.sh'
|
138
|
+
create_script 'default-gems.sh'
|
139
|
+
config_file = File.join(ENV['HOME'], '.auto-gemsets')
|
140
|
+
default_gemset_dir = File.join(AutoGemsets::GEMSET_ROOT, 'default')
|
141
|
+
FileUtils.cp(File.join(AutoGemsets::ROOT, 'lib', 'auto-gemsets', '.auto-gemsets'), config_file) unless File.exists? config_file
|
142
|
+
FileUtils.mkdir_p(AutoGemsets::GEMSET_ROOT) unless File.exists?(AutoGemsets::GEMSET_ROOT)
|
143
|
+
FileUtils.mkdir_p(default_gemset_dir) unless File.exists?(default_gemset_dir)
|
144
|
+
end
|
145
|
+
|
136
146
|
def parse_options
|
137
147
|
@options = {}
|
138
148
|
OptionParser.new do |opts|
|
@@ -189,12 +199,16 @@ module AutoGemsets
|
|
189
199
|
end
|
190
200
|
|
191
201
|
def script_file
|
192
|
-
File.join(AutoGemsets::INSTALL_ROOT, "
|
202
|
+
File.join(AutoGemsets::INSTALL_ROOT, "auto-gemsets.sh")
|
203
|
+
end
|
204
|
+
|
205
|
+
def default_gems_file
|
206
|
+
File.join(AutoGemsets::INSTALL_ROOT, "default-gems.sh")
|
193
207
|
end
|
194
208
|
|
195
|
-
def create_script
|
209
|
+
def create_script(script)
|
196
210
|
FileUtils.mkdir_p(AutoGemsets::INSTALL_ROOT) unless File.exists? AutoGemsets::INSTALL_ROOT
|
197
|
-
FileUtils.cp(File.join(AutoGemsets::ROOT, 'lib', 'auto-gemsets',
|
211
|
+
FileUtils.cp(File.join(AutoGemsets::ROOT, 'lib', 'auto-gemsets', script), AutoGemsets::INSTALL_ROOT)
|
198
212
|
end
|
199
213
|
end
|
200
214
|
|
@@ -0,0 +1,120 @@
|
|
1
|
+
ag_init() {
|
2
|
+
export GEMSET_ROOT="$HOME/.gemsets"
|
3
|
+
|
4
|
+
if [ -z "${DEFAULT_GEMSET}" ]; then
|
5
|
+
export DEFAULT_GEMSET="default"
|
6
|
+
fi
|
7
|
+
|
8
|
+
if [ -r "${HOME}/.auto-gemsets" ]; then
|
9
|
+
source "${HOME}/.auto-gemsets"
|
10
|
+
fi
|
11
|
+
|
12
|
+
# If ZSH add precommand
|
13
|
+
if [[ -n "$ZSH_VERSION" ]]; then
|
14
|
+
precmd_functions+=("auto_gemsets")
|
15
|
+
else
|
16
|
+
# If there's already a prompt command,
|
17
|
+
if [ -n "$PROMPT_COMMAND" ]; then
|
18
|
+
# check if it's already in the PROMPT
|
19
|
+
if [ -z "$(echo $PROMPT_COMMAND | grep auto_gemsets)" ] ; then
|
20
|
+
PROMPT_COMMAND="$PROMPT_COMMAND; auto_gemsets"
|
21
|
+
fi
|
22
|
+
else
|
23
|
+
PROMPT_COMMAND="auto_gemsets"
|
24
|
+
fi
|
25
|
+
fi
|
26
|
+
|
27
|
+
auto_gemsets
|
28
|
+
}
|
29
|
+
|
30
|
+
ag_set_gemset() {
|
31
|
+
if [ "$GEMSET" == "$1" ]; then
|
32
|
+
return;
|
33
|
+
fi
|
34
|
+
export GEMSET="${1}"
|
35
|
+
export GEM_HOME="${GEMSET_ROOT}/$GEMSET"
|
36
|
+
export GEM_ROOT="$GEM_HOME" # for chruby
|
37
|
+
export GEM_PATH="$GEM_HOME"
|
38
|
+
ag_add_path "${GEM_HOME}/bin"
|
39
|
+
|
40
|
+
if [ ! "$GEMSET" == 'default' ]; then
|
41
|
+
ag_add_path "${GEMSET_ROOT}/default/bin"
|
42
|
+
export GEM_PATH="${GEM_PATH}:${GEMSET_ROOT}/default"
|
43
|
+
ag_using_gemset_via "$GEMFILE"
|
44
|
+
else
|
45
|
+
ag_using_gemset_via "*default"
|
46
|
+
fi
|
47
|
+
|
48
|
+
}
|
49
|
+
|
50
|
+
ag_remove_path() {
|
51
|
+
CLEAN_PATH=""
|
52
|
+
IFS=':' read -a PATHS <<< "$PATH"
|
53
|
+
# Rip through paths and build a new path without the directory
|
54
|
+
for p in "${PATHS[@]}"
|
55
|
+
do
|
56
|
+
if [ ! "$p" == "$1" ]; then
|
57
|
+
# first time through, set CLEAN_PATH
|
58
|
+
if [ -z "$CLEAN_PATH" ]; then
|
59
|
+
CLEAN_PATH="$p"
|
60
|
+
else
|
61
|
+
# append the path
|
62
|
+
CLEAN_PATH="$CLEAN_PATH:$p"
|
63
|
+
fi
|
64
|
+
fi
|
65
|
+
done
|
66
|
+
export PATH="$CLEAN_PATH"
|
67
|
+
}
|
68
|
+
|
69
|
+
ag_using_gemset_via() {
|
70
|
+
if [ "$AUTO_GEMSETS_REPORTING" == "on" ]; then
|
71
|
+
echo "Now using $GEMSET gemset via $1"
|
72
|
+
fi
|
73
|
+
}
|
74
|
+
|
75
|
+
ag_add_path() {
|
76
|
+
if ! echo $PATH | egrep -q "(^|:)$1($|:)" ; then
|
77
|
+
export PATH="$1:$PATH"
|
78
|
+
fi
|
79
|
+
}
|
80
|
+
|
81
|
+
ag_parent_dir() {
|
82
|
+
if [ ! -z "$1" ]; then
|
83
|
+
IFS='/' read -a path_parts <<< "$1"
|
84
|
+
echo "${path_parts[${#path_parts[@]}-2]}"
|
85
|
+
else
|
86
|
+
echo ""
|
87
|
+
fi
|
88
|
+
}
|
89
|
+
|
90
|
+
auto_gemsets() {
|
91
|
+
local dir="$PWD"
|
92
|
+
|
93
|
+
until [[ -z "$dir" ]]; do
|
94
|
+
if [ "$GEMSET" ] && [ "$GEMSET" == "$(ag_parent_dir ${dir}/Gemfile)" ]; then
|
95
|
+
return;
|
96
|
+
fi
|
97
|
+
|
98
|
+
if [ -f "$dir/Gemfile" ]; then
|
99
|
+
export GEMFILE="$dir/Gemfile"
|
100
|
+
ag_create_gemset_if_missing "$(ag_parent_dir $GEMFILE)"
|
101
|
+
ag_set_gemset "$(ag_parent_dir $GEMFILE)"
|
102
|
+
return;
|
103
|
+
fi
|
104
|
+
|
105
|
+
if [ -z "${dir%/*}" ]; then
|
106
|
+
ag_set_gemset 'default'
|
107
|
+
fi
|
108
|
+
|
109
|
+
dir="${dir%/*}"
|
110
|
+
done
|
111
|
+
}
|
112
|
+
|
113
|
+
ag_create_gemset_if_missing() {
|
114
|
+
if [ ! -d "${GEMSET_ROOT}/${1}" ]; then
|
115
|
+
mkdir -p "${GEMSET_ROOT}/${1}" && echo "${1} gemset created. run gem install bundler"
|
116
|
+
fi
|
117
|
+
}
|
118
|
+
|
119
|
+
# Kick it
|
120
|
+
ag_init
|
@@ -0,0 +1,32 @@
|
|
1
|
+
default-gems() {
|
2
|
+
if [ -z "$1" ]; then
|
3
|
+
cat <<EOF
|
4
|
+
The defalt-gems command is an auto-gemsets utility to manage gems
|
5
|
+
in the default* gemset from within other gemsets.
|
6
|
+
|
7
|
+
Usage:
|
8
|
+
------
|
9
|
+
|
10
|
+
default-gems (command) [options]
|
11
|
+
|
12
|
+
Examples:
|
13
|
+
---------
|
14
|
+
|
15
|
+
default-gems install mygem
|
16
|
+
default-gems uninstall mygem
|
17
|
+
default-gems list
|
18
|
+
|
19
|
+
default-gems accepts any valid gem command, with any valid arguments and options.
|
20
|
+
It is simply a pass-through to the gem command with the context of the default gemset.
|
21
|
+
EOF
|
22
|
+
else
|
23
|
+
if [ ! "$GEMSET" == 'default' ]; then
|
24
|
+
G="$GEMSET"
|
25
|
+
ag_set_gemset 'default' > /dev/null
|
26
|
+
gem "$@"
|
27
|
+
ag_set_gemset "$G" > /dev/null
|
28
|
+
else
|
29
|
+
gem "$@"
|
30
|
+
fi
|
31
|
+
fi
|
32
|
+
}
|
data/spec/application_spec.rb
CHANGED
@@ -130,23 +130,37 @@ describe AutoGemsets::Application do
|
|
130
130
|
describe 'init' do
|
131
131
|
|
132
132
|
before do
|
133
|
-
@
|
134
|
-
|
133
|
+
@scripts = {
|
134
|
+
auto_gemsets: File.join('/', 'usr', 'local', 'share', 'auto-gemsets', 'auto-gemsets.sh'),
|
135
|
+
default_gems: File.join('/', 'usr', 'local', 'share', 'auto-gemsets', 'default-gems.sh'),
|
136
|
+
config: File.join(ENV['HOME'], '.auto-gemsets')
|
137
|
+
}
|
138
|
+
FileUtils.mv(@scripts[:auto_gemsets], "#{@scripts[:auto_gemsets]}.bak") if File.exists?(@scripts[:auto_gemsets])
|
139
|
+
FileUtils.mv(@scripts[:default_gems], "#{@scripts[:default_gems]}.bak") if File.exists?(@scripts[:default_gems])
|
140
|
+
FileUtils.mv(AutoGemsets::GEMSET_ROOT, "#{AutoGemsets::GEMSET_ROOT}.bak") if File.exists? AutoGemsets::GEMSET_ROOT
|
135
141
|
end
|
136
142
|
|
137
143
|
after do
|
138
|
-
FileUtils.rm_rf(@
|
139
|
-
FileUtils.mv("#{@
|
144
|
+
FileUtils.rm_rf(@scripts[:auto_gemsets]) if File.exists?(@scripts[:auto_gemsets])
|
145
|
+
FileUtils.mv("#{@scripts[:auto_gemsets]}.bak", @scripts[:auto_gemsets]) if File.exists?("#{@scripts[:auto_gemsets]}.bak")
|
146
|
+
|
147
|
+
FileUtils.rm_rf(@scripts[:default_gems]) if File.exists?(@scripts[:default_gems])
|
148
|
+
FileUtils.mv("#{@scripts[:default_gems]}.bak", @scripts[:default_gems]) if File.exists?("#{@scripts[:default_gems]}.bak")
|
149
|
+
|
150
|
+
FileUtils.rm_rf(@scripts[:config]) if File.exists?(@scripts[:config])
|
151
|
+
FileUtils.mv("#{@scripts[:config]}.bak", @scripts[:config]) if File.exists?("#{@scripts[:config]}.bak")
|
152
|
+
FileUtils.rm_rf(AutoGemsets::GEMSET_ROOT) if File.exists? AutoGemsets::GEMSET_ROOT
|
153
|
+
FileUtils.mv("#{AutoGemsets::GEMSET_ROOT}.bak", AutoGemsets::GEMSET_ROOT) if File.exists? "#{AutoGemsets::GEMSET_ROOT}.bak"
|
140
154
|
end
|
141
155
|
|
142
|
-
it "copies the
|
156
|
+
it "copies the auto-gemsets script in the share directory" do
|
143
157
|
@app.init
|
144
|
-
script_file = File.join(AutoGemsets::ROOT, 'lib', 'auto-gemsets', '
|
145
|
-
expect(File.read(@
|
158
|
+
script_file = File.join(AutoGemsets::ROOT, 'lib', 'auto-gemsets', 'auto-gemsets.sh')
|
159
|
+
expect(File.read(@scripts[:auto_gemsets])).to eq(File.read(script_file))
|
146
160
|
end
|
147
161
|
|
148
162
|
it "warns if the script is already loaded and does nothing when y is not pressed" do
|
149
|
-
FileUtils.touch @
|
163
|
+
FileUtils.touch @scripts[:auto_gemsets]
|
150
164
|
@output.should_receive(:puts).once.with("auto-gemsets is already installed!")
|
151
165
|
@output.should_receive(:puts).once.with("Do you wish overwrite this installation? y/n")
|
152
166
|
@output.should_receive(:puts).once.with("Existing installation preserved.")
|
@@ -155,12 +169,34 @@ describe AutoGemsets::Application do
|
|
155
169
|
end
|
156
170
|
|
157
171
|
it "warns if the script is already loaded and overwrites it when y is pressed" do
|
158
|
-
FileUtils.touch @
|
172
|
+
FileUtils.touch @scripts[:auto_gemsets]
|
159
173
|
@output.should_receive(:puts).once.with("auto-gemsets is already installed!")
|
160
174
|
@output.should_receive(:puts).once.with("Do you wish overwrite this installation? y/n")
|
161
175
|
@input.stub!(:gets).and_return("y")
|
162
176
|
@app.init
|
163
|
-
expect(File.read(@
|
177
|
+
expect(File.read(@scripts[:auto_gemsets])).to eq(File.read(File.join(AutoGemsets::INSTALL_ROOT, 'auto-gemsets.sh')))
|
178
|
+
end
|
179
|
+
|
180
|
+
it "copies the default-gems script in the share directory" do
|
181
|
+
@app.init
|
182
|
+
default_gems_file = File.join(AutoGemsets::ROOT, 'lib', 'auto-gemsets', 'default-gems.sh')
|
183
|
+
expect(File.read(@scripts[:default_gems])).to eq(File.read(default_gems_file))
|
184
|
+
end
|
185
|
+
|
186
|
+
it "creates a ~/.auto-gemsets file if one does not exist" do
|
187
|
+
@app.init
|
188
|
+
config_file = File.join(AutoGemsets::ROOT, 'lib', 'auto-gemsets', '.auto-gemsets')
|
189
|
+
expect(File.read(@scripts[:config])).to eq(File.read(config_file))
|
190
|
+
end
|
191
|
+
|
192
|
+
it "creates the GEMSET_ROOT directory" do
|
193
|
+
@app.init
|
194
|
+
expect(File.exists?(AutoGemsets::GEMSET_ROOT)).to be_true
|
195
|
+
end
|
196
|
+
|
197
|
+
it "creates the default gemset folder" do
|
198
|
+
@app.init
|
199
|
+
expect(File.exists?(File.join(AutoGemsets::GEMSET_ROOT, 'default'))).to be_true
|
164
200
|
end
|
165
201
|
|
166
202
|
end
|
data/spec/auto-gemsets_spec.rb
CHANGED
@@ -0,0 +1,20 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
|
3
|
+
. ./test/helper.sh
|
4
|
+
|
5
|
+
setUp() {
|
6
|
+
clear_env
|
7
|
+
export PATH="test:/usr/bin:/bin"
|
8
|
+
}
|
9
|
+
|
10
|
+
tearDown() {
|
11
|
+
reset_env
|
12
|
+
}
|
13
|
+
|
14
|
+
test_it_does_not_duplicate_entries() {
|
15
|
+
ag_add_path 'test'
|
16
|
+
assertEquals " it doesn't duplicate entries" \
|
17
|
+
"test:/usr/bin:/bin" "$PATH"
|
18
|
+
}
|
19
|
+
|
20
|
+
SHUNIT_PARENT=$0 . $SHUNIT2
|
@@ -0,0 +1,81 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
|
3
|
+
. ./test/helper.sh
|
4
|
+
|
5
|
+
setUp() {
|
6
|
+
clear_env
|
7
|
+
if [ ! -f "${HOME}/.auto-gemsets" ]; then
|
8
|
+
touch "${HOME}/.auto-gemsets"; echo "export AUTO_GEMSETS_REPORTING=on" > "${HOME}/.auto-gemsets"
|
9
|
+
fi
|
10
|
+
}
|
11
|
+
|
12
|
+
tearDown() {
|
13
|
+
reset_env
|
14
|
+
}
|
15
|
+
|
16
|
+
test_it_adds_a_gemset_root_environment_variable() {
|
17
|
+
ag_init > /dev/null
|
18
|
+
assertEquals " it adds a GEMSET_ROOT environment variable" \
|
19
|
+
"$HOME/.gemsets" "$GEMSET_ROOT"
|
20
|
+
}
|
21
|
+
|
22
|
+
test_sets_default_gemset_if_not_defined() {
|
23
|
+
ag_init > /dev/null
|
24
|
+
assertEquals " it sets the DEFAULT_GEMSET" \
|
25
|
+
"default" "$DEFAULT_GEMSET"
|
26
|
+
}
|
27
|
+
|
28
|
+
test_ignores_default_gemset_if_defined() {
|
29
|
+
export DEFAULT_GEMSET='test'
|
30
|
+
ag_init > /dev/null
|
31
|
+
assertEquals " it sets the DEFAULT_GEMSET" \
|
32
|
+
"test" "$DEFAULT_GEMSET"
|
33
|
+
}
|
34
|
+
|
35
|
+
test_it_adds_auto_gemsets_to_the_prompt_command() {
|
36
|
+
ag_init > /dev/null
|
37
|
+
assertEquals " it adds auto_gemsets to the PROMPT_COMMAND" \
|
38
|
+
"$PROMPT_COMMAND" "auto_gemsets"
|
39
|
+
}
|
40
|
+
|
41
|
+
test_it_appends_to_the_prompt_command_if_it_already_has_functions() {
|
42
|
+
export PROMPT_COMMAND=":"
|
43
|
+
ag_init > /dev/null
|
44
|
+
assertEquals " it appends to the PROMPT_COMMAND if it already has functions" \
|
45
|
+
":; auto_gemsets" "$PROMPT_COMMAND"
|
46
|
+
}
|
47
|
+
|
48
|
+
test_it_doesnt_duplicate_the_prompt_command() {
|
49
|
+
export PROMPT_COMMAND="auto_gemsets"
|
50
|
+
ag_init > /dev/null
|
51
|
+
assertEquals " it doesn't duplicate the PROMPT_COMMAND" \
|
52
|
+
"auto_gemsets" "$PROMPT_COMMAND"
|
53
|
+
}
|
54
|
+
|
55
|
+
test_it_sources_the_auto_gemsets_file() {
|
56
|
+
ag_init > /dev/null
|
57
|
+
assertEquals " it sources the ~/.auto-gemsets file" \
|
58
|
+
"on" "$AUTO_GEMSETS_REPORTING"
|
59
|
+
}
|
60
|
+
|
61
|
+
test_it_calls_auto_gemsets() {
|
62
|
+
cd "$HOME"
|
63
|
+
ag_init > /dev/null
|
64
|
+
|
65
|
+
assertEquals " it sets the default when no Gemfile is present" \
|
66
|
+
"default" "$GEMSET"
|
67
|
+
|
68
|
+
assertEquals " it sets the GEM_HOME when no Gemfile is present" \
|
69
|
+
"${GEMSET_ROOT}/default" "$GEM_HOME"
|
70
|
+
|
71
|
+
assertEquals " it sets the GEM_HOME when no Gemfile is present" \
|
72
|
+
"${GEMSET_ROOT}/default" "$GEM_ROOT"
|
73
|
+
|
74
|
+
assertEquals " it sets the GEM_PATH when no Gemfile is present" \
|
75
|
+
"${GEMSET_ROOT}/default" "$GEM_PATH"
|
76
|
+
|
77
|
+
assertNotNull " it adds the gemset's bin directory to the path" \
|
78
|
+
"$(echo $PATH | grep "${GEMSET_ROOT}/default/bin")"
|
79
|
+
}
|
80
|
+
|
81
|
+
SHUNIT_PARENT=$0 . $SHUNIT2
|
@@ -0,0 +1,18 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
|
3
|
+
. ./test/helper.sh
|
4
|
+
|
5
|
+
setUp() {
|
6
|
+
clear_env
|
7
|
+
}
|
8
|
+
|
9
|
+
tearDown() {
|
10
|
+
reset_env
|
11
|
+
}
|
12
|
+
|
13
|
+
test_it_finds_the_parent_directory_name() {
|
14
|
+
assertEquals "it finds the parent directory name" \
|
15
|
+
"auto-gemsets" "$(ag_parent_dir ${PWD}/Gemfile)"
|
16
|
+
}
|
17
|
+
|
18
|
+
SHUNIT_PARENT=$0 . $SHUNIT2
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
|
3
|
+
. ./test/helper.sh
|
4
|
+
|
5
|
+
setUp() {
|
6
|
+
clear_env
|
7
|
+
}
|
8
|
+
|
9
|
+
tearDown() {
|
10
|
+
reset_env
|
11
|
+
}
|
12
|
+
|
13
|
+
test_it_removes_a_directory_from_the_path() {
|
14
|
+
ag_remove_path '/ag/test/path'
|
15
|
+
assertNull " it removes a path from the path" \
|
16
|
+
"$(echo $PATH | grep "/ag/test/path")"
|
17
|
+
}
|
18
|
+
|
19
|
+
SHUNIT_PARENT=$0 . $SHUNIT2
|
@@ -0,0 +1,67 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
|
3
|
+
. ./test/helper.sh
|
4
|
+
|
5
|
+
setUp() {
|
6
|
+
clear_env
|
7
|
+
export AUTO_GEMSETS_REPORTING='off'
|
8
|
+
}
|
9
|
+
|
10
|
+
tearDown() {
|
11
|
+
reset_env
|
12
|
+
}
|
13
|
+
|
14
|
+
test_it_sets_gem_home_to_the_gemset_path() {
|
15
|
+
ag_set_gemset 'default'
|
16
|
+
assertEquals " it sets the GEM_HOME to the default gemset path" \
|
17
|
+
"${GEMSET_ROOT}/default" "$GEM_HOME"
|
18
|
+
}
|
19
|
+
|
20
|
+
test_it_sets_gem_path_to_the_default_gemset_path() {
|
21
|
+
ag_set_gemset 'default'
|
22
|
+
assertEquals " it sets the GEM_PATH to the default gemset path" \
|
23
|
+
"${GEMSET_ROOT}/default" "$GEM_PATH"
|
24
|
+
}
|
25
|
+
|
26
|
+
test_it_adds_the_gemset_bin_directory_to_the_path() {
|
27
|
+
ag_set_gemset 'default'
|
28
|
+
assertNotNull " it adds the gemset's bin directory to the path" \
|
29
|
+
"$(echo $PATH | grep "${GEM_HOME}/bin")"
|
30
|
+
}
|
31
|
+
|
32
|
+
test_it_adds_the_default_bin_directory_to_path_when_not_default() {
|
33
|
+
ag_set_gemset 'some_gemset'
|
34
|
+
assertNotNull " it adds the default gemset's bin directory to the path" \
|
35
|
+
"$(echo $PATH | grep "${GEMSET_ROOT}/default/bin")"
|
36
|
+
}
|
37
|
+
|
38
|
+
test_it_adds_the_default_gemset_to_the_gem_path() {
|
39
|
+
ag_set_gemset 'some_gemset'
|
40
|
+
|
41
|
+
assertEquals " it adds the default gemset to the GEM_PATH" \
|
42
|
+
"${GEMSET_ROOT}/some_gemset:${GEMSET_ROOT}/default" "$GEM_PATH"
|
43
|
+
}
|
44
|
+
|
45
|
+
test_it_sets_the_gemset_environment_variable() {
|
46
|
+
ag_set_gemset 'default'
|
47
|
+
assertEquals " it sets the GEMSET environment variable" \
|
48
|
+
"default" "$GEMSET"
|
49
|
+
}
|
50
|
+
|
51
|
+
test_it_sets_the_gem_root_variable() {
|
52
|
+
ag_set_gemset 'default'
|
53
|
+
assertEquals " it sets the GEM_ROOT environment variable" \
|
54
|
+
"${GEMSET_ROOT}/default" "$GEM_ROOT"
|
55
|
+
}
|
56
|
+
|
57
|
+
test_it_reports_the_new_gemset_change() {
|
58
|
+
export AUTO_GEMSETS_REPORTING='on'
|
59
|
+
assertEquals " it reports the new gemset change *default when default" \
|
60
|
+
"Now using default gemset via *default" "$(ag_set_gemset 'default')"
|
61
|
+
|
62
|
+
export GEMFILE="test"
|
63
|
+
assertEquals " it reports the new gemset change with the GEMFILE when NOT default" \
|
64
|
+
"Now using some_gemset gemset via test" "$(ag_set_gemset 'some_gemset')"
|
65
|
+
}
|
66
|
+
|
67
|
+
SHUNIT_PARENT=$0 . $SHUNIT2
|
@@ -0,0 +1,83 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
|
3
|
+
. ./test/helper.sh
|
4
|
+
|
5
|
+
PROJECT_DIR="$PWD/test/project"
|
6
|
+
|
7
|
+
setUp() {
|
8
|
+
clear_env
|
9
|
+
if [ ! -d "${GEMSET_ROOT}/project" ]; then
|
10
|
+
rm -Rf "${GEMSET_ROOT}/project"
|
11
|
+
fi
|
12
|
+
}
|
13
|
+
|
14
|
+
tearDown() {
|
15
|
+
reset_env
|
16
|
+
if [ ! -d "${GEMSET_ROOT}/project" ]; then
|
17
|
+
rm -Rf "${GEMSET_ROOT}/project"
|
18
|
+
fi
|
19
|
+
}
|
20
|
+
|
21
|
+
test_it_sets_the_gemfile_environment_variable() {
|
22
|
+
cd "$PROJECT_DIR"
|
23
|
+
auto_gemsets
|
24
|
+
|
25
|
+
assertEquals " it sets the gemfile environment variable" \
|
26
|
+
"${PROJECT_DIR}/Gemfile" "$GEMFILE"
|
27
|
+
}
|
28
|
+
|
29
|
+
test_it_sets_the_default_gemset_when_no_gemfile_is_present() {
|
30
|
+
cd "$HOME"
|
31
|
+
auto_gemsets
|
32
|
+
|
33
|
+
assertEquals " it sets the default when no Gemfile is present" \
|
34
|
+
"default" "$GEMSET"
|
35
|
+
|
36
|
+
assertEquals " it sets the GEM_HOME when no Gemfile is present" \
|
37
|
+
"${GEMSET_ROOT}/default" "$GEM_HOME"
|
38
|
+
|
39
|
+
assertEquals " it sets the GEM_HOME when no Gemfile is present" \
|
40
|
+
"${GEMSET_ROOT}/default" "$GEM_ROOT"
|
41
|
+
|
42
|
+
assertEquals " it sets the GEM_PATH when no Gemfile is present" \
|
43
|
+
"${GEMSET_ROOT}/default" "$GEM_PATH"
|
44
|
+
|
45
|
+
assertNotNull " it adds the gemset's bin directory to the path" \
|
46
|
+
"$(echo $PATH | grep "${GEMSET_ROOT}/default/bin")"
|
47
|
+
}
|
48
|
+
|
49
|
+
test_it_sets_the_gemset_when_a_gemfile_is_present() {
|
50
|
+
cd "$PROJECT_DIR"
|
51
|
+
auto_gemsets
|
52
|
+
|
53
|
+
assertEquals " it sets the gemset when a Gemfile is present" \
|
54
|
+
"project" "$GEMSET"
|
55
|
+
|
56
|
+
assertEquals " it sets the GEM_HOME when no Gemfile is present" \
|
57
|
+
"${GEMSET_ROOT}/project" "$GEM_HOME"
|
58
|
+
|
59
|
+
assertEquals " it sets the GEM_HOME when no Gemfile is present" \
|
60
|
+
"${GEMSET_ROOT}/project" "$GEM_ROOT"
|
61
|
+
|
62
|
+
assertEquals " it sets the GEM_PATH when no Gemfile is present" \
|
63
|
+
"${GEMSET_ROOT}/project:${GEMSET_ROOT}/default" "$GEM_PATH"
|
64
|
+
|
65
|
+
assertNotNull " it adds the gemset's bin directory to the path" \
|
66
|
+
"$(echo $PATH | grep "${GEMSET_ROOT}/default/bin")"
|
67
|
+
}
|
68
|
+
|
69
|
+
test_it_doesnt_do_anything_if_the_gemset_is_active() {
|
70
|
+
export GEMSET="project"
|
71
|
+
|
72
|
+
assertNull " it doesnt do anything if the gemset is active" \
|
73
|
+
"$(auto_gemsets)"
|
74
|
+
}
|
75
|
+
|
76
|
+
test_it_creates_a_gemset_directory_if_it_does_not_exist() {
|
77
|
+
auto_gemsets
|
78
|
+
|
79
|
+
assertTrue " it creates a gemset directory if it does not exist" \
|
80
|
+
"[ -d ${GEMSET_ROOT}/project ]"
|
81
|
+
}
|
82
|
+
|
83
|
+
SHUNIT_PARENT=$0 . $SHUNIT2
|
data/test/helper.sh
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
|
3
|
+
OLD_GEM_HOME=$GEM_HOME
|
4
|
+
OLD_GEM_PATH=$GEM_PATH
|
5
|
+
OLD_GEM_ROOT=$GEM_ROOT
|
6
|
+
OLD_GEMSET=$GEMSET
|
7
|
+
OLD_DEFAULT_GEMSET=$DEFAULT_GEMSET
|
8
|
+
OLD_GEMFILE=$GEMFILE
|
9
|
+
OLD_PATH=$PATH
|
10
|
+
OLD_PROMPT_COMMAND=$PROMPT_COMMAND
|
11
|
+
OLD_AUTO_GEMSETS_REPORTING=$AUTO_GEMSETS_REPORTING
|
12
|
+
|
13
|
+
clear_env() {
|
14
|
+
unset GEM_HOME
|
15
|
+
unset GEM_PATH
|
16
|
+
unset GEM_ROOT
|
17
|
+
unset GEMSET
|
18
|
+
unset DEFAULT_GEMSET
|
19
|
+
unset GEMFILE
|
20
|
+
unset PROMPT_COMMAND
|
21
|
+
unset AUTO_GEMSETS_REPORTING
|
22
|
+
mv "/usr/local/share/auto-gemsets" "/usr/local/share/auto-gemsets.bak"
|
23
|
+
|
24
|
+
if [ -f "${HOME}/.auto-gemsets" ]; then
|
25
|
+
mv "${HOME}/.auto-gemsets" "${HOME}/.auto-gemsets.bak"
|
26
|
+
fi
|
27
|
+
}
|
28
|
+
|
29
|
+
reset_env() {
|
30
|
+
rm -Rf "/usr/local/share/auto-gemsets"
|
31
|
+
mv "/usr/local/share/auto-gemsets.bak" "/usr/local/share/auto-gemsets"
|
32
|
+
if [ -f "${HOME}/.auto-gemsets.bak" ]; then
|
33
|
+
mv "${HOME}/.auto-gemsets.bak" "${HOME}/.auto-gemsets"
|
34
|
+
fi
|
35
|
+
export GEM_HOME=$OLD_GEM_HOME
|
36
|
+
export GEM_PATH=$OLD_GEM_PATH
|
37
|
+
export GEM_ROOT=$OLD_GEM_ROOT
|
38
|
+
export GEMSET=$OLD_GEMSET
|
39
|
+
export DEFAULT_GEMSET=$OLD_DEFAULT_GEMSET
|
40
|
+
export GEMFILE=$OLD_GEMFILE
|
41
|
+
export PATH=$OLD_PATH
|
42
|
+
export PROMPT_COMMAND=$OLD_PROMPT_COMMAND
|
43
|
+
export AUTO_GEMSETS_REPORTING=$OLD_AUTO_GEMSETS_REPORTING
|
44
|
+
}
|
45
|
+
|
46
|
+
[[ -z "$SHUNIT2" ]] && SHUNIT2=/usr/share/shunit2/shunit2
|
47
|
+
|
48
|
+
. ./lib/auto-gemsets/auto-gemsets.sh
|
49
|
+
|
50
|
+
setUp() { return; }
|
51
|
+
tearDown() { return; }
|
52
|
+
oneTimeTearDown() {
|
53
|
+
if [ "$__shunit_assertsFailed" -gt "0" ]; then
|
54
|
+
echo
|
55
|
+
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
56
|
+
echo "!!------------------------------------------------ FAILURE ------------------------------------------------!!"
|
57
|
+
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
58
|
+
fi
|
59
|
+
}
|
File without changes
|
data/test/runner
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.
|
4
|
+
version: 0.4.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: 2013-01-
|
12
|
+
date: 2013-01-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -129,11 +129,22 @@ files:
|
|
129
129
|
- auto-gemsets.gemspec
|
130
130
|
- bin/gemset
|
131
131
|
- lib/auto-gemsets.rb
|
132
|
+
- lib/auto-gemsets/.auto-gemsets
|
132
133
|
- lib/auto-gemsets/application.rb
|
133
|
-
- lib/auto-gemsets/
|
134
|
+
- lib/auto-gemsets/auto-gemsets.sh
|
135
|
+
- lib/auto-gemsets/default-gems.sh
|
134
136
|
- spec/application_spec.rb
|
135
137
|
- spec/auto-gemsets_spec.rb
|
136
138
|
- spec/spec_helper.rb
|
139
|
+
- test/ag_add_path_test.sh
|
140
|
+
- test/ag_init_test.sh
|
141
|
+
- test/ag_parent_dir_test.sh
|
142
|
+
- test/ag_remove_path_test.sh
|
143
|
+
- test/ag_set_gemset_test.sh
|
144
|
+
- test/auto_gemsets_test.sh
|
145
|
+
- test/helper.sh
|
146
|
+
- test/project/Gemfile
|
147
|
+
- test/runner
|
137
148
|
- travis.yml
|
138
149
|
homepage: http://github.com/daytonn/auto-gemsets
|
139
150
|
licenses:
|
@@ -150,7 +161,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
150
161
|
version: '0'
|
151
162
|
segments:
|
152
163
|
- 0
|
153
|
-
hash:
|
164
|
+
hash: 3197001320140692747
|
154
165
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
155
166
|
none: false
|
156
167
|
requirements:
|
@@ -1,174 +0,0 @@
|
|
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
|
-
|
12
|
-
ag_set_default_gemset() {
|
13
|
-
if [ -n "${DEFAULT_GEMSET}" ]; then
|
14
|
-
if [ ! "$GEM_PATH" == "${DEFAULT_GEMSET}" ]; then
|
15
|
-
DEFAULT=$( basename $DEFAULT_GEMSET )
|
16
|
-
fi
|
17
|
-
|
18
|
-
if [ -n "$GEMSET" ] && [ ! "$GEMSET" == "$DEFAULT" ]; then
|
19
|
-
ag_remove_path "${GEMSET_ROOT}/${GEMSET}/bin"
|
20
|
-
fi
|
21
|
-
|
22
|
-
DEFAULT_BIN_PATH="${DEFAULT_GEMSET}/bin"
|
23
|
-
|
24
|
-
export GEMSET="${DEFAULT}"
|
25
|
-
export GEM_HOME="$DEFAULT_GEMSET"
|
26
|
-
export GEMFILE="$DEFAULT_GEMSET"
|
27
|
-
export GEM_ROOT="$GEM_HOME"
|
28
|
-
export GEM_PATH="$GEM_HOME"
|
29
|
-
|
30
|
-
ag_add_path "$DEFAULT_BIN_PATH"
|
31
|
-
ag_using_gemset_via "*default"
|
32
|
-
fi
|
33
|
-
}
|
34
|
-
|
35
|
-
ag_using_gemset_via() {
|
36
|
-
if [ "$SILENT" == "off" ]; then
|
37
|
-
echo "Now using $GEMSET gemset via $1"
|
38
|
-
fi
|
39
|
-
}
|
40
|
-
|
41
|
-
ag_remove_path() {
|
42
|
-
NEW_PATH=""
|
43
|
-
IFS=':' read -a PATHS <<< "$PATH"
|
44
|
-
for p in "${PATHS[@]}"
|
45
|
-
do
|
46
|
-
if [ ! "$p" == "$1" ]; then
|
47
|
-
if [ -z "$NEW_PATH" ]; then
|
48
|
-
NEW_PATH="$p"
|
49
|
-
else
|
50
|
-
NEW_PATH="$NEW_PATH:$p"
|
51
|
-
fi
|
52
|
-
fi
|
53
|
-
done
|
54
|
-
export PATH="$NEW_PATH"
|
55
|
-
}
|
56
|
-
|
57
|
-
ag_add_path () {
|
58
|
-
if ! echo $PATH | egrep -q "(^|:)$1($|:)" ; then
|
59
|
-
if [ "$2" = "after" ] ; then
|
60
|
-
PATH=$PATH:$1
|
61
|
-
else
|
62
|
-
PATH=$1:$PATH
|
63
|
-
fi
|
64
|
-
|
65
|
-
export PATH
|
66
|
-
fi
|
67
|
-
}
|
68
|
-
|
69
|
-
auto_gemsets() {
|
70
|
-
local dir="$PWD"
|
71
|
-
|
72
|
-
until [[ -z "$dir" ]]; do
|
73
|
-
GEMFILE="$dir/Gemfile"
|
74
|
-
ag_get_parent_dirname
|
75
|
-
|
76
|
-
if [ "$GEMSET" == "$PARENT_DIR" ]; then
|
77
|
-
break
|
78
|
-
fi
|
79
|
-
|
80
|
-
if [ -f "$GEMFILE" ]; then
|
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
|
88
|
-
fi
|
89
|
-
|
90
|
-
dir="${dir%/*}"
|
91
|
-
done
|
92
|
-
}
|
93
|
-
|
94
|
-
ag_get_parent_dirname() {
|
95
|
-
if [ ! -z "$GEMFILE" ]; then
|
96
|
-
IFS='/' read -a gemfile_path_parts <<< "$GEMFILE"
|
97
|
-
PARENT_DIR="${gemfile_path_parts[${#gemfile_path_parts[@]}-2]}"
|
98
|
-
fi
|
99
|
-
}
|
100
|
-
|
101
|
-
ag_set_gemset() {
|
102
|
-
NEW_GEMSET="$1"
|
103
|
-
NEW_GEMSET_PATH="${GEMSET_ROOT}/${1}"
|
104
|
-
NEW_GEMSET_BIN_PATH="${NEW_GEMSET_PATH}/bin"
|
105
|
-
ag_remove_path "$GEMSET_BIN_PATH"
|
106
|
-
ag_create_gemset_if_missing "$NEW_GEMSET"
|
107
|
-
export GEMSET="$NEW_GEMSET"
|
108
|
-
export GEM_HOME="$NEW_GEMSET_PATH"
|
109
|
-
export GEM_ROOT="$NEW_GEMSET_PATH"
|
110
|
-
export GEM_PATH="$NEW_GEMSET_PATH:$DEFAULT_GEMSET"
|
111
|
-
|
112
|
-
ag_add_path "$DEFAULT_BIN_PATH"
|
113
|
-
ag_add_path "$NEW_GEMSET_BIN_PATH"
|
114
|
-
|
115
|
-
ag_using_gemset_via "$GEMFILE"
|
116
|
-
}
|
117
|
-
|
118
|
-
ag_create_gemset_if_missing() {
|
119
|
-
if [ ! -d "${GEMSET_ROOT}/${1}" ]; then
|
120
|
-
mkdir -p "${GEMSET_ROOT}/${1}" && echo "${1} created. run gem install bundler"
|
121
|
-
fi
|
122
|
-
}
|
123
|
-
|
124
|
-
default-gems() {
|
125
|
-
if [ -n "$1" ]; then
|
126
|
-
ag_silent "on"
|
127
|
-
G="$GEMSET"
|
128
|
-
ag_set_default_gemset
|
129
|
-
gem "$@"
|
130
|
-
ag_set_gemset "$G"
|
131
|
-
ag_silent "off"
|
132
|
-
else
|
133
|
-
cat <<EOF
|
134
|
-
The defalt-gems command is an auto-gems utility to manage gems
|
135
|
-
in the default* gemset from within other gemsets.
|
136
|
-
|
137
|
-
Usage:
|
138
|
-
------
|
139
|
-
|
140
|
-
default-gems (command) [options]
|
141
|
-
|
142
|
-
Examples:
|
143
|
-
---------
|
144
|
-
|
145
|
-
default-gems install mygem
|
146
|
-
default-gems uninstall mygem
|
147
|
-
default-gems list
|
148
|
-
|
149
|
-
`default-gems` accepts any valid `gem` command, with any valid arguments and options.
|
150
|
-
It is simply a pass-through to the `gem` command with the context of the default gemset.
|
151
|
-
EOF
|
152
|
-
|
153
|
-
fi
|
154
|
-
}
|
155
|
-
|
156
|
-
# Create a GEMSET_ROOT if none is set
|
157
|
-
if [ ! -n "$GEMSET_ROOT" ]; then
|
158
|
-
export GEMSET_ROOT="${HOME}/.gemsets"
|
159
|
-
fi
|
160
|
-
|
161
|
-
# If ZSH add precommand
|
162
|
-
if [[ -n "$ZSH_VERSION" ]]; then
|
163
|
-
precmd_functions+=("auto_gemsets")
|
164
|
-
else
|
165
|
-
# If there's already a prompt command,
|
166
|
-
if [ -n "$PROMPT_COMMAND" ]; then
|
167
|
-
# check if it's already in the PROMPT
|
168
|
-
if [ -z "$(echo $PROMPT_COMMAND | grep auto_gemsets)" ] ; then
|
169
|
-
PROMPT_COMMAND="$PROMPT_COMMAND; auto_gemsets"
|
170
|
-
fi
|
171
|
-
else
|
172
|
-
PROMPT_COMMAND="auto_gemsets"
|
173
|
-
fi
|
174
|
-
fi
|