rubygems-sandbox 1.0.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.
@@ -0,0 +1 @@
1
+ 6Fm>�������̠��Y�e'����J҄1�ʹۇ����� ����18R����}# �y�i����榗6�Q(��7�1��ۅt���F����'�n���Zj��3N48�4�����QE~E�C���b������b^�L����*������IF��@�#{*6eV�����O��\���31�٪�4��^ ��մ�q����ĵz��Y�����,x��A��I�V�D=ޗf�G��Uመ i���p�
@@ -0,0 +1,26 @@
1
+ # -*- ruby -*-
2
+
3
+ require "autotest/restart"
4
+
5
+ Autotest.add_hook :initialize do |at|
6
+ at.testlib = "minitest/autorun"
7
+ at.add_exception "tmp"
8
+
9
+ # at.extra_files << "../some/external/dependency.rb"
10
+ #
11
+ # at.libs << ":../some/external"
12
+ #
13
+ # at.add_exception "vendor"
14
+ #
15
+ # at.add_mapping(/dependency.rb/) do |f, _|
16
+ # at.files_matching(/test_.*rb$/)
17
+ # end
18
+ #
19
+ # %w(TestA TestB).each do |klass|
20
+ # at.extra_class_map[klass] = "test/test_misc.rb"
21
+ # end
22
+ end
23
+
24
+ # Autotest.add_hook :run_command do |at|
25
+ # system "rake build"
26
+ # end
@@ -0,0 +1,6 @@
1
+ === 1.0.0 / 2011-07-20
2
+
3
+ * 1 major enhancement
4
+
5
+ * Birthday!
6
+
@@ -0,0 +1,7 @@
1
+ .autotest
2
+ History.txt
3
+ Manifest.txt
4
+ README.txt
5
+ Rakefile
6
+ lib/rubygems/commands/sandbox_command.rb
7
+ lib/rubygems_plugin.rb
@@ -0,0 +1,69 @@
1
+ = rubygems-sandbox
2
+
3
+ home :: https://github.com/seattlerb/rubygems-sandbox
4
+ rdoc :: http://seattlerb.rubyforge.org/rubygems-sandbox
5
+
6
+ == DESCRIPTION:
7
+
8
+ The sandbox plugin for rubygems helps you manage your command-line
9
+ tools and their dependencies. Sandboxed gems are installed in their
10
+ own private rubygem repositories with all of their dependencies. This
11
+ means that you don't have to have a rat's nest of gems in your global
12
+ repository in order to run popular command-tools like rdoc, flog,
13
+ flay, rcov, etc.
14
+
15
+ gem sandbox has the following sub-commands:
16
+
17
+ * install gem_name ... - install 1 or more gems
18
+ * plugin gem_name plugin_name ... - install a gem and plugins for it
19
+ * remove gem_name ... - uninstall 1 or more gems
20
+ * help - show this output
21
+
22
+ Once you install gem sandbox will output something like:
23
+
24
+ Copy the following scripts to any directory in your path to use them:
25
+
26
+ cp /Users/USER/.gem/sandboxes/GEM/bin/TOOL _in_your_$PATH_
27
+
28
+ Copy the scripts to a directory in your path (eg ~/bin or /usr/bin)
29
+ and you're good to go.
30
+
31
+ == SYNOPSIS:
32
+
33
+ % gem uninstall flog flay ruby_parser sexp_processor
34
+ % gem sandbox install flog flay
35
+ % cp ~/.gem/sandboxes/*/bin/* ~/bin
36
+ % flay whatever
37
+
38
+ == REQUIREMENTS:
39
+
40
+ * rubygems 1.4 or higher
41
+
42
+ == INSTALL:
43
+
44
+ * sudo gem install rubygems-sandbox
45
+
46
+ == LICENSE:
47
+
48
+ (The MIT License)
49
+
50
+ Copyright (c) Ryan Davis, seattle.rb
51
+
52
+ Permission is hereby granted, free of charge, to any person obtaining
53
+ a copy of this software and associated documentation files (the
54
+ 'Software'), to deal in the Software without restriction, including
55
+ without limitation the rights to use, copy, modify, merge, publish,
56
+ distribute, sublicense, and/or sell copies of the Software, and to
57
+ permit persons to whom the Software is furnished to do so, subject to
58
+ the following conditions:
59
+
60
+ The above copyright notice and this permission notice shall be
61
+ included in all copies or substantial portions of the Software.
62
+
63
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
64
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
65
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
66
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
67
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
68
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
69
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,17 @@
1
+ # -*- ruby -*-
2
+
3
+ require "rubygems"
4
+ require "hoe"
5
+
6
+ Hoe.plugin :isolate
7
+ Hoe.plugin :seattlerb
8
+
9
+ Hoe.spec "rubygems-sandbox" do
10
+ developer "Ryan Davis", "ryand-ruby@zenspider.com"
11
+
12
+ self.rubyforge_name = "seattlerb"
13
+
14
+ require_rubygems_version "~> 1.4"
15
+ end
16
+
17
+ # vim: syntax=ruby
@@ -0,0 +1,147 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'rubygems/command'
3
+ require 'rubygems/dependency_installer'
4
+
5
+ ##
6
+ # Gem command to "sandbox" command-line tools into their own private
7
+ # gem repos but with a globally command-line wrapper.
8
+
9
+ class Gem::DependencyInstaller
10
+ attr_accessor :bin_dir
11
+ end
12
+
13
+ class Gem::Commands::SandboxCommand < Gem::Command
14
+ VERSION = '1.0.0'
15
+
16
+ def initialize
17
+ defaults = Gem::DependencyInstaller::DEFAULT_OPTIONS.merge(
18
+ :generate_rdoc => false,
19
+ :generate_ri => false,
20
+ :format_executable => false,
21
+ :version => Gem::Requirement.default
22
+ )
23
+
24
+ super("sandbox", "Privately install a command-line tool", defaults)
25
+
26
+ @scripts = []
27
+ end
28
+
29
+
30
+ def arguments # :nodoc:
31
+ ['SUBCOMMAND one of: install, update, plugin, remove, help',
32
+ 'GEMNAME name of a gem to sandbox'].join "\n"
33
+ end
34
+
35
+ def usage # :nodoc:
36
+ "#{program_name} SUBCOMMAND GEMNAME(S)"
37
+ end
38
+
39
+ def description
40
+ <<-EOF
41
+
42
+ `gem sandbox` helps you manage your command-line tools and their
43
+ dependencies. Sandboxed gems are installed in their own private
44
+ repositories with their dependencies. This means that you don't have
45
+ to have a rats nest of gems in your global repository in order to run
46
+ popular command-tools like rdoc, flog, flay, rcov, etc.
47
+
48
+ `gem sandbox` has the following sub-commands:
49
+
50
+ * install gem_name ... - install 1 or more gems
51
+ * plugin gem_name plugin_name ... - install a gem and plugins for it
52
+ * uninstall gem_name ... - uninstall 1 or more gems
53
+ * help - show this output
54
+
55
+ Once you install `gem sandbox` will output something like:
56
+
57
+ Copy the following scripts to any directory in your path to use them:
58
+
59
+ cp /Users/USER/.gem/sandboxes/TOOL/bin/TOOL _in_your_$PATH_
60
+
61
+ Copy the scripts to a directory in your path (eg ~/bin or /usr/bin)
62
+ and you're good to go.
63
+ EOF
64
+ end
65
+
66
+ def execute
67
+ cmd = options[:args].shift
68
+
69
+ case cmd
70
+ when "install" then
71
+ install
72
+ when "plugin" then
73
+ plugin
74
+ when "uninstall" then
75
+ abort "not implemented yet"
76
+ when "help", "usage" then
77
+ show_help
78
+ abort
79
+ else
80
+ alert_error "Unknown sandbox subcommand: #{cmd}"
81
+ show_help
82
+ abort
83
+ end
84
+ end
85
+
86
+ def install
87
+ get_all_gem_names.each do |gem_name|
88
+ install_gem gem_name
89
+ end
90
+
91
+ list_scripts
92
+ end
93
+
94
+ def plugin
95
+ gem_name, *plugins = options[:args]
96
+ dir = sandbox_dir gem_name
97
+
98
+ install_gem gem_name, dir
99
+
100
+ plugins.each do |plugin_name|
101
+ inst = Gem::DependencyInstaller.new options.merge(:install_dir => dir)
102
+ inst.install plugin_name, options[:version]
103
+ end
104
+
105
+ list_scripts
106
+ end
107
+
108
+ def list_scripts
109
+ say ""
110
+ say "Copy the following scripts to any directory in your path to use them:"
111
+ say ""
112
+ say "cp #{@scripts.join ' '} _in_your_$PATH_"
113
+ end
114
+
115
+ def sandbox_dir gem_name
116
+ File.join Gem.user_home, '.gem', "sandboxes", gem_name
117
+ end
118
+
119
+ def install_gem gem_name, dir = sandbox_dir(gem_name)
120
+ # Forces reset of known installed gems so subsequent repeats work
121
+ Gem.use_paths nil, nil
122
+
123
+ inst = Gem::DependencyInstaller.new options.merge(:install_dir => dir)
124
+ inst.install gem_name, options[:version]
125
+
126
+ spec = inst.installed_gems.find { |s| s.name == gem_name }
127
+ rewrite_executables dir, spec
128
+
129
+ say "Successfully installed #{gem_name}"
130
+ end
131
+
132
+ def rewrite_executables dir, spec
133
+ spec.executables.each do |filename|
134
+ path = File.join dir, "bin", filename
135
+ env = "ENV['GEM_HOME'] = ENV['GEM_PATH'] = #{dir.inspect}"
136
+
137
+ script = File.read path
138
+ script.sub!(/require 'rubygems'/, "#{env}\n\\&")
139
+
140
+ File.open path, "w" do |f|
141
+ f.write script
142
+ end
143
+
144
+ @scripts << path
145
+ end
146
+ end
147
+ end
@@ -0,0 +1,3 @@
1
+ require 'rubygems/command_manager'
2
+
3
+ Gem::CommandManager.instance.register_command :sandbox
metadata ADDED
@@ -0,0 +1,148 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rubygems-sandbox
3
+ version: !ruby/object:Gem::Version
4
+ hash: 23
5
+ prerelease:
6
+ segments:
7
+ - 1
8
+ - 0
9
+ - 0
10
+ version: 1.0.0
11
+ platform: ruby
12
+ authors:
13
+ - Ryan Davis
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain:
17
+ - |
18
+ -----BEGIN CERTIFICATE-----
19
+ MIIDPjCCAiagAwIBAgIBADANBgkqhkiG9w0BAQUFADBFMRMwEQYDVQQDDApyeWFu
20
+ ZC1ydWJ5MRkwFwYKCZImiZPyLGQBGRYJemVuc3BpZGVyMRMwEQYKCZImiZPyLGQB
21
+ GRYDY29tMB4XDTA5MDMwNjE4NTMxNVoXDTEwMDMwNjE4NTMxNVowRTETMBEGA1UE
22
+ AwwKcnlhbmQtcnVieTEZMBcGCgmSJomT8ixkARkWCXplbnNwaWRlcjETMBEGCgmS
23
+ JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALda
24
+ b9DCgK+627gPJkB6XfjZ1itoOQvpqH1EXScSaba9/S2VF22VYQbXU1xQXL/WzCkx
25
+ taCPaLmfYIaFcHHCSY4hYDJijRQkLxPeB3xbOfzfLoBDbjvx5JxgJxUjmGa7xhcT
26
+ oOvjtt5P8+GSK9zLzxQP0gVLS/D0FmoE44XuDr3iQkVS2ujU5zZL84mMNqNB1znh
27
+ GiadM9GHRaDiaxuX0cIUBj19T01mVE2iymf9I6bEsiayK/n6QujtyCbTWsAS9Rqt
28
+ qhtV7HJxNKuPj/JFH0D2cswvzznE/a5FOYO68g+YCuFi5L8wZuuM8zzdwjrWHqSV
29
+ gBEfoTEGr7Zii72cx+sCAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
30
+ HQYDVR0OBBYEFEfFe9md/r/tj/Wmwpy+MI8d9k/hMA0GCSqGSIb3DQEBBQUAA4IB
31
+ AQAY59gYvDxqSqgC92nAP9P8dnGgfZgLxP237xS6XxFGJSghdz/nI6pusfCWKM8m
32
+ vzjjH2wUMSSf3tNudQ3rCGLf2epkcU13/rguI88wO6MrE0wi4ZqLQX+eZQFskJb/
33
+ w6x9W1ur8eR01s397LSMexySDBrJOh34cm2AlfKr/jokKCTwcM0OvVZnAutaovC0
34
+ l1SVZ0ecg88bsWHA0Yhh7NFxK1utWoIhtB6AFC/+trM0FQEB/jZkIS8SaNzn96Rl
35
+ n0sZEf77FLf5peR8TP/PtmIg7Cyqz23sLM4mCOoTGIy5OcZ8TdyiyINUHtb5ej/T
36
+ FBHgymkyj/AOSqKRIpXPhjC6
37
+ -----END CERTIFICATE-----
38
+
39
+ date: 2011-07-21 00:00:00 Z
40
+ dependencies:
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ prerelease: false
44
+ requirement: &id001 !ruby/object:Gem::Requirement
45
+ none: false
46
+ requirements:
47
+ - - ~>
48
+ - !ruby/object:Gem::Version
49
+ hash: 5
50
+ segments:
51
+ - 2
52
+ - 3
53
+ version: "2.3"
54
+ type: :development
55
+ version_requirements: *id001
56
+ - !ruby/object:Gem::Dependency
57
+ name: hoe
58
+ prerelease: false
59
+ requirement: &id002 !ruby/object:Gem::Requirement
60
+ none: false
61
+ requirements:
62
+ - - ~>
63
+ - !ruby/object:Gem::Version
64
+ hash: 23
65
+ segments:
66
+ - 2
67
+ - 10
68
+ version: "2.10"
69
+ type: :development
70
+ version_requirements: *id002
71
+ description: |-
72
+ The sandbox plugin for rubygems helps you manage your command-line
73
+ tools and their dependencies. Sandboxed gems are installed in their
74
+ own private rubygem repositories with all of their dependencies. This
75
+ means that you don't have to have a rat's nest of gems in your global
76
+ repository in order to run popular command-tools like rdoc, flog,
77
+ flay, rcov, etc.
78
+
79
+ gem sandbox has the following sub-commands:
80
+
81
+ * install gem_name ... - install 1 or more gems
82
+ * plugin gem_name plugin_name ... - install a gem and plugins for it
83
+ * remove gem_name ... - uninstall 1 or more gems
84
+ * help - show this output
85
+
86
+ Once you install gem sandbox will output something like:
87
+
88
+ Copy the following scripts to any directory in your path to use them:
89
+
90
+ cp /Users/USER/.gem/sandboxes/GEM/bin/TOOL _in_your_$PATH_
91
+
92
+ Copy the scripts to a directory in your path (eg ~/bin or /usr/bin)
93
+ and you're good to go.
94
+ email:
95
+ - ryand-ruby@zenspider.com
96
+ executables: []
97
+
98
+ extensions: []
99
+
100
+ extra_rdoc_files:
101
+ - History.txt
102
+ - Manifest.txt
103
+ - README.txt
104
+ files:
105
+ - .autotest
106
+ - History.txt
107
+ - Manifest.txt
108
+ - README.txt
109
+ - Rakefile
110
+ - lib/rubygems/commands/sandbox_command.rb
111
+ - lib/rubygems_plugin.rb
112
+ homepage: https://github.com/seattlerb/rubygems-sandbox
113
+ licenses: []
114
+
115
+ post_install_message:
116
+ rdoc_options:
117
+ - --main
118
+ - README.txt
119
+ require_paths:
120
+ - lib
121
+ required_ruby_version: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ hash: 3
127
+ segments:
128
+ - 0
129
+ version: "0"
130
+ required_rubygems_version: !ruby/object:Gem::Requirement
131
+ none: false
132
+ requirements:
133
+ - - ~>
134
+ - !ruby/object:Gem::Version
135
+ hash: 7
136
+ segments:
137
+ - 1
138
+ - 4
139
+ version: "1.4"
140
+ requirements: []
141
+
142
+ rubyforge_project: seattlerb
143
+ rubygems_version: 1.8.5
144
+ signing_key:
145
+ specification_version: 3
146
+ summary: The sandbox plugin for rubygems helps you manage your command-line tools and their dependencies
147
+ test_files: []
148
+
@@ -0,0 +1,3 @@
1
+ ���b�5b���ad0HkZx�J_��3ч�4��AB��b���$��� ;��IPbNyqJ�$d��L��;d<��*��$2K__�
2
+ B�<���6C����cN��RFe�6W�-�<��]�`6Z���]�PtL��Wzz(:�]���p�R��|R���m9B���Q�a��
3
+ �����M����M�*��4=�~�\�|��#���Ĭ�$�b�����3 ����c0�3b��I���蹂���X�?�˞sx�%4�R