groundwork 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/groundwork +24 -7
- data/lib/groundwork.rb +6 -3
- data/lib/options.rb +7 -2
- metadata +2 -2
data/bin/groundwork
CHANGED
@@ -8,17 +8,34 @@ begin
|
|
8
8
|
case options[:command]
|
9
9
|
when "generate"
|
10
10
|
generate_opts = Trollop::options(options[:remainder]) do
|
11
|
-
|
11
|
+
banner <<-STR
|
12
|
+
Usage:
|
13
|
+
groundwork generate [options] filename
|
14
|
+
Generates a basic recipe, which you can modify, from the current directory
|
15
|
+
[options] are:
|
16
|
+
STR
|
17
|
+
opt :force, "Overwrite recipe file if exists", :default=>false
|
18
|
+
opt :ignore, "Ignore files matching these filename patterns", :type=>:strings
|
19
|
+
opt :print, "Instead of storing in a file, print the recipe to stdout", :default=>false
|
20
|
+
opt :chdir, "Before running, cd to the given directory", :default=>FileUtils.pwd
|
12
21
|
end
|
13
22
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
raise RuntimeError.new("File already exists: #{name}.recipe")
|
23
|
+
recipe = ""
|
24
|
+
FileUtils.cd(generate_opts[:chdir]) do
|
25
|
+
recipe = Groundwork::Recipe.generate FileUtils.pwd, :ignore => generate_opts[:ignore]
|
18
26
|
end
|
19
27
|
|
20
|
-
|
21
|
-
|
28
|
+
if generate_opts[:print]
|
29
|
+
puts recipe
|
30
|
+
else
|
31
|
+
name = options[:remainder].shift || "Recipe"
|
32
|
+
|
33
|
+
if File.exists?(name+".recipe") && !generate_opts[:force]
|
34
|
+
raise RuntimeError.new("File already exists: #{name}.recipe")
|
35
|
+
end
|
36
|
+
|
37
|
+
File.open(name+".recipe","w"){|f| f.print recipe}
|
38
|
+
end
|
22
39
|
else
|
23
40
|
end
|
24
41
|
rescue
|
data/lib/groundwork.rb
CHANGED
@@ -132,12 +132,17 @@ module Groundwork
|
|
132
132
|
|
133
133
|
# Generate a tree of file and directory calls that would create the given
|
134
134
|
# directory
|
135
|
-
def self.generate dir = FileUtils.pwd
|
135
|
+
def self.generate dir = FileUtils.pwd, options = {}
|
136
136
|
base = Pathname.new dir
|
137
137
|
|
138
138
|
handle_dir = lambda do |d, output, indent|
|
139
139
|
FileUtils.cd d do
|
140
140
|
Dir["*"].each do |file|
|
141
|
+
rel = Pathname.new(File.join(FileUtils.pwd,file))
|
142
|
+
relpath = rel.relative_path_from(base).to_s
|
143
|
+
|
144
|
+
next if options[:ignore] && options[:ignore].any?{|p| File.fnmatch(p,relpath) }
|
145
|
+
|
141
146
|
if File.directory? file
|
142
147
|
if Dir[File.join(file,"*")].empty?
|
143
148
|
output.puts((" "*indent)+"directory \"#{file}\"")
|
@@ -149,8 +154,6 @@ module Groundwork
|
|
149
154
|
output.puts("")
|
150
155
|
end
|
151
156
|
else
|
152
|
-
rel = Pathname.new(File.join(FileUtils.pwd,file))
|
153
|
-
relpath = rel.relative_path_from(base).to_s
|
154
157
|
output.puts((" "*indent)+"file \"#{file}\", :from => \"#{relpath}\"")
|
155
158
|
end
|
156
159
|
end
|
data/lib/options.rb
CHANGED
@@ -3,8 +3,13 @@ require "abbrev"
|
|
3
3
|
module Groundwork
|
4
4
|
def self.parse_options opts=ARGV
|
5
5
|
global_opts = Trollop::options(opts) do
|
6
|
-
banner
|
7
|
-
|
6
|
+
banner <<-STR
|
7
|
+
Usage:
|
8
|
+
groundwork [global_options] command [command_options]
|
9
|
+
Currently, the only implemented command is "generate", which generates a recipe for the current directory
|
10
|
+
Options are:
|
11
|
+
STR
|
12
|
+
version "0.0.2"
|
8
13
|
stop_on_unknown
|
9
14
|
end
|
10
15
|
|