roll 0.8.0 → 1.1.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/{LICENSE → COPYING} +1 -1
- data/HISTORY +62 -0
- data/README.rdoc +169 -0
- data/TODO +4 -0
- data/bin/roll +3 -44
- data/lib/oll.rb +1 -2
- data/lib/roll.rb +87 -0
- data/lib/roll/command.rb +207 -0
- data/lib/roll/config.rb +80 -0
- data/lib/roll/environment.rb +317 -0
- data/lib/roll/errors.rb +13 -0
- data/lib/roll/kernel.rb +41 -0
- data/lib/roll/ledger.rb +299 -0
- data/lib/roll/library.rb +241 -558
- data/lib/roll/locals.rb +96 -0
- data/lib/roll/metadata.rb +112 -0
- data/lib/roll/original.rb +10 -0
- data/lib/roll/version.rb +91 -101
- data/meta/active +1 -0
- data/meta/authors +1 -0
- data/meta/contact +1 -0
- data/meta/created +1 -0
- data/meta/description +5 -0
- data/meta/homepage +1 -0
- data/meta/maintainer +1 -0
- data/meta/name +1 -0
- data/meta/repository +1 -0
- data/meta/ruby +2 -0
- data/meta/suite +1 -0
- data/meta/summary +1 -0
- data/meta/version +1 -0
- data/script/rdoc +4 -0
- data/script/setup +1344 -0
- data/script/test +23 -0
- data/test/benchmarks/vsgems.rb +11 -0
- data/test/benchmarks/vsgems_bm.rb +17 -0
- data/test/demonstrations/01_library.rdoc +33 -0
- data/test/demonstrations/04_version.rdoc +56 -0
- data/test/fixtures/env.list +1 -0
- data/{demo/sample → test/fixtures}/inspect.rb +0 -0
- data/test/fixtures/tryme/1.0/lib/tryme.rb +1 -0
- data/test/fixtures/tryme/1.0/meta/homepage +1 -0
- data/test/fixtures/tryme/1.0/meta/name +1 -0
- data/test/fixtures/tryme/1.0/meta/version +1 -0
- data/test/fixtures/tryme/1.1/lib/tryme.rb +1 -0
- data/test/fixtures/tryme/1.1/meta/homepage +1 -0
- data/test/fixtures/tryme/1.1/meta/name +1 -0
- data/test/fixtures/tryme/1.1/meta/version +1 -0
- data/test/{test_version.rb → unit/version_test.rb} +21 -21
- data/test/unitcases/version_case.rb +69 -0
- metadata +102 -65
- data/README +0 -17
- data/demo/bench/bench_load.rb +0 -7
- data/demo/sample/tryme/1.0/lib/tryme.rb +0 -1
- data/demo/sample/tryme/1.1/lib/tryme.rb +0 -1
- data/lib/roll/attributes.rb +0 -72
- data/lib/roll/package.rb +0 -300
- data/lib/roll/remote.rb +0 -37
- data/meta/ROLL-0.8.0.roll +0 -21
- data/task/rdoc +0 -9
- data/task/setup +0 -1616
- data/task/test +0 -5
- data/test/test_library.rb +0 -10
data/{LICENSE → COPYING}
RENAMED
data/HISTORY
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
= RELEASE HISTORY
|
2
|
+
|
3
|
+
== 1.0.0 / 2010-02-11
|
4
|
+
|
5
|
+
Roll is finally ready for the masses. This release overhauls
|
6
|
+
the underlying system, which is now blazing fast, supports
|
7
|
+
customizable library environments, and banashes all traces
|
8
|
+
of package management to the domain of other tools.
|
9
|
+
|
10
|
+
Changes:
|
11
|
+
|
12
|
+
* Overhauled the entire underlying system.
|
13
|
+
* Start-up time is blazing fast, loading's is pretty good too.
|
14
|
+
* Metadata uses POM standard, although not dependent (yet?).
|
15
|
+
* Environments provide selectable sets of available libraries.
|
16
|
+
|
17
|
+
|
18
|
+
== 0.9.4 / 2008-06-05
|
19
|
+
|
20
|
+
The .roll file is no longer used. Instead Rolls is now
|
21
|
+
using a VERSION file combined with meta/ entries for
|
22
|
+
loadpath and dependencies (ie. requires).
|
23
|
+
|
24
|
+
Changes:
|
25
|
+
|
26
|
+
* VERSION and meta/ entries are used instead of '.roll'.
|
27
|
+
|
28
|
+
|
29
|
+
== 0.9.3 / 2007-02-10
|
30
|
+
|
31
|
+
Changes:
|
32
|
+
|
33
|
+
* Change roll file format and name. It is now .roll.
|
34
|
+
* Relative require with #use should now work.
|
35
|
+
|
36
|
+
|
37
|
+
== 0.9.2 / 2007-12-17
|
38
|
+
|
39
|
+
Changes:
|
40
|
+
|
41
|
+
* Changed roll file format from ROLLRC to {name}.roll.
|
42
|
+
* The name change enabled an order of magnitude increase in startup time!
|
43
|
+
|
44
|
+
|
45
|
+
== 0.9.1 / 2007-11-27
|
46
|
+
|
47
|
+
Changes:
|
48
|
+
|
49
|
+
* Standard metadate file is now ROLLRC.
|
50
|
+
* Improved parsing of ROLLRC file, #release is now a Time object.
|
51
|
+
|
52
|
+
|
53
|
+
== 0.9.0 / 2007-11-12
|
54
|
+
|
55
|
+
Changes:
|
56
|
+
|
57
|
+
* Removed Roll namespace. Library and VersionNumber are now in toplevel.
|
58
|
+
* Fixed spelling of 'version' in Library#<=>.
|
59
|
+
* Kernel#require and load now route to Library meta-methods.
|
60
|
+
* @roll and related methods have been renamed to @package.
|
61
|
+
* Reduced scan glob to single pattern. Scanning is over 3x faster!
|
62
|
+
|
data/README.rdoc
ADDED
@@ -0,0 +1,169 @@
|
|
1
|
+
= ROLLING WITH RUBY
|
2
|
+
|
3
|
+
____
|
4
|
+
,dP9CGG88@b,
|
5
|
+
,IP""YICCG888@@b,
|
6
|
+
dIi ,IICGG8888@b
|
7
|
+
dCIIiciIICCGG8888@@b
|
8
|
+
________GCCIIIICCCGGG8888@@@________________
|
9
|
+
GGCCCCCCCGGG88888@@@
|
10
|
+
GGGGCCCGGGG88888@@@@...
|
11
|
+
Y8GGGGGG8888888@@@@P.....
|
12
|
+
Y88888888888@@@@@P......
|
13
|
+
`Y8888888@@@@@@@P'......
|
14
|
+
`@@@@@@@@@P'.......
|
15
|
+
""""........
|
16
|
+
|
17
|
+
* home: http://proutils.github.com/roll
|
18
|
+
|
19
|
+
|
20
|
+
== DESCRIPTION
|
21
|
+
|
22
|
+
Roll is a library manager for Ruby. With Rolls developers can run there
|
23
|
+
programs in real time --no install phase is required for one program
|
24
|
+
to depend on another. This makes it very easy to work on a set of
|
25
|
+
interdependent projects.
|
26
|
+
|
27
|
+
|
28
|
+
== HOW TO USE
|
29
|
+
|
30
|
+
=== Setting Up
|
31
|
+
|
32
|
+
To use roll regularly you first need to add it your RUBYOPT environment
|
33
|
+
variable.
|
34
|
+
|
35
|
+
$ export RUBYOPT="-roll"
|
36
|
+
|
37
|
+
I suspect you will be using RubyGems too, in which case do:
|
38
|
+
|
39
|
+
$ export RUBYOPT="-rubygems -roll"
|
40
|
+
|
41
|
+
To support executables you will also need to add a line to your startup
|
42
|
+
.bashrc (or equivalent) file.
|
43
|
+
|
44
|
+
export PATH="$PATH:$(roll path)"
|
45
|
+
|
46
|
+
This will add the +bin+ locations of the programs encompassed by your
|
47
|
+
current roll environment.
|
48
|
+
|
49
|
+
(NOTE: The way bin paths are handled will probably change in the future
|
50
|
+
b/c it has some shortcomings.)
|
51
|
+
|
52
|
+
=== Preparing your Projects
|
53
|
+
|
54
|
+
For your projects to be detected by Rolls they must conform to a
|
55
|
+
minimal POM[http://proutils.github.com/pom] setup. In particular
|
56
|
+
the project must contain a +meta/+ directory with a +name+ and +version+
|
57
|
+
entry. That is the bare minimum for a project to to be loadable via
|
58
|
+
Rolls. Optionally you may provide a +loadpath+ entry if the load path
|
59
|
+
is not the +lib/+ default, as well as a +released+ date entry.
|
60
|
+
|
61
|
+
(NOTE: +meta/+ can be named +.meta/+ if you would prefer to hide the
|
62
|
+
directory, though we recommend keeping it visible.)
|
63
|
+
|
64
|
+
Here are examples of Ruby Facets +meta/+ entries.
|
65
|
+
|
66
|
+
$ cat facets/meta/name
|
67
|
+
facets
|
68
|
+
|
69
|
+
$ cat facets/meta/version
|
70
|
+
2.8.0
|
71
|
+
|
72
|
+
$ cat facets/meta/loadpath
|
73
|
+
lib/core
|
74
|
+
lib/more
|
75
|
+
|
76
|
+
$ cat facets/meta/ruby
|
77
|
+
1.8+
|
78
|
+
|
79
|
+
The +ruby+ entry informs Rolls of the particular implementations and versions
|
80
|
+
of Ruby the project should operate under successfully.
|
81
|
+
(NOTE: Rolls doesn't actually do anything with the ruby entry yet.)
|
82
|
+
|
83
|
+
Lastly, an +active+ entry can be set to +false+ to tell Rolls to skip the
|
84
|
+
project when searching for library files. See POM[http://proutils.github.com/pom]
|
85
|
+
for more information.
|
86
|
+
|
87
|
+
|
88
|
+
=== Library Management
|
89
|
+
|
90
|
+
Next you need to setup an roll *environment*. The default environment
|
91
|
+
is call +production+. You can add a library search location to it
|
92
|
+
using +roll in+. Eg.
|
93
|
+
|
94
|
+
$ roll in /opt/ruby/
|
95
|
+
|
96
|
+
As a developer you will often want to use a +development+ environment.
|
97
|
+
To change or add and environment, modify the RUBYENV environment variable.
|
98
|
+
|
99
|
+
$ export RUBYENV="development"
|
100
|
+
|
101
|
+
Then you can add the paths you want. For instance my development
|
102
|
+
environment is basically constructed like this:
|
103
|
+
|
104
|
+
$ roll in ~/programs/proutils
|
105
|
+
$ roll in ~/programs/rubyworks
|
106
|
+
$ roll in ~/programs/thedeadly
|
107
|
+
$ roll in ~/programs/transcode
|
108
|
+
|
109
|
+
By default these paths will be searched for POM conforming projects
|
110
|
+
up to a depth of three sub-directories. That's suitable for
|
111
|
+
most needs. You can specify the the depth explicitly with the
|
112
|
+
<tt>--depth</tt> or <tt>-d</tt> option. For example, lets say you
|
113
|
+
just want to add a single ruby project to the current environment.
|
114
|
+
You can do so by navigating to the root directory of a project and
|
115
|
+
executing:
|
116
|
+
|
117
|
+
$ roll in --depth 1
|
118
|
+
|
119
|
+
That's it. Your project is *READY-TO-ROLL*!
|
120
|
+
|
121
|
+
|
122
|
+
== LEARNING MORE
|
123
|
+
|
124
|
+
The above provides a brief overview of using roll. But there is more to
|
125
|
+
it. To get a deeper understanding of the system and how to use +roll+ to
|
126
|
+
it fullest extent, please visit http://proutils.github.org/roll/.
|
127
|
+
|
128
|
+
|
129
|
+
== HOW TO INSTALL
|
130
|
+
|
131
|
+
=== Manual Installation
|
132
|
+
|
133
|
+
You will need Ruby Setup, the standalone setup.rb script, in order
|
134
|
+
to install Roll. See: http://setup.rubyforge.org.
|
135
|
+
|
136
|
+
Once you have setup.rb, download the Roll tarball and install
|
137
|
+
it manually as follows:
|
138
|
+
|
139
|
+
$ tar -xvzf roll-1.0.0
|
140
|
+
$ cd roll-1.0.0
|
141
|
+
$ sudo setup.rb all
|
142
|
+
|
143
|
+
On Windows, this last line needs to be 'ruby setup.rb all'.
|
144
|
+
|
145
|
+
=== RubyGems Installation
|
146
|
+
|
147
|
+
We strongly recommend installing Rolls manually b/c
|
148
|
+
Rolls is a peer to RubyGems. However, you can use Gems to
|
149
|
+
install it; and this is a convenient way to try it out.
|
150
|
+
|
151
|
+
gem install roll
|
152
|
+
|
153
|
+
If you like Rolls, then later you can uninstall the gem and
|
154
|
+
install manually.
|
155
|
+
|
156
|
+
|
157
|
+
== BY THE WAY
|
158
|
+
|
159
|
+
Roll was RubyForge project #1004. She's been around a while! ;)
|
160
|
+
|
161
|
+
|
162
|
+
== LICENSE & COPYRIGHT
|
163
|
+
|
164
|
+
Roll, Copyright (c) 2006,2007 Thomas Sawyer
|
165
|
+
|
166
|
+
Rolls is distributed under the same terms as Ruby.
|
167
|
+
|
168
|
+
See the LICENSE file details.
|
169
|
+
|
data/TODO
ADDED
data/bin/roll
CHANGED
@@ -1,44 +1,3 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
# and writes that list as an environment setting shell script.
|
5
|
-
# On Linux a call to this to you .bashrc file. Eg.
|
6
|
-
#
|
7
|
-
# if [ -f ~/.rollrc ]; then
|
8
|
-
# . roll --bin
|
9
|
-
# fi
|
10
|
-
#
|
11
|
-
# Currently this only supports bash.
|
12
|
-
#
|
13
|
-
# TODO Is this the best way to do it, or would it be better
|
14
|
-
# to "install" executables to an appropriate bin dir,
|
15
|
-
# suing links (soft if possible).
|
16
|
-
|
17
|
-
require 'roll/library'
|
18
|
-
|
19
|
-
def windows
|
20
|
-
processor, platform, *rest = RUBY_PLATFORM.split("-")
|
21
|
-
platform == 'mswin32'
|
22
|
-
end
|
23
|
-
|
24
|
-
div = (windows ? ';' : ':')
|
25
|
-
|
26
|
-
env_path = ENV['PATH'].split(/[#{div}]/)
|
27
|
-
|
28
|
-
# Go thru each roll lib and make sure bin
|
29
|
-
# path in path.
|
30
|
-
|
31
|
-
new_path = []
|
32
|
-
|
33
|
-
Library.list.each do |libname|
|
34
|
-
path = Library[libname].bin_path
|
35
|
-
if path
|
36
|
-
new_path = new_path | path
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
bin_path = (["$PATH"] + new_path).join(div)
|
41
|
-
|
42
|
-
puts %{export PATH="#{bin_path}";}
|
43
|
-
|
44
|
-
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'roll/command'
|
3
|
+
Roll::Command.main(*ARGV)
|
data/lib/oll.rb
CHANGED
@@ -1,2 +1 @@
|
|
1
|
-
require 'roll
|
2
|
-
|
1
|
+
require 'roll'
|
data/lib/roll.rb
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
require 'roll/kernel'
|
2
|
+
|
3
|
+
module Roll
|
4
|
+
VERSION = "1.0.0" #:till: VERSION = "<%= version %>"
|
5
|
+
|
6
|
+
# Get environment.
|
7
|
+
|
8
|
+
def self.env(name=nil)
|
9
|
+
if name
|
10
|
+
env = Environment.new(name)
|
11
|
+
else
|
12
|
+
env = Environment.new
|
13
|
+
end
|
14
|
+
env
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.index(name=nil)
|
18
|
+
#if name
|
19
|
+
# env = Environment.new(name)
|
20
|
+
#else
|
21
|
+
# env = Environment.new
|
22
|
+
#end
|
23
|
+
env(name).index.to_s
|
24
|
+
end
|
25
|
+
|
26
|
+
# Synchronize an environment by +name+. If a +name+
|
27
|
+
# is not given the current environment is synchronized.
|
28
|
+
|
29
|
+
def self.sync(name=nil)
|
30
|
+
env = env(name)
|
31
|
+
env.sync
|
32
|
+
env.save
|
33
|
+
end
|
34
|
+
|
35
|
+
# Add path to current environment.
|
36
|
+
|
37
|
+
def self.in(path, depth=3)
|
38
|
+
env = Environment.new
|
39
|
+
|
40
|
+
lookup = env.lookup
|
41
|
+
lookup.append(path, depth)
|
42
|
+
lookup.save
|
43
|
+
|
44
|
+
env.sync
|
45
|
+
env.save
|
46
|
+
|
47
|
+
return path, lookup.file
|
48
|
+
end
|
49
|
+
|
50
|
+
# Remove path from current environment.
|
51
|
+
|
52
|
+
def self.out(path)
|
53
|
+
env = Environment.new
|
54
|
+
|
55
|
+
lookup = env.lookup
|
56
|
+
lookup.delete(path)
|
57
|
+
lookup.save
|
58
|
+
|
59
|
+
env.sync
|
60
|
+
env.save
|
61
|
+
|
62
|
+
return path, lookup.file
|
63
|
+
end
|
64
|
+
|
65
|
+
# Go thru each roll lib and collect bin paths.
|
66
|
+
|
67
|
+
def self.path
|
68
|
+
binpaths = []
|
69
|
+
Library.list.each do |name|
|
70
|
+
lib = Library[name]
|
71
|
+
if lib.bindir?
|
72
|
+
binpaths << lib.bindir
|
73
|
+
end
|
74
|
+
end
|
75
|
+
binpaths
|
76
|
+
end
|
77
|
+
|
78
|
+
# Verify dependencies are in current environment.
|
79
|
+
#--
|
80
|
+
# TODO: Instead of Dir.pwd, lookup project root.
|
81
|
+
#++
|
82
|
+
def self.verify(root=Dir.pwd)
|
83
|
+
Library.new(root).verify
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
87
|
+
|
data/lib/roll/command.rb
ADDED
@@ -0,0 +1,207 @@
|
|
1
|
+
require 'roll'
|
2
|
+
#require 'roll/platform'
|
3
|
+
require 'optparse'
|
4
|
+
|
5
|
+
#--
|
6
|
+
# TODO: clean command to remove dead directories from environment
|
7
|
+
#++
|
8
|
+
|
9
|
+
module Roll
|
10
|
+
|
11
|
+
# = Command-line Interface
|
12
|
+
#
|
13
|
+
class Command
|
14
|
+
|
15
|
+
# Initialize and execute command.
|
16
|
+
def self.main(*argv)
|
17
|
+
new(*argv).execute
|
18
|
+
end
|
19
|
+
|
20
|
+
# New Command.
|
21
|
+
def initialize(*argv)
|
22
|
+
@argv = argv
|
23
|
+
end
|
24
|
+
|
25
|
+
#
|
26
|
+
def execute
|
27
|
+
cmd = @argv.find{ |e| e !~ /^\-/ }
|
28
|
+
|
29
|
+
options = {}
|
30
|
+
|
31
|
+
parser = OptionParser.new
|
32
|
+
|
33
|
+
parser.banner = "Usage: roll [COMMAND]"
|
34
|
+
|
35
|
+
__send__("#{cmd}_optparse", parser, options) if cmd
|
36
|
+
|
37
|
+
if !cmd
|
38
|
+
parser.separator "Commands:"
|
39
|
+
parser.separator " in [DIR] " + (" " * 23) + "Roll directory into current environment."
|
40
|
+
parser.separator " out [DIR] " + (" " * 23) + "Remove directory from current environment."
|
41
|
+
parser.separator " env " + (" " * 23) + "Show current environment."
|
42
|
+
parser.separator " index " + (" " * 23) + "Show current environment index."
|
43
|
+
parser.separator " sync " + (" " * 23) + "Synchronize environment indexes."
|
44
|
+
parser.separator " path " + (" " * 23) + "Output bin PATH list."
|
45
|
+
parser.separator " verify " + (" " * 23) + "Verify project dependencies in current environment."
|
46
|
+
parser.separator "Options:"
|
47
|
+
end
|
48
|
+
|
49
|
+
parser.on_tail("--help", "-h", "Display this help message.") do
|
50
|
+
puts parser
|
51
|
+
exit
|
52
|
+
end
|
53
|
+
|
54
|
+
parser.parse!
|
55
|
+
|
56
|
+
ARGV.shift # remove command
|
57
|
+
|
58
|
+
if cmd
|
59
|
+
__send__(cmd, ARGV, options)
|
60
|
+
else
|
61
|
+
# no command ?
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
#
|
66
|
+
def env_optparse(op, options)
|
67
|
+
op.banner = "Usage: roll env [NAME]"
|
68
|
+
op.separator "Show current environment."
|
69
|
+
op
|
70
|
+
end
|
71
|
+
|
72
|
+
#
|
73
|
+
def index_optparse(op, options)
|
74
|
+
op.banner = "Usage: roll index [NAME]"
|
75
|
+
op.separator "Show current environment index."
|
76
|
+
op
|
77
|
+
end
|
78
|
+
|
79
|
+
#
|
80
|
+
def sync_optparse(op, options)
|
81
|
+
op.banner = "Usage: roll sync [NAME]"
|
82
|
+
op.separator "Synchronize ledger(s) to their respective environment(s)."
|
83
|
+
op
|
84
|
+
end
|
85
|
+
|
86
|
+
#
|
87
|
+
def in_optparse(op, options)
|
88
|
+
op.banner = "Usage: roll in [PATH]"
|
89
|
+
op.separator "Insert path into current environment."
|
90
|
+
op.separator "Options:"
|
91
|
+
op.on("--depth", "-d [INTEGER]") do |int|
|
92
|
+
options[:depth] = int
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
#
|
97
|
+
def out_optparse(op, options)
|
98
|
+
op.banner = "Usage: roll out [PATH]"
|
99
|
+
op.separator "Remove path from current environment."
|
100
|
+
op
|
101
|
+
end
|
102
|
+
|
103
|
+
#
|
104
|
+
def path_optparse(op, options)
|
105
|
+
op.banner = "Usage: roll path"
|
106
|
+
op.separator "Generate executable PATH list."
|
107
|
+
op
|
108
|
+
end
|
109
|
+
|
110
|
+
#
|
111
|
+
def verify_optparse(op, options)
|
112
|
+
op.banner = "Usage: roll verify"
|
113
|
+
op.separator "Verify dependencies in current environment."
|
114
|
+
op
|
115
|
+
end
|
116
|
+
|
117
|
+
# Show/Change current environment.
|
118
|
+
#
|
119
|
+
def env(args, opts)
|
120
|
+
puts Roll.env(*args)
|
121
|
+
end
|
122
|
+
|
123
|
+
# Show/Change current environment.
|
124
|
+
#
|
125
|
+
def index(args, opts)
|
126
|
+
puts Roll.index(*args)
|
127
|
+
end
|
128
|
+
|
129
|
+
# Synchronize ledgers.
|
130
|
+
#
|
131
|
+
def sync(args, opts)
|
132
|
+
name = args.first
|
133
|
+
list = name ? [name] : Environment.list
|
134
|
+
list.each do |name|
|
135
|
+
result = Roll.sync(name)
|
136
|
+
if result
|
137
|
+
puts " saved #{name}"
|
138
|
+
else
|
139
|
+
puts " current #{name}"
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
#
|
145
|
+
def in(args, opts)
|
146
|
+
path = File.expand_path(args.first || Dir.pwd)
|
147
|
+
depth = opts[:depth]
|
148
|
+
path, file = *Roll.in(path, depth)
|
149
|
+
puts "#{path}"
|
150
|
+
puts " '-> #{file}"
|
151
|
+
end
|
152
|
+
|
153
|
+
#
|
154
|
+
def out(args, opts)
|
155
|
+
path = File.expand_path(args.first || Dir.pwd)
|
156
|
+
path, file = *Roll.out(path)
|
157
|
+
puts "#{file}"
|
158
|
+
puts " '-> #{path} -> [x]"
|
159
|
+
end
|
160
|
+
|
161
|
+
#
|
162
|
+
def verify(args, opts)
|
163
|
+
list = Roll.verify
|
164
|
+
list.each do |(name, constraint)|
|
165
|
+
puts "#{name} #{constraint}"
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
# This script builds a list of all roll-ready bin locations
|
170
|
+
# and writes that list as an environment setting shell script.
|
171
|
+
# On Linux a call to this to you .bashrc file. Eg.
|
172
|
+
#
|
173
|
+
# if [ -f ~/.rollrc ]; then
|
174
|
+
# . roll
|
175
|
+
# fi
|
176
|
+
#
|
177
|
+
# Currently this only supports bash.
|
178
|
+
#
|
179
|
+
# TODO: It would be better to "install" executables
|
180
|
+
# to an appropriate bin dir, using links (soft if possible).
|
181
|
+
# There could go in ~/.bin or .config/roll/<ledger>.bin/
|
182
|
+
#
|
183
|
+
def path(args, opts)
|
184
|
+
case RUBY_PLATFORM
|
185
|
+
when /mswin/, /wince/
|
186
|
+
div = ';'
|
187
|
+
else
|
188
|
+
div = ':'
|
189
|
+
end
|
190
|
+
env_path = ENV['PATH'].split(/[#{div}]/)
|
191
|
+
# Go thru each roll lib and make sure bin path is in path.
|
192
|
+
binpaths = []
|
193
|
+
Library.list.each do |name|
|
194
|
+
lib = Library[name]
|
195
|
+
if lib.bindir?
|
196
|
+
binpaths << lib.bindir
|
197
|
+
end
|
198
|
+
end
|
199
|
+
#pathenv = (["$PATH"] + binpaths).join(div)
|
200
|
+
pathenv = binpaths.join(div)
|
201
|
+
#puts %{export PATH="#{pathenv}"}
|
202
|
+
puts pathenv
|
203
|
+
end
|
204
|
+
|
205
|
+
end
|
206
|
+
|
207
|
+
end
|