_vm 0.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.
- data.tar.gz.sig +2 -0
- data/.gitmodules +3 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +10 -0
- data/README.md +30 -0
- data/_ruby +14 -0
- data/manager.rb +63 -0
- data/plugin/list.rb +20 -0
- data/plugin/ruby/use.rb +12 -0
- data/plugin/set.rb +18 -0
- metadata +82 -0
- metadata.gz.sig +0 -0
data.tar.gz.sig
ADDED
data/.gitmodules
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
data/README.md
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
_vm
|
2
|
+
===
|
3
|
+
|
4
|
+
A generic version manager.
|
5
|
+
|
6
|
+
So far, I've generically reimplemented [chruby][1]. The only point of this
|
7
|
+
experiment is to see whether or not machine generated posix shell is even sane.
|
8
|
+
|
9
|
+
Requires [shell-proxy][2] which is so alpha it's not even really published.
|
10
|
+
Pull it down and stick it in your load path.
|
11
|
+
|
12
|
+
If you want to play with it in it's current encarnation, you would want to do something like
|
13
|
+
|
14
|
+
```bash
|
15
|
+
|
16
|
+
# In zsh, I'd love to know how to do this in bash:
|
17
|
+
emulate sh -c "`ruby _ruby`"
|
18
|
+
|
19
|
+
# in a posix compatible sh
|
20
|
+
|
21
|
+
eval "`ruby _ruby`"
|
22
|
+
|
23
|
+
```
|
24
|
+
|
25
|
+
If you want to do this often, you shouldn't use rubygems and instead shim your
|
26
|
+
`RUBY_PATH` directly to shell-proxy, rubygems lookups are slow enough that you
|
27
|
+
don't want to do them every time.
|
28
|
+
|
29
|
+
[1]: https://github.com/postmodern/chruby
|
30
|
+
[2]: https://github.com/richo/shell-proxy
|
data/_ruby
ADDED
data/manager.rb
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
if File.exists? (shell_proxy_path = File.expand_path("../shell-proxy/lib", __FILE__))
|
2
|
+
$:.unshift shell_proxy_path
|
3
|
+
end
|
4
|
+
require 'shell-proxy'
|
5
|
+
|
6
|
+
UNDERSCORE_VM_VERSION = "0.0.0"
|
7
|
+
|
8
|
+
module Plugin
|
9
|
+
def self.uuid
|
10
|
+
@current_id ||= 0
|
11
|
+
@current_id += 1
|
12
|
+
:"unique_plugin_method_#{@current_id}"
|
13
|
+
end
|
14
|
+
module Ruby
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
Dir[File.expand_path("../plugin/**/*.rb", __FILE__)].each do |f|
|
19
|
+
require f
|
20
|
+
end
|
21
|
+
|
22
|
+
class Manager < ShellProxy
|
23
|
+
@@plugins = Hash.new { |h, k| h[k] = Array.new }
|
24
|
+
|
25
|
+
def self.add_hook(to, &block)
|
26
|
+
uuid = Plugin.uuid
|
27
|
+
@@plugins[to] << uuid
|
28
|
+
define_method(uuid, &block)
|
29
|
+
end
|
30
|
+
|
31
|
+
attr_reader :name
|
32
|
+
def initialize(name)
|
33
|
+
@name = name
|
34
|
+
end
|
35
|
+
|
36
|
+
def build(io = nil)
|
37
|
+
__main__(io) do
|
38
|
+
def for_all(name, iter, &block)
|
39
|
+
__for(bare("${__#{name}_LIST}"), iter, &block)
|
40
|
+
end
|
41
|
+
build_main
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def build_main
|
46
|
+
__function("_#{name}") do
|
47
|
+
__case(raw("$1")) do |c|
|
48
|
+
c.when("-h|--help") do
|
49
|
+
echo raw("usage: _#{name} [version] [opts]")
|
50
|
+
end
|
51
|
+
c.when("-v|--version") do
|
52
|
+
echo raw("_#{name} version #{UNDERSCORE_VM_VERSION}")
|
53
|
+
end
|
54
|
+
c.when("system") do
|
55
|
+
__eval("_#{name}_reset")
|
56
|
+
end
|
57
|
+
@@plugins[:main_case].each do |plugin|
|
58
|
+
self.send(plugin, c)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
data/plugin/list.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
module Plugin::List
|
2
|
+
def self.included(mod)
|
3
|
+
mod.add_hook(:main_case) do |c|
|
4
|
+
c.when("") do
|
5
|
+
local bare("star")
|
6
|
+
for_all(name, "i") do
|
7
|
+
__if(raw("[[ \"$i\" == $#{name}_ROOT ]]")) do |ci|
|
8
|
+
ci.then do
|
9
|
+
__eval('star="*"')
|
10
|
+
end
|
11
|
+
ci.else do
|
12
|
+
__eval('star=" "')
|
13
|
+
end
|
14
|
+
end
|
15
|
+
echo raw(' $star $(basename $i)')
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/plugin/ruby/use.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
module Plugin::Ruby::Use
|
2
|
+
def self.included(mod)
|
3
|
+
mod.add_hook(:toplevel) do
|
4
|
+
__function("_#{name}_use") do
|
5
|
+
__export("#{name}_ROOT", raw("$1"))
|
6
|
+
__export("RUBYOPT", raw("$2"))
|
7
|
+
|
8
|
+
__export("PATH", raw("${#{name}_ROOT}/bin:$PATH"))
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
data/plugin/set.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
module Plugin::Set
|
2
|
+
def self.included(mod)
|
3
|
+
mod.add_hook(:main_case) do |c|
|
4
|
+
c.when("*") do
|
5
|
+
for_all(name, "i") do
|
6
|
+
__if(raw("[[ `basename \"$i\"` == *$1* ]]")) do |ci|
|
7
|
+
ci.then do
|
8
|
+
shift
|
9
|
+
__eval("_#{name}_use \"$i\" \"$*\"")
|
10
|
+
__return(raw("$?"))
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
echo raw("_#{name}: unknown #{name}: $1")
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
metadata
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: _vm
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Richo Healey
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain:
|
12
|
+
- !binary |-
|
13
|
+
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURORENDQWh5Z0F3SUJB
|
14
|
+
Z0lCQURBTkJna3Foa2lHOXcwQkFRVUZBREJBTVE0d0RBWURWUVFEREFWeWFX
|
15
|
+
Tm8KYnpFWk1CY0dDZ21TSm9tVDhpeGtBUmtXQ1hCemVXTm9NSFJwYXpFVE1C
|
16
|
+
RUdDZ21TSm9tVDhpeGtBUmtXQTI1bApkREFlRncweE1qRXdNall4TXpNMU1U
|
17
|
+
WmFGdzB4TXpFd01qWXhNek0xTVRaYU1FQXhEakFNQmdOVkJBTU1CWEpwClky
|
18
|
+
aHZNUmt3RndZS0NaSW1pWlB5TEdRQkdSWUpjSE41WTJnd2RHbHJNUk13RVFZ
|
19
|
+
S0NaSW1pWlB5TEdRQkdSWUQKYm1WME1JSUJJakFOQmdrcWhraUc5dzBCQVFF
|
20
|
+
RkFBT0NBUThBTUlJQkNnS0NBUUVBeEJ5Y1ZYYU1QMWpmWHRGTwpqL3E4SEQ1
|
21
|
+
WGU1Lzl1K29kK0lSYUJDNUdDZnRPVlI3WG13T04vTThoVms5ZmRtSG5TYzhI
|
22
|
+
RGNBclNzVE55RHlJCitnck1YVDBUU3pkNnpydUc4eG5IWlNqR0NvNmd4cHZo
|
23
|
+
YnBMZzZtRk9WaldCTXQwL2RWK3R6ZlNOZENJK3NYaUgKYW1Zem14aWJFUVBN
|
24
|
+
MXhnWlBwaFV1RURkcldzMUNPVmxBWk80ekEyVTZYYUZHVlhLQjRDT1VkeGVI
|
25
|
+
bGNoV0g3dApPR1J2OFFBcTZZRG0wUkRKYXlyTTA5MmJ2UUZXSFE0anJ6MUxp
|
26
|
+
a0J1c2lJYlVMOGFnYmNMVVBLYXc3VVFDWWEvCmFZMUZEQ0pGTEZ1SmhUaGdS
|
27
|
+
dWZGSDB0N09XclRVYUJzQ0tqK05kSnZwMlk3emNQOTFaV1FhZll0WTR2enQ0
|
28
|
+
RzQKZDU3VHdRSURBUUFCb3prd056QUpCZ05WSFJNRUFqQUFNQjBHQTFVZERn
|
29
|
+
UVdCQlEvRitqak9lcVBveTNyWks5QQplaXBqR1dpQVpUQUxCZ05WSFE4RUJB
|
30
|
+
TUNCTEF3RFFZSktvWklodmNOQVFFRkJRQURnZ0VCQUJoa3drMTVUU3h0ClFO
|
31
|
+
azY5SFd6ckFObjRjcm9MVjN5VVBXYzdUTDZJU25nRzUxRytwaUF1cS96a2Q1
|
32
|
+
UVhpcmExZnBna284N003b3kKMElIRGFsc0pGR3ZQQUFhNnJZSTRQcG1jZUhv
|
33
|
+
UDl1bzhpRktpNEhRZDJIanFqR3dKM2ZzcnpTNkdzYWhiaDFRcwpNd1JMVkJ5
|
34
|
+
N1RWMkNiMDhRVWxCOG85TjRWR2dTaGdsN3RnRlZXQ1UrWFZVQmM4WGZmcVRs
|
35
|
+
aE9iU0N6U0taNXRaCm51OHViQkV2RncwdXpHSkdRc0RoajFieHlpNUR1Yksy
|
36
|
+
WE94VTdHci9meUJWeHlzOUUwV01VUEVldDZseis2bGEKRVpvb0RGQTRZbU1J
|
37
|
+
Zlc4RnZqMi9UM1Yvc0wxdkpTRENkVHY3RUNkb1g1c25RbVR4RDlwRnNVbXhM
|
38
|
+
ZmlKL01GTQppaXcrT1B0dmxzST0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0t
|
39
|
+
LQo=
|
40
|
+
date: 2013-04-18 00:00:00.000000000 Z
|
41
|
+
dependencies: []
|
42
|
+
description: Generic version manager
|
43
|
+
email:
|
44
|
+
- richo@psych0tik.net
|
45
|
+
executables: []
|
46
|
+
extensions: []
|
47
|
+
extra_rdoc_files: []
|
48
|
+
files:
|
49
|
+
- .gitmodules
|
50
|
+
- Gemfile
|
51
|
+
- Gemfile.lock
|
52
|
+
- README.md
|
53
|
+
- _ruby
|
54
|
+
- manager.rb
|
55
|
+
- plugin/list.rb
|
56
|
+
- plugin/ruby/use.rb
|
57
|
+
- plugin/set.rb
|
58
|
+
homepage: http://github.com/richo/_vm
|
59
|
+
licenses: []
|
60
|
+
post_install_message:
|
61
|
+
rdoc_options: []
|
62
|
+
require_paths:
|
63
|
+
- .
|
64
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
|
+
none: false
|
72
|
+
requirements:
|
73
|
+
- - ! '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
requirements: []
|
77
|
+
rubyforge_project:
|
78
|
+
rubygems_version: 1.8.24
|
79
|
+
signing_key:
|
80
|
+
specification_version: 3
|
81
|
+
summary: Generic version manager
|
82
|
+
test_files: []
|
metadata.gz.sig
ADDED
Binary file
|