bones 2.1.1 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +12 -0
- data/Manifest.txt +22 -11
- data/README.rdoc +34 -10
- data/Rakefile +2 -2
- data/bin/bones +1 -1
- data/bones.gemspec +40 -0
- data/data/{History.txt.erb → History.txt.bns} +0 -0
- data/data/{README.txt.erb → README.txt.bns} +0 -0
- data/data/{Rakefile.erb → Rakefile.bns} +5 -1
- data/data/bin/{NAME.erb → NAME.bns} +0 -0
- data/data/lib/NAME.rb.bns +49 -0
- data/data/spec/{NAME_spec.rb.erb → NAME_spec.rb.bns} +0 -0
- data/data/spec/{spec_helper.rb.erb → spec_helper.rb.bns} +0 -0
- data/lib/bones.rb +3 -1
- data/lib/bones/app.rb +92 -0
- data/lib/bones/app/command.rb +130 -0
- data/lib/bones/app/create_command.rb +87 -0
- data/lib/bones/app/file_manager.rb +176 -0
- data/lib/bones/app/freeze_command.rb +72 -0
- data/lib/bones/app/info_command.rb +58 -0
- data/lib/bones/app/unfreeze_command.rb +53 -0
- data/lib/bones/app/update_command.rb +47 -0
- data/lib/bones/tasks/gem.rake +11 -2
- data/spec/bones/app/file_manager_spec.rb +150 -0
- data/spec/bones/app_spec.rb +97 -0
- data/spec/data/data/NAME/NAME.rb.bns +5 -0
- data/spec/data/data/README.txt.bns +48 -0
- data/spec/data/data/Rakefile.bns +30 -0
- data/{data/lib/NAME.rb.erb → spec/data/data/lib/NAME.rb.bns} +0 -0
- data/spec/spec_helper.rb +22 -0
- data/tasks/gem.rake +11 -2
- metadata +24 -14
- data/lib/bones/main.rb +0 -380
- data/spec/bones/main_spec.rb +0 -157
- data/spec/data/data/README.txt +0 -0
- data/spec/data/data/Rakefile +0 -0
data/tasks/gem.rake
CHANGED
@@ -37,8 +37,6 @@ class GemPackageTask < Rake::PackageTask
|
|
37
37
|
local_setup = File.join(Dir.pwd, %w[tasks setup.rb])
|
38
38
|
if !test(?e, local_setup)
|
39
39
|
Dir.glob(::Bones.path(%w[lib bones tasks *])).each {|fn| bones_files << fn}
|
40
|
-
gem_spec.files = (gem_spec.files +
|
41
|
-
bones_files.map {|fn| File.join('tasks', File.basename(fn))}).sort
|
42
40
|
end
|
43
41
|
end
|
44
42
|
|
@@ -63,6 +61,10 @@ class GemPackageTask < Rake::PackageTask
|
|
63
61
|
|
64
62
|
file package_dir_path => bones_files do
|
65
63
|
mkdir_p package_dir rescue nil
|
64
|
+
|
65
|
+
gem_spec.files = (gem_spec.files +
|
66
|
+
bones_files.map {|fn| File.join('tasks', File.basename(fn))}).sort
|
67
|
+
|
66
68
|
bones_files.each do |fn|
|
67
69
|
base_fn = File.join('tasks', File.basename(fn))
|
68
70
|
f = File.join(package_dir_path, base_fn)
|
@@ -157,6 +159,13 @@ namespace :gem do
|
|
157
159
|
puts PROJ.gem._spec.to_ruby
|
158
160
|
end
|
159
161
|
|
162
|
+
desc 'Write the gemspec '
|
163
|
+
task :spec => 'gem:prereqs' do
|
164
|
+
File.open("#{PROJ.name}.gemspec", 'w') do |f|
|
165
|
+
f.write PROJ.gem._spec.to_ruby
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
160
169
|
desc 'Install the gem'
|
161
170
|
task :install => [:clobber, 'gem:package'] do
|
162
171
|
sh "#{SUDO} #{GEM} install --local pkg/#{PROJ.gem._spec.full_name}"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bones
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tim Pease
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2009-01-01 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -44,7 +44,6 @@ extra_rdoc_files:
|
|
44
44
|
- lib/bones/tasks/spec.rake
|
45
45
|
- lib/bones/tasks/svn.rake
|
46
46
|
- lib/bones/tasks/test.rake
|
47
|
-
- spec/data/data/README.txt
|
48
47
|
- spec/data/foo/README.txt
|
49
48
|
files:
|
50
49
|
- History.txt
|
@@ -52,19 +51,27 @@ files:
|
|
52
51
|
- README.rdoc
|
53
52
|
- Rakefile
|
54
53
|
- bin/bones
|
55
|
-
-
|
54
|
+
- bones.gemspec
|
55
|
+
- data/History.txt.bns
|
56
56
|
- data/Manifest.txt
|
57
|
-
- data/README.txt.
|
58
|
-
- data/Rakefile.
|
59
|
-
- data/bin/NAME.
|
60
|
-
- data/lib/NAME.rb.
|
61
|
-
- data/spec/NAME_spec.rb.
|
62
|
-
- data/spec/spec_helper.rb.
|
57
|
+
- data/README.txt.bns
|
58
|
+
- data/Rakefile.bns
|
59
|
+
- data/bin/NAME.bns
|
60
|
+
- data/lib/NAME.rb.bns
|
61
|
+
- data/spec/NAME_spec.rb.bns
|
62
|
+
- data/spec/spec_helper.rb.bns
|
63
63
|
- data/test/test_NAME.rb
|
64
64
|
- lib/bones.rb
|
65
65
|
- lib/bones/annotation_extractor.rb
|
66
|
+
- lib/bones/app.rb
|
67
|
+
- lib/bones/app/command.rb
|
68
|
+
- lib/bones/app/create_command.rb
|
69
|
+
- lib/bones/app/file_manager.rb
|
70
|
+
- lib/bones/app/freeze_command.rb
|
71
|
+
- lib/bones/app/info_command.rb
|
72
|
+
- lib/bones/app/unfreeze_command.rb
|
73
|
+
- lib/bones/app/update_command.rb
|
66
74
|
- lib/bones/debug.rb
|
67
|
-
- lib/bones/main.rb
|
68
75
|
- lib/bones/smtp_tls.rb
|
69
76
|
- lib/bones/tasks/ann.rake
|
70
77
|
- lib/bones/tasks/bones.rake
|
@@ -79,10 +86,13 @@ files:
|
|
79
86
|
- lib/bones/tasks/spec.rake
|
80
87
|
- lib/bones/tasks/svn.rake
|
81
88
|
- lib/bones/tasks/test.rake
|
82
|
-
- spec/bones/
|
89
|
+
- spec/bones/app/file_manager_spec.rb
|
90
|
+
- spec/bones/app_spec.rb
|
83
91
|
- spec/bones_spec.rb
|
84
|
-
- spec/data/data/
|
85
|
-
- spec/data/data/
|
92
|
+
- spec/data/data/NAME/NAME.rb.bns
|
93
|
+
- spec/data/data/README.txt.bns
|
94
|
+
- spec/data/data/Rakefile.bns
|
95
|
+
- spec/data/data/lib/NAME.rb.bns
|
86
96
|
- spec/data/foo/README.txt
|
87
97
|
- spec/data/foo/Rakefile
|
88
98
|
- spec/spec_helper.rb
|
data/lib/bones/main.rb
DELETED
@@ -1,380 +0,0 @@
|
|
1
|
-
|
2
|
-
require 'fileutils'
|
3
|
-
require 'optparse'
|
4
|
-
require 'erb'
|
5
|
-
|
6
|
-
module Bones
|
7
|
-
class Main
|
8
|
-
|
9
|
-
attr_reader :options
|
10
|
-
|
11
|
-
# Create a new instance of Main, and run the +bones+ application given
|
12
|
-
# the command line _args_.
|
13
|
-
#
|
14
|
-
def self.run( args )
|
15
|
-
bones = self.new
|
16
|
-
bones.parse(args)
|
17
|
-
bones.run
|
18
|
-
end
|
19
|
-
|
20
|
-
# Create a new main instance using _io_ for standard output and _err_ for
|
21
|
-
# error messages.
|
22
|
-
#
|
23
|
-
def initialize( io = STDOUT, err = STDERR )
|
24
|
-
@io = io
|
25
|
-
@err = err
|
26
|
-
@options = {
|
27
|
-
:skeleton_dir => File.join(mrbones_dir, 'data'),
|
28
|
-
:with_tasks => false,
|
29
|
-
:verbose => false,
|
30
|
-
:name => nil,
|
31
|
-
:output_dir => nil,
|
32
|
-
:action => nil
|
33
|
-
}
|
34
|
-
@options[:skeleton_dir] = ::Bones.path('data') unless test(?d, skeleton_dir)
|
35
|
-
end
|
36
|
-
|
37
|
-
# The output directory where files will be written.
|
38
|
-
#
|
39
|
-
def output_dir
|
40
|
-
options[:output_dir]
|
41
|
-
end
|
42
|
-
|
43
|
-
# The directory where the project skeleton is located.
|
44
|
-
#
|
45
|
-
def skeleton_dir
|
46
|
-
options[:skeleton_dir]
|
47
|
-
end
|
48
|
-
|
49
|
-
# The project name from the command line.
|
50
|
-
#
|
51
|
-
def name
|
52
|
-
options[:name]
|
53
|
-
end
|
54
|
-
|
55
|
-
# Returns the project name but converted to be usable as a Ruby class
|
56
|
-
# name.
|
57
|
-
#
|
58
|
-
def classname
|
59
|
-
name.tr('-','_').split('_').map {|x| x.capitalize}.join
|
60
|
-
end
|
61
|
-
|
62
|
-
# Returns +true+ if we are updating an already existing project. Returns
|
63
|
-
# +false+ if we are creating a new project.
|
64
|
-
#
|
65
|
-
def update?
|
66
|
-
test(?e, output_dir) and with_tasks?
|
67
|
-
end
|
68
|
-
|
69
|
-
# Returns +true+ if we are going to copy the Mr Bones tasks into the
|
70
|
-
# destination directory. Normally this will return +false+.
|
71
|
-
#
|
72
|
-
def with_tasks?
|
73
|
-
options[:with_tasks]
|
74
|
-
end
|
75
|
-
|
76
|
-
# Returns +true+ if the user has requested verbose messages.
|
77
|
-
#
|
78
|
-
def verbose?
|
79
|
-
options[:verbose]
|
80
|
-
end
|
81
|
-
|
82
|
-
# Parse the command line arguments and store the values for later use by
|
83
|
-
# the +create+ and +update+ methods.
|
84
|
-
#
|
85
|
-
def parse( args )
|
86
|
-
opts = OptionParser.new
|
87
|
-
opts.banner << ' project_name'
|
88
|
-
|
89
|
-
opts.separator ''
|
90
|
-
opts.on('-v', '--verbose', 'enable verbose output') {
|
91
|
-
options[:verbose] = true
|
92
|
-
}
|
93
|
-
opts.on('-d', '--directory DIRECTORY', String,
|
94
|
-
'project directory to create', '(defaults to project_name)') {|dir|
|
95
|
-
options[:output_dir] = dir
|
96
|
-
}
|
97
|
-
opts.on('-s', '--skeleton NAME', String,
|
98
|
-
'project skeleton to use') do |skeleton_name|
|
99
|
-
path = File.join(mrbones_dir, skeleton_name)
|
100
|
-
if test(?d, path)
|
101
|
-
options[:skeleton_dir] = path
|
102
|
-
elsif test(?d, skeleton_name)
|
103
|
-
options[:skeleton_dir] = skeleton_name
|
104
|
-
else
|
105
|
-
@io.puts " unknown skeleton '#{skeleton_name}'"
|
106
|
-
exit
|
107
|
-
end
|
108
|
-
end
|
109
|
-
opts.on('--with-tasks', 'copy rake tasks to the project folder') {
|
110
|
-
options[:with_tasks] = true
|
111
|
-
}
|
112
|
-
|
113
|
-
opts.separator ''
|
114
|
-
opts.on('--freeze', 'freeze the project skeleton') {
|
115
|
-
options[:action] = :freeze
|
116
|
-
}
|
117
|
-
opts.on('--unfreeze', 'use the standard project skeleton') {
|
118
|
-
options[:action] = :unfreeze
|
119
|
-
}
|
120
|
-
opts.on('-i', '--info', 'report on the project skeleton being used') {
|
121
|
-
options[:action] = :info
|
122
|
-
}
|
123
|
-
|
124
|
-
opts.separator ''
|
125
|
-
opts.separator 'common options:'
|
126
|
-
opts.on_tail( '-h', '--help', 'show this message' ) {
|
127
|
-
@io.puts opts
|
128
|
-
exit
|
129
|
-
}
|
130
|
-
opts.on_tail( '--version', 'show version' ) {
|
131
|
-
@io.puts "Mr Bones #{::Bones::VERSION}"
|
132
|
-
exit
|
133
|
-
}
|
134
|
-
|
135
|
-
# parse the command line arguments
|
136
|
-
opts.parse! args
|
137
|
-
options[:name] = args.empty? ? nil : args.join('_')
|
138
|
-
|
139
|
-
if options[:action].nil? and name.nil?
|
140
|
-
@io.puts opts
|
141
|
-
::Kernel.abort
|
142
|
-
end
|
143
|
-
|
144
|
-
options[:output_dir] = name if output_dir.nil?
|
145
|
-
nil
|
146
|
-
end
|
147
|
-
|
148
|
-
# Run the main application.
|
149
|
-
#
|
150
|
-
def run
|
151
|
-
case options[:action]
|
152
|
-
when :freeze
|
153
|
-
freeze
|
154
|
-
when :unfreeze
|
155
|
-
unfreeze
|
156
|
-
when :info
|
157
|
-
@io.puts "the project skeleton will be copied from"
|
158
|
-
@io.write " "
|
159
|
-
@io.puts skeleton_dir
|
160
|
-
else
|
161
|
-
if update? then update
|
162
|
-
else create end
|
163
|
-
end
|
164
|
-
end
|
165
|
-
|
166
|
-
# Create a new project from the bones/data project template.
|
167
|
-
#
|
168
|
-
def create
|
169
|
-
# see if the directory already exists
|
170
|
-
abort "'#{output_dir}' already exists" if test ?e, output_dir
|
171
|
-
|
172
|
-
begin
|
173
|
-
files_to_copy.each {|fn| cp fn}
|
174
|
-
copy_tasks(File.join(output_dir, 'tasks')) if with_tasks?
|
175
|
-
|
176
|
-
pwd = File.expand_path(FileUtils.pwd)
|
177
|
-
msg = "created '#{name}'"
|
178
|
-
msg << " in directory '#{output_dir}'" if name != output_dir
|
179
|
-
@io.puts msg
|
180
|
-
|
181
|
-
if test(?f, File.join(output_dir, 'Rakefile'))
|
182
|
-
begin
|
183
|
-
FileUtils.cd output_dir
|
184
|
-
system "rake manifest:create 2>&1 > #{::Bones::DEV_NULL}"
|
185
|
-
@io.puts "now you need to fix these files"
|
186
|
-
system "rake notes"
|
187
|
-
ensure
|
188
|
-
FileUtils.cd pwd
|
189
|
-
end
|
190
|
-
end
|
191
|
-
rescue Exception => err
|
192
|
-
FileUtils.rm_rf output_dir
|
193
|
-
msg = "could not create '#{name}'"
|
194
|
-
msg << " in directory '#{output_dir}'" if name != output_dir
|
195
|
-
abort msg
|
196
|
-
end
|
197
|
-
end
|
198
|
-
|
199
|
-
# Archive any existing tasks in the project's tasks folder, and then
|
200
|
-
# copy in new tasks from the bones/data directory.
|
201
|
-
#
|
202
|
-
def update
|
203
|
-
abort "'#{output_dir}' does not exist" unless test ?e, output_dir
|
204
|
-
|
205
|
-
task_dir = File.join(output_dir, 'tasks')
|
206
|
-
FileUtils.mkdir_p(task_dir) unless test(?d, task_dir)
|
207
|
-
|
208
|
-
archive_dir = File.join(task_dir, 'archive')
|
209
|
-
FileUtils.rm_rf archive_dir
|
210
|
-
FileUtils.mkdir archive_dir
|
211
|
-
|
212
|
-
Dir.glob(File.join(task_dir, '*')).each do |fn|
|
213
|
-
next if fn == archive_dir
|
214
|
-
FileUtils.cp fn, archive_dir
|
215
|
-
end
|
216
|
-
|
217
|
-
copy_tasks(task_dir)
|
218
|
-
|
219
|
-
msg = "updated tasks for '#{name}'"
|
220
|
-
msg << " in directory '#{output_dir}'" if name != output_dir
|
221
|
-
@io.puts msg
|
222
|
-
end
|
223
|
-
|
224
|
-
# Freeze the project skeleton to the current Mr Bones gem. If the project
|
225
|
-
# skeleton has already been frozen, then it will be archived before being
|
226
|
-
# overwritten by the current Mr Bones skeleton.
|
227
|
-
#
|
228
|
-
# If the project skeleton is already frozen, only the tasks from the Mr
|
229
|
-
# Bones skeleton will be copied to the user's data directory.
|
230
|
-
#
|
231
|
-
def freeze
|
232
|
-
options[:skeleton_dir] = ::Bones.path('data')
|
233
|
-
options[:name] = 'data' if name.nil?
|
234
|
-
options[:output_dir] = File.join(mrbones_dir, name)
|
235
|
-
|
236
|
-
archive(output_dir, "#{output_dir}.archive")
|
237
|
-
FileUtils.mkdir_p(output_dir)
|
238
|
-
|
239
|
-
files_to_copy.each do |file|
|
240
|
-
src = File.join(skeleton_dir, file)
|
241
|
-
dst = File.join(output_dir, file)
|
242
|
-
|
243
|
-
@io.puts "freezing #{dst}" if verbose?
|
244
|
-
FileUtils.mkdir_p(File.dirname(dst))
|
245
|
-
FileUtils.cp(src, dst)
|
246
|
-
end
|
247
|
-
|
248
|
-
copy_tasks(File.join(output_dir, 'tasks'), 'freezing') if with_tasks?
|
249
|
-
|
250
|
-
File.open(frozen_version_file, 'w') {|fd| fd.puts ::Bones::VERSION}
|
251
|
-
|
252
|
-
@io.puts "project skeleton has been frozen " <<
|
253
|
-
"to Mr Bones #{::Bones::VERSION}"
|
254
|
-
end
|
255
|
-
|
256
|
-
# Unfreeze the project skeleton. The default Mr Bones skeleton will be
|
257
|
-
# used insetad. This method will archive the current frozen skeleton if
|
258
|
-
# one exists.
|
259
|
-
#
|
260
|
-
def unfreeze
|
261
|
-
options[:name] = 'data' if name.nil?
|
262
|
-
options[:output_dir] = File.join(mrbones_dir, name)
|
263
|
-
|
264
|
-
if archive(output_dir, "#{output_dir}.archive")
|
265
|
-
@io.puts "project skeleton has been unfrozen"
|
266
|
-
@io.puts "(default Mr Bones #{::Bones::VERSION} skeleton will be used)"
|
267
|
-
else
|
268
|
-
@io.puts "project skeleton is not frozen (no action taken)"
|
269
|
-
end
|
270
|
-
FileUtils.rm_f frozen_version_file
|
271
|
-
end
|
272
|
-
|
273
|
-
# Returns a list of the files to copy from the bones/data directory to
|
274
|
-
# the new project directory
|
275
|
-
#
|
276
|
-
def files_to_copy
|
277
|
-
rgxp = %r/\A#{skeleton_dir}\/?/o
|
278
|
-
exclude = %r/tmp$|bak$|~$|CVS|\.svn/o
|
279
|
-
|
280
|
-
ary = Dir.glob(File.join(skeleton_dir, '**', '*')).map do |filename|
|
281
|
-
next if exclude =~ filename
|
282
|
-
next if test(?d, filename)
|
283
|
-
filename.sub rgxp, ''
|
284
|
-
end
|
285
|
-
|
286
|
-
ary.compact!
|
287
|
-
ary.sort!
|
288
|
-
ary
|
289
|
-
end
|
290
|
-
|
291
|
-
# Copy a file from the Bones prototype project location to the user
|
292
|
-
# specified project location. A message will be displayed to the screen
|
293
|
-
# indicating that the file is being created.
|
294
|
-
#
|
295
|
-
def cp( file )
|
296
|
-
dir = File.dirname(file).sub('NAME', name)
|
297
|
-
dir = (dir == '.' ? output_dir : File.join(output_dir, dir))
|
298
|
-
dst = File.join(dir, File.basename(file, '.erb').sub('NAME', name))
|
299
|
-
src = File.join(skeleton_dir, file)
|
300
|
-
|
301
|
-
@io.puts(test(?e, dst) ? "updating #{dst}" : "creating #{dst}") if verbose?
|
302
|
-
FileUtils.mkdir_p(dir)
|
303
|
-
|
304
|
-
if '.erb' == File.extname(file)
|
305
|
-
txt = ERB.new(File.read(src), nil, '-').result(binding)
|
306
|
-
File.open(dst, 'w') {|fd| fd.write(txt)}
|
307
|
-
else
|
308
|
-
FileUtils.cp src, dst
|
309
|
-
end
|
310
|
-
|
311
|
-
FileUtils.chmod(File.stat(src).mode, dst)
|
312
|
-
end
|
313
|
-
|
314
|
-
# Archive the contents of the _from_ directory into the _to_ directory.
|
315
|
-
# The _to_ directory will be deleted if it currently exists. After the
|
316
|
-
# copy the _from_ directory will be deleted.
|
317
|
-
#
|
318
|
-
# Returns +true+ if the directory was archived. Returns +false+ if the
|
319
|
-
# directory was not archived.
|
320
|
-
#
|
321
|
-
def archive( from, to )
|
322
|
-
if test(?d, from)
|
323
|
-
@io.puts "archiving #{from}" if verbose?
|
324
|
-
FileUtils.rm_rf(to)
|
325
|
-
FileUtils.mkdir(to)
|
326
|
-
FileUtils.cp_r(File.join(from, '.'), to)
|
327
|
-
FileUtils.rm_rf(from)
|
328
|
-
true
|
329
|
-
else
|
330
|
-
false
|
331
|
-
end
|
332
|
-
end
|
333
|
-
|
334
|
-
# Copy the Mr Bones tasks into the _to_ directory. If we are in verbose
|
335
|
-
# mode, then a message will be displayed to the user. This message can be
|
336
|
-
# passed in as the _msg_ argument. The current file being copied is
|
337
|
-
# appened to the end of the message.
|
338
|
-
#
|
339
|
-
def copy_tasks( to, msg = nil )
|
340
|
-
Dir.glob(::Bones.path(%w[lib bones tasks *])).sort.each do |src|
|
341
|
-
dst = File.join(to, File.basename(src))
|
342
|
-
|
343
|
-
if msg
|
344
|
-
@io.puts "#{msg} #{dst}" if verbose?
|
345
|
-
else
|
346
|
-
@io.puts(test(?e, dst) ? "updating #{dst}" : "creating #{dst}") if verbose?
|
347
|
-
end
|
348
|
-
|
349
|
-
FileUtils.mkdir_p(File.dirname(dst))
|
350
|
-
FileUtils.cp(src, dst)
|
351
|
-
end
|
352
|
-
end
|
353
|
-
|
354
|
-
# Prints an abort _msg_ to the screen and then exits the Ruby interpreter.
|
355
|
-
#
|
356
|
-
def abort( msg )
|
357
|
-
@err.puts msg
|
358
|
-
exit 1
|
359
|
-
end
|
360
|
-
|
361
|
-
# Returns the .bones resource directory in the user's home directory.
|
362
|
-
#
|
363
|
-
def mrbones_dir
|
364
|
-
return @mrbones_dir if defined? @mrbones_dir
|
365
|
-
|
366
|
-
path = (::Bones::WIN32 ? ENV['HOMEPATH'].tr("\\", "/") : ENV['HOME'])
|
367
|
-
path = File.join(path, '.mrbones')
|
368
|
-
@mrbones_dir = File.expand_path(path)
|
369
|
-
end
|
370
|
-
|
371
|
-
# File containing the Mr Bones version from which the skeleton was frozen.
|
372
|
-
#
|
373
|
-
def frozen_version_file
|
374
|
-
File.join(mrbones_dir, 'version.txt')
|
375
|
-
end
|
376
|
-
|
377
|
-
end # class Main
|
378
|
-
end # module Bones
|
379
|
-
|
380
|
-
# EOF
|