temp 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/temp.rb +1 -0
- data/lib/temp/config.rb +3 -3
- data/lib/temp/options.rb +44 -0
- data/lib/temp/runner.rb +16 -32
- data/lib/temp/tempfile.rb +6 -6
- data/lib/temp/template.rb +3 -3
- data/lib/temp/version.rb +1 -1
- data/spec/temp_spec.rb +34 -0
- metadata +4 -3
data/lib/temp.rb
CHANGED
data/lib/temp/config.rb
CHANGED
@@ -12,9 +12,9 @@ module Temp
|
|
12
12
|
attr_reader :file, :vals, :template_dir
|
13
13
|
attr_accessor :template_options
|
14
14
|
|
15
|
-
#
|
16
|
-
# values in the file. If not given a filename,
|
17
|
-
# configuration file. If the configuration file doesn't exist,
|
15
|
+
# Loads a configuration file and sets the configuration variables to the
|
16
|
+
# values in the file. If not given a filename, loads the default
|
17
|
+
# configuration file. If the configuration file doesn't exist, uses default
|
18
18
|
# configuration values. Also accepts template options to make it easier to
|
19
19
|
# pass to tempfiles.
|
20
20
|
def initialize(file = DEFAULT_CONF_FILE, template_options = {})
|
data/lib/temp/options.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
module Temp
|
2
|
+
|
3
|
+
# The Options module contains functions for parsing command line options.
|
4
|
+
module Options
|
5
|
+
|
6
|
+
# Parses arguments and returns a hash of options.
|
7
|
+
def self.parse(args)
|
8
|
+
options = { :args => [] }
|
9
|
+
|
10
|
+
opt_stop = false
|
11
|
+
args.each do |arg|
|
12
|
+
if arg == '--'
|
13
|
+
opt_stop = true
|
14
|
+
next
|
15
|
+
end
|
16
|
+
|
17
|
+
if opt_stop
|
18
|
+
options[:args] << arg
|
19
|
+
else
|
20
|
+
match = /^(-)?(-no)?((-\w+)+)(=(.+))?$/.match(arg)
|
21
|
+
if match
|
22
|
+
key = match[3].sub('-', '').gsub('-', '_').to_sym
|
23
|
+
|
24
|
+
if match[5]
|
25
|
+
options[key] = match[6]
|
26
|
+
elsif match[2]
|
27
|
+
options[key] = false
|
28
|
+
else
|
29
|
+
options[key] = true
|
30
|
+
end
|
31
|
+
|
32
|
+
opt_stop = true if match[1]
|
33
|
+
else
|
34
|
+
options[:args] << arg
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
options
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
data/lib/temp/runner.rb
CHANGED
@@ -5,41 +5,27 @@ module Temp
|
|
5
5
|
# The Runner module contains methods for Temp's command line interface.
|
6
6
|
module Runner
|
7
7
|
|
8
|
-
|
8
|
+
def self.help
|
9
|
+
puts 'Usage: temp [options] [project] [template]'
|
10
|
+
end
|
11
|
+
|
12
|
+
# Runs Temp as a command line program
|
9
13
|
def self.start!(args)
|
10
14
|
conf = Temp::Config.new(Temp::Config::DEFAULT_CONF_FILE)
|
11
|
-
options =
|
12
|
-
|
13
|
-
OptionParser.new do |o|
|
14
|
-
o.banner = 'Usage: temp [options] [project] [template]'
|
15
|
-
|
16
|
-
o.on('-v', '--version', 'Show version information') do
|
17
|
-
puts "Temp #{Temp::VERSION}"
|
18
|
-
exit
|
19
|
-
end
|
20
|
-
|
21
|
-
o.on('-l', '--list [name]', 'List all templates') do |name|
|
22
|
-
if name
|
23
|
-
t = Temp::Template.new(name, conf)
|
24
|
-
puts "#{t.name} - #{t.desc}"
|
25
|
-
else
|
26
|
-
Temp::Template.all(conf).each do |t|
|
27
|
-
puts "#{t.name} - #{t.desc}"
|
28
|
-
end
|
29
|
-
end
|
30
|
-
exit
|
31
|
-
end
|
32
|
-
|
33
|
-
o.on('-t', '--template-options [opts]',
|
34
|
-
'Pass comma-separated option flags to the template') do |opts|
|
35
|
-
opts.split(',').each { |o| options[o.to_sym] = true }
|
36
|
-
end
|
37
|
-
end.parse!(args)
|
15
|
+
options = Temp::Options.parse(args)
|
38
16
|
conf.template_options = options
|
39
17
|
|
40
|
-
if
|
18
|
+
if options[:h] || options[:help]
|
19
|
+
help
|
20
|
+
exit
|
21
|
+
elsif options[:v] || options[:version]
|
22
|
+
puts "Temp #{Temp::VERSION}"
|
23
|
+
exit
|
24
|
+
end
|
25
|
+
|
26
|
+
if options[:args].size == 0
|
41
27
|
puts 'No template specified.'
|
42
|
-
elsif
|
28
|
+
elsif options[:args].size == 1
|
43
29
|
template = Temp::Template.new(ARGV[0], conf)
|
44
30
|
Temp::Project.new(Dir.pwd, template).create
|
45
31
|
else
|
@@ -52,8 +38,6 @@ module Temp
|
|
52
38
|
puts 'Cannot create project because file exists there.'
|
53
39
|
when Temp::Exceptions::TemplateNonExistentError
|
54
40
|
puts 'The specified template does not exist.'
|
55
|
-
when OptionParser::InvalidOption
|
56
|
-
puts e.message
|
57
41
|
else
|
58
42
|
raise e
|
59
43
|
end
|
data/lib/temp/tempfile.rb
CHANGED
@@ -5,7 +5,7 @@ module Temp
|
|
5
5
|
|
6
6
|
attr_reader :options, :info, :ignore_files, :erb_files
|
7
7
|
|
8
|
-
#
|
8
|
+
# Loads a Tempfile in the specified directory. Options can be passed so that
|
9
9
|
# they can be accessed from the Tempfile.
|
10
10
|
def initialize(dir, options = {})
|
11
11
|
@dir = File.expand_path(dir)
|
@@ -17,29 +17,29 @@ module Temp
|
|
17
17
|
instance_eval File.read(@file) if File.file? @file
|
18
18
|
end
|
19
19
|
|
20
|
-
#
|
20
|
+
# Gets the object's binding
|
21
21
|
def get_binding
|
22
22
|
binding
|
23
23
|
end
|
24
24
|
|
25
|
-
#
|
25
|
+
# Sets the template name
|
26
26
|
def name(str)
|
27
27
|
info[:name] = str
|
28
28
|
end
|
29
29
|
|
30
|
-
#
|
30
|
+
# Sets the template description
|
31
31
|
def desc(str)
|
32
32
|
info[:desc] = str
|
33
33
|
end
|
34
34
|
|
35
|
-
#
|
35
|
+
# Adds files to the ignore list by expanding the given glob(s)
|
36
36
|
def ignore(*files)
|
37
37
|
@ignore_files |= files.map do |file|
|
38
38
|
Dir.glob(File.join(@dir, file)).map { |f| f.sub(@dir + '/', '') }
|
39
39
|
end.flatten
|
40
40
|
end
|
41
41
|
|
42
|
-
#
|
42
|
+
# Adds files to the ERB list by expanding the given glob(s)
|
43
43
|
def use_erb(*files)
|
44
44
|
@erb_files |= files.map do |file|
|
45
45
|
Dir.glob(File.join(@dir, file)).map { |f| f.sub(@dir + '/', '') }
|
data/lib/temp/template.rb
CHANGED
@@ -7,7 +7,7 @@ module Temp
|
|
7
7
|
|
8
8
|
attr_reader :conf, :tempfile, :path, :filename, :name, :desc, :files
|
9
9
|
|
10
|
-
#
|
10
|
+
# Returns an array of all templates in the template directory
|
11
11
|
def self.all(conf)
|
12
12
|
Dir.entries(conf.template_dir).map do |t|
|
13
13
|
unless t == '.' || t == '..'
|
@@ -16,7 +16,7 @@ module Temp
|
|
16
16
|
end.compact
|
17
17
|
end
|
18
18
|
|
19
|
-
#
|
19
|
+
# Loads a template
|
20
20
|
def initialize(name, conf)
|
21
21
|
@conf = conf
|
22
22
|
@path = File.join(@conf.template_dir, name)
|
@@ -29,7 +29,7 @@ module Temp
|
|
29
29
|
@files = Template.find_files(@path) - @tempfile.ignore_files
|
30
30
|
end
|
31
31
|
|
32
|
-
#
|
32
|
+
# Finds all of the files in a path
|
33
33
|
def self.find_files(path)
|
34
34
|
path = File.expand_path(path)
|
35
35
|
Dir.glob(File.join(path, '**/*')).map { |f| f.sub(path + '/', '') }
|
data/lib/temp/version.rb
CHANGED
data/spec/temp_spec.rb
CHANGED
@@ -39,6 +39,40 @@ describe Temp do
|
|
39
39
|
FileUtils.rm_r(@test_dir)
|
40
40
|
end
|
41
41
|
|
42
|
+
describe Temp::Options do
|
43
|
+
|
44
|
+
it 'should have the correct arguments' do
|
45
|
+
Temp::Options.parse(['foo', 'bar'])[:args].should == ['foo', 'bar']
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'should have the correct options' do
|
49
|
+
options = Temp::Options.parse(['-f', '-bar-baz'])
|
50
|
+
options[:f].should be_true
|
51
|
+
options[:bar_baz].should be_true
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'should set "no" options to false' do
|
55
|
+
Temp::Options.parse(['-no-baz'])[:baz].should be_false
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'should stop parsing options after a --' do
|
59
|
+
options = Temp::Options.parse(['-foo', '--', '-bar'])
|
60
|
+
options[:foo].should be_true
|
61
|
+
options[:args].should == ['-bar']
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'should stop parsing options after an option with --' do
|
65
|
+
options = Temp::Options.parse(['--stop-hammertime', '-foo'])
|
66
|
+
options[:args].should == ['-foo']
|
67
|
+
options[:stop_hammertime].should be_true
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'should set an option to a given value' do
|
71
|
+
Temp::Options.parse(['-foo=bar'])[:foo].should == 'bar'
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
|
42
76
|
describe Temp::Config do
|
43
77
|
|
44
78
|
it 'should load the config file' do
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 4
|
9
|
+
version: 0.0.4
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Austin Gatchell
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-10-
|
17
|
+
date: 2011-10-16 00:00:00 -05:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -50,6 +50,7 @@ files:
|
|
50
50
|
- lib/temp.rb
|
51
51
|
- lib/temp/config.rb
|
52
52
|
- lib/temp/exceptions.rb
|
53
|
+
- lib/temp/options.rb
|
53
54
|
- lib/temp/project.rb
|
54
55
|
- lib/temp/runner.rb
|
55
56
|
- lib/temp/tempfile.rb
|