ore 0.8.1 → 0.9.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/.gitignore +10 -0
- data/ChangeLog.md +70 -7
- data/LICENSE.txt +1 -1
- data/README.md +93 -88
- data/Rakefile +5 -5
- data/data/ore/templates/base/README.md.erb +3 -0
- data/data/ore/templates/base/README.rdoc.erb +3 -0
- data/data/ore/templates/base/README.tt.erb +3 -0
- data/data/ore/templates/base/template.yml +2 -2
- data/data/ore/templates/bin/bin/[name].erb +1 -1
- data/data/ore/templates/bundler/Gemfile.erb +14 -3
- data/data/ore/templates/bundler/template.yml +7 -2
- data/data/ore/templates/bundler_tasks/_tasks.erb +1 -0
- data/data/ore/templates/bundler_tasks/template.yml +6 -0
- data/data/ore/templates/gem_package_task/_tasks.erb +5 -0
- data/data/ore/templates/gem_package_task/template.yml +4 -0
- data/data/ore/templates/gemspec/[name].gemspec.erb +45 -0
- data/data/ore/templates/gemspec/template.yml +2 -0
- data/data/ore/templates/{base → gemspec_yml}/[name].gemspec.erb +36 -55
- data/data/ore/templates/gemspec_yml/gemspec.yml.erb +41 -0
- data/data/ore/templates/gemspec_yml/template.yml +2 -0
- data/data/ore/templates/git/.gitignore.erb +3 -0
- data/data/ore/templates/git/template.yml +2 -0
- data/data/ore/templates/hg/.hgignore.erb +3 -0
- data/data/ore/templates/hg/template.yml +2 -0
- data/data/ore/templates/jeweler_tasks/_tasks.erb +3 -12
- data/data/ore/templates/jeweler_tasks/template.yml +4 -3
- data/data/ore/templates/rdoc/_tasks.erb +1 -1
- data/data/ore/templates/rdoc/template.yml +3 -0
- data/data/ore/templates/rspec/_tasks.erb +1 -1
- data/data/ore/templates/rspec/spec/spec_helper.rb.erb +1 -1
- data/data/ore/templates/rspec/template.yml +2 -2
- data/data/ore/templates/rubygems_tasks/_tasks.erb +14 -0
- data/data/ore/templates/rubygems_tasks/template.yml +7 -0
- data/data/ore/templates/rvmrc/.rvmrc.erb +9 -15
- data/data/ore/templates/yard/_gemfile_development.erb +0 -1
- data/data/ore/templates/yard/_tasks.erb +1 -1
- data/data/ore/templates/yard/template.yml +5 -2
- data/gemspec.yml +5 -7
- data/lib/ore.rb +0 -2
- data/lib/ore/actions.rb +85 -0
- data/lib/ore/cli.rb +2 -32
- data/lib/ore/config.rb +20 -20
- data/lib/ore/generator.rb +101 -203
- data/lib/ore/naming.rb +160 -0
- data/lib/ore/options.rb +67 -0
- data/lib/ore/template.rb +8 -0
- data/lib/ore/template/directory.rb +60 -41
- data/lib/ore/template/helpers.rb +55 -7
- data/lib/ore/template/template.rb +61 -0
- data/ore.gemspec +35 -55
- data/spec/gemspec_examples.rb +33 -0
- data/spec/generator_spec.rb +188 -70
- data/spec/helpers/generator.rb +4 -2
- data/spec/helpers/matchers.rb +33 -0
- data/spec/naming_spec.rb +56 -0
- data/spec/spec_helper.rb +1 -1
- metadata +104 -117
- data/data/ore/templates/base/.gitignore.erb +0 -3
- data/data/ore/templates/base/_gemfile_development.erb +0 -3
- data/data/ore/templates/base/gemspec.yml.erb +0 -30
- data/data/ore/templates/bundler/_development_dependencies.erb +0 -1
- data/data/ore/templates/bundler/_gitignore.erb +0 -2
- data/data/ore/templates/bundler/_tasks.erb +0 -3
- data/data/ore/templates/jeweler_tasks/_development_dependencies.erb +0 -3
- data/data/ore/templates/jeweler_tasks/_gemfile_development.erb +0 -1
- data/data/ore/templates/ore_tasks/_development_dependencies.erb +0 -3
- data/data/ore/templates/ore_tasks/_gemfile_development.erb +0 -1
- data/data/ore/templates/ore_tasks/_tasks.erb +0 -14
- data/data/ore/templates/ore_tasks/template.yml +0 -5
- data/data/ore/templates/rdoc/_gitignore.erb +0 -1
- data/data/ore/templates/rspec/_development_dependencies.erb +0 -3
- data/data/ore/templates/rspec/_gemfile_development.erb +0 -1
- data/data/ore/templates/yard/_development_dependencies.erb +0 -1
data/gemspec.yml
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
name: ore
|
2
|
-
version: 0.
|
3
|
-
summary: Mine
|
2
|
+
version: 0.9.0
|
3
|
+
summary: Mine beautiful RubyGems from Ore
|
4
4
|
description:
|
5
5
|
Ore is a flexible Ruby project generator. Unlike other Ruby project
|
6
6
|
generators, Ore provides many builtin templates and allows custom
|
@@ -9,7 +9,7 @@ description:
|
|
9
9
|
license: MIT
|
10
10
|
authors: Postmodern
|
11
11
|
email: postmodern.mod3@gmail.com
|
12
|
-
homepage:
|
12
|
+
homepage: https://github.com/ruby-ore/ore#readme
|
13
13
|
post_install_message: |
|
14
14
|
**************************************************************************
|
15
15
|
Generate a new Ruby library:
|
@@ -27,11 +27,9 @@ post_install_message: |
|
|
27
27
|
**************************************************************************
|
28
28
|
|
29
29
|
dependencies:
|
30
|
-
ore-core: ~> 0.1, >= 0.1.4
|
31
|
-
env: ~> 0.1.2
|
32
30
|
thor: ~> 0.14.3
|
33
31
|
|
34
32
|
development_dependencies:
|
35
|
-
|
33
|
+
rubygems-tasks: ~> 0.2
|
36
34
|
rspec: ~> 2.4
|
37
|
-
yard: ~> 0.7
|
35
|
+
yard: ~> 0.7
|
data/lib/ore.rb
CHANGED
data/lib/ore/actions.rb
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
module Ore
|
2
|
+
#
|
3
|
+
# Additional actions for the {Generator}.
|
4
|
+
#
|
5
|
+
# @api semipublic
|
6
|
+
#
|
7
|
+
# @since 0.9.0
|
8
|
+
#
|
9
|
+
module Actions
|
10
|
+
protected
|
11
|
+
|
12
|
+
#
|
13
|
+
# Runs a command.
|
14
|
+
#
|
15
|
+
# @param [String] command
|
16
|
+
# The command to execute.
|
17
|
+
#
|
18
|
+
# @param [Hash] config
|
19
|
+
# Additional options.
|
20
|
+
#
|
21
|
+
# @see http://rubydoc.info/gems/thor/Thor/Actions#run-instance_method
|
22
|
+
#
|
23
|
+
def run(command,config={})
|
24
|
+
super(command,config.merge(:capture => true))
|
25
|
+
end
|
26
|
+
|
27
|
+
#
|
28
|
+
# Generates an empty directory.
|
29
|
+
#
|
30
|
+
# @param [String] dest
|
31
|
+
# The uninterpolated destination path.
|
32
|
+
#
|
33
|
+
# @return [String]
|
34
|
+
# The destination path of the directory.
|
35
|
+
#
|
36
|
+
# @since 0.7.1
|
37
|
+
#
|
38
|
+
def generate_dir(dest)
|
39
|
+
return if @generated_dirs.has_key?(dest)
|
40
|
+
|
41
|
+
path = interpolate(dest)
|
42
|
+
empty_directory path
|
43
|
+
|
44
|
+
@generated_dirs[dest] = path
|
45
|
+
return path
|
46
|
+
end
|
47
|
+
|
48
|
+
#
|
49
|
+
# Generates a file.
|
50
|
+
#
|
51
|
+
# @param [String] dest
|
52
|
+
# The uninterpolated destination path.
|
53
|
+
#
|
54
|
+
# @param [String] file
|
55
|
+
# The source file or template.
|
56
|
+
#
|
57
|
+
# @param [Hash] options
|
58
|
+
# Additional options.
|
59
|
+
#
|
60
|
+
# @option options [Boolean] :template
|
61
|
+
# Specifies that the file is a template, and should be rendered.
|
62
|
+
#
|
63
|
+
# @return [String]
|
64
|
+
# The destination path of the file.
|
65
|
+
#
|
66
|
+
# @since 0.7.1
|
67
|
+
#
|
68
|
+
def generate_file(dest,file,options={})
|
69
|
+
return if @generated_files.has_key?(dest)
|
70
|
+
|
71
|
+
path = interpolate(dest)
|
72
|
+
|
73
|
+
if options[:template]
|
74
|
+
@current_template_dir = File.dirname(dest)
|
75
|
+
template file, path
|
76
|
+
@current_template_dir = nil
|
77
|
+
else
|
78
|
+
copy_file file, path
|
79
|
+
end
|
80
|
+
|
81
|
+
@generated_files[dest] = path
|
82
|
+
return path
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
data/lib/ore/cli.rb
CHANGED
@@ -7,10 +7,6 @@ require 'uri'
|
|
7
7
|
module Ore
|
8
8
|
class CLI < Thor
|
9
9
|
|
10
|
-
include Config
|
11
|
-
|
12
|
-
default_task :gem
|
13
|
-
|
14
10
|
map '-l' => :list
|
15
11
|
map '-u' => :update
|
16
12
|
map '-r' => :remove
|
@@ -46,7 +42,7 @@ module Ore
|
|
46
42
|
name = File.basename(url.path)
|
47
43
|
name.gsub!(/\.git$/,'')
|
48
44
|
|
49
|
-
path = File.join(
|
45
|
+
path = File.join(Config::TEMPLATES_DIR,name)
|
50
46
|
|
51
47
|
if File.directory?(path)
|
52
48
|
say "Template #{name} already installed.", :red
|
@@ -80,7 +76,7 @@ module Ore
|
|
80
76
|
#
|
81
77
|
def remove(name)
|
82
78
|
name = File.basename(name)
|
83
|
-
path = File.join(
|
79
|
+
path = File.join(Config::TEMPLATES_DIR,name)
|
84
80
|
|
85
81
|
unless File.exists?(path)
|
86
82
|
say "Unknown template: #{name}", :red
|
@@ -90,31 +86,5 @@ module Ore
|
|
90
86
|
FileUtils.rm_rf(path)
|
91
87
|
end
|
92
88
|
|
93
|
-
desc 'gemspec', 'Dumps a Ruby gemspec for the project'
|
94
|
-
method_option :ruby, :type => :boolean,
|
95
|
-
:default => true,
|
96
|
-
:aliases => '-R'
|
97
|
-
method_option :yaml, :type => :boolean, :aliases => '-Y'
|
98
|
-
|
99
|
-
def gemspec
|
100
|
-
require 'ore/project'
|
101
|
-
|
102
|
-
gemspec = Project.find.to_gemspec
|
103
|
-
|
104
|
-
if options.yaml?
|
105
|
-
print YAML.dump(gemspec)
|
106
|
-
else
|
107
|
-
print gemspec.to_ruby
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
desc 'gem', 'Builds a RubyGem'
|
112
|
-
|
113
|
-
def gem
|
114
|
-
require 'ore/project'
|
115
|
-
|
116
|
-
Project.find.build!
|
117
|
-
end
|
118
|
-
|
119
89
|
end
|
120
90
|
end
|
data/lib/ore/config.rb
CHANGED
@@ -1,25 +1,25 @@
|
|
1
|
+
require 'rubygems'
|
1
2
|
require 'pathname'
|
2
|
-
require 'env'
|
3
3
|
|
4
4
|
module Ore
|
5
5
|
module Config
|
6
|
-
# Specifies whether user settings will be loaded
|
7
|
-
@@enabled = true
|
8
|
-
|
9
6
|
# The users home directory
|
10
|
-
|
7
|
+
HOME = Gem.user_home
|
11
8
|
|
12
9
|
# Ore config directory
|
13
|
-
|
10
|
+
PATH = File.join(HOME,'.ore')
|
14
11
|
|
15
12
|
# Default options file.
|
16
|
-
|
13
|
+
OPTIONS_FILE = File.join(PATH,'options.yml')
|
17
14
|
|
18
15
|
# Custom Ore Templates directory
|
19
|
-
|
16
|
+
TEMPLATES_DIR = File.join(PATH,'templates')
|
20
17
|
|
21
18
|
# The `data/` directory for Ore
|
22
|
-
|
19
|
+
DATA_DIR = File.expand_path(File.join('..','..','data'),File.dirname(__FILE__))
|
20
|
+
|
21
|
+
# Specifies whether user settings will be loaded
|
22
|
+
@@enabled = true
|
23
23
|
|
24
24
|
#
|
25
25
|
# Enables access to user settings.
|
@@ -48,17 +48,17 @@ module Ore
|
|
48
48
|
# @raise [RuntimeError]
|
49
49
|
# The `~/.ore/options.yml` did not contain a YAML encoded Hash.
|
50
50
|
#
|
51
|
-
# @since 0.
|
51
|
+
# @since 0.9.0
|
52
52
|
#
|
53
|
-
def Config.
|
53
|
+
def Config.options
|
54
54
|
options = {}
|
55
55
|
|
56
|
-
if (@@enabled && File.file?(
|
57
|
-
new_options = YAML.load_file(
|
56
|
+
if (@@enabled && File.file?(OPTIONS_FILE))
|
57
|
+
new_options = YAML.load_file(OPTIONS_FILE)
|
58
58
|
|
59
59
|
# default options must be a Hash
|
60
60
|
unless new_options.kind_of?(Hash)
|
61
|
-
raise("#{
|
61
|
+
raise("#{OPTIONS_FILE} must contain a YAML encoded Hash")
|
62
62
|
end
|
63
63
|
|
64
64
|
new_options.each do |name,value|
|
@@ -79,7 +79,7 @@ module Ore
|
|
79
79
|
# The path of a Ore template directory.
|
80
80
|
#
|
81
81
|
def Config.builtin_templates
|
82
|
-
path = File.join(
|
82
|
+
path = File.join(DATA_DIR,'ore','templates')
|
83
83
|
|
84
84
|
if File.directory?(path)
|
85
85
|
Dir.glob("#{path}/*") do |template|
|
@@ -98,11 +98,11 @@ module Ore
|
|
98
98
|
# The path of a Ore template directory.
|
99
99
|
#
|
100
100
|
def Config.installed_templates
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
101
|
+
if @@enabled
|
102
|
+
if File.directory?(TEMPLATES_DIR)
|
103
|
+
Dir.glob("#{TEMPLATES_DIR}/*") do |template|
|
104
|
+
yield template if File.directory?(template)
|
105
|
+
end
|
106
106
|
end
|
107
107
|
end
|
108
108
|
end
|
data/lib/ore/generator.rb
CHANGED
@@ -1,105 +1,24 @@
|
|
1
|
-
require 'ore/template/directory'
|
2
|
-
require 'ore/template/interpolations'
|
3
|
-
require 'ore/template/helpers'
|
4
|
-
require 'ore/naming'
|
5
1
|
require 'ore/config'
|
2
|
+
require 'ore/options'
|
3
|
+
require 'ore/actions'
|
4
|
+
require 'ore/naming'
|
5
|
+
require 'ore/template'
|
6
6
|
|
7
7
|
require 'thor/group'
|
8
8
|
require 'date'
|
9
9
|
require 'set'
|
10
|
-
require '
|
10
|
+
require 'uri'
|
11
11
|
|
12
12
|
module Ore
|
13
13
|
class Generator < Thor::Group
|
14
14
|
|
15
15
|
include Thor::Actions
|
16
|
+
include Options
|
17
|
+
include Actions
|
16
18
|
include Naming
|
17
19
|
include Template::Interpolations
|
18
20
|
include Template::Helpers
|
19
21
|
|
20
|
-
#
|
21
|
-
# The templates registered with the generator.
|
22
|
-
#
|
23
|
-
def self.templates
|
24
|
-
@@templates ||= {}
|
25
|
-
end
|
26
|
-
|
27
|
-
#
|
28
|
-
# Determines whether a template was registered.
|
29
|
-
#
|
30
|
-
# @param [Symbol, String] name
|
31
|
-
# The name of the template.
|
32
|
-
#
|
33
|
-
# @return [Boolean]
|
34
|
-
# Specifies whether the template was registered.
|
35
|
-
#
|
36
|
-
# @since 0.7.2
|
37
|
-
#
|
38
|
-
def self.template?(name)
|
39
|
-
self.templates.has_key?(name.to_sym)
|
40
|
-
end
|
41
|
-
|
42
|
-
#
|
43
|
-
# Registers a template with the generator.
|
44
|
-
#
|
45
|
-
# @param [String] path
|
46
|
-
# The path to the template.
|
47
|
-
#
|
48
|
-
# @return [Symbol]
|
49
|
-
# The name of the registered template.
|
50
|
-
#
|
51
|
-
# @raise [StandardError]
|
52
|
-
# The given path was not a directory.
|
53
|
-
#
|
54
|
-
def self.register_template(path)
|
55
|
-
unless File.directory?(path)
|
56
|
-
raise(StandardError,"#{path.dump} is must be a directory")
|
57
|
-
end
|
58
|
-
|
59
|
-
name = File.basename(path).to_sym
|
60
|
-
|
61
|
-
self.templates[name] = path
|
62
|
-
return name
|
63
|
-
end
|
64
|
-
|
65
|
-
#
|
66
|
-
# Default options for the generator.
|
67
|
-
#
|
68
|
-
# @return [Hash{Symbol => Object}]
|
69
|
-
# The option names and default values.
|
70
|
-
#
|
71
|
-
# @since 0.5.0
|
72
|
-
#
|
73
|
-
def self.defaults
|
74
|
-
@@defaults ||= {
|
75
|
-
:templates => [],
|
76
|
-
:version => '0.1.0',
|
77
|
-
:summary => 'TODO: Summary',
|
78
|
-
:description => 'TODO: Description',
|
79
|
-
:license => 'MIT',
|
80
|
-
:authors => [Env.user],
|
81
|
-
:ore_tasks => true,
|
82
|
-
:rdoc => true,
|
83
|
-
:rspec => true,
|
84
|
-
:git => true
|
85
|
-
}
|
86
|
-
end
|
87
|
-
|
88
|
-
#
|
89
|
-
# Defines a generator option.
|
90
|
-
#
|
91
|
-
# @param [Symbol] name
|
92
|
-
# The name of the option.
|
93
|
-
#
|
94
|
-
# @param [Hash{Symbol => Object}] options
|
95
|
-
# The Thor options of the option.
|
96
|
-
#
|
97
|
-
# @since 0.5.0
|
98
|
-
#
|
99
|
-
def self.generator_option(name,options={})
|
100
|
-
class_option(name,options.merge(:default => defaults[name]))
|
101
|
-
end
|
102
|
-
|
103
22
|
# The enabled templates.
|
104
23
|
attr_reader :enabled_templates
|
105
24
|
|
@@ -115,53 +34,16 @@ module Ore
|
|
115
34
|
# The generated files.
|
116
35
|
attr_reader :generated_files
|
117
36
|
|
118
|
-
#
|
119
|
-
|
120
|
-
#
|
121
|
-
def generate
|
122
|
-
self.destination_root = path
|
123
|
-
|
124
|
-
enable_templates!
|
125
|
-
initialize_variables!
|
126
|
-
|
127
|
-
say "Generating #{self.destination_root}", :green
|
128
|
-
|
129
|
-
generate_directories!
|
130
|
-
generate_files!
|
131
|
-
|
132
|
-
if options.git?
|
133
|
-
in_root do
|
134
|
-
unless File.directory?('.git')
|
135
|
-
run 'git init'
|
136
|
-
run 'git add .'
|
137
|
-
run 'git commit -m "Initial commit."'
|
138
|
-
end
|
139
|
-
end
|
140
|
-
end
|
141
|
-
end
|
142
|
-
|
143
|
-
protected
|
144
|
-
|
145
|
-
# merge default options
|
146
|
-
defaults.merge!(Config.default_options)
|
147
|
-
|
148
|
-
# register builtin templates
|
149
|
-
Config.builtin_templates { |path| register_template(path) }
|
150
|
-
# register installed templates
|
151
|
-
Config.installed_templates { |path| register_template(path) }
|
37
|
+
# disable the Thor namespace
|
38
|
+
namespace ''
|
152
39
|
|
153
|
-
|
154
|
-
templates.each_key do |name|
|
40
|
+
Template.templates.each_key do |name|
|
155
41
|
# skip the `base` template
|
156
42
|
next if name == :base
|
157
43
|
|
158
|
-
|
159
|
-
:default => defaults.fetch(name,false)
|
44
|
+
generator_option name, :type => :boolean
|
160
45
|
end
|
161
46
|
|
162
|
-
# disable the Thor namespace
|
163
|
-
namespace ''
|
164
|
-
|
165
47
|
# define the options
|
166
48
|
generator_option :markdown, :type => :boolean
|
167
49
|
generator_option :textile, :type => :boolean
|
@@ -177,69 +59,50 @@ module Ore
|
|
177
59
|
:banner => 'NAME [...]'
|
178
60
|
generator_option :email, :type => :string, :aliases => '-e'
|
179
61
|
generator_option :homepage, :type => :string, :aliases => '-U'
|
62
|
+
generator_option :bug_tracker, :type => :string, :aliases => '-B'
|
180
63
|
generator_option :license, :aliases => '-L'
|
181
|
-
generator_option :git, :type => :boolean
|
182
64
|
|
183
65
|
argument :path, :required => true
|
184
66
|
|
185
67
|
#
|
186
|
-
# Generates
|
187
|
-
#
|
188
|
-
# @param [String] dest
|
189
|
-
# The uninterpolated destination path.
|
190
|
-
#
|
191
|
-
# @return [String]
|
192
|
-
# The destination path of the directory.
|
193
|
-
#
|
194
|
-
# @since 0.7.1
|
68
|
+
# Generates a new project.
|
195
69
|
#
|
196
|
-
def
|
197
|
-
|
70
|
+
def generate
|
71
|
+
self.destination_root = path
|
198
72
|
|
199
|
-
|
200
|
-
|
73
|
+
enable_templates!
|
74
|
+
initialize_variables!
|
201
75
|
|
202
|
-
|
203
|
-
|
204
|
-
|
76
|
+
unless options.quiet?
|
77
|
+
say "Generating #{self.destination_root}", :green
|
78
|
+
end
|
205
79
|
|
206
|
-
|
207
|
-
|
208
|
-
#
|
209
|
-
# @param [String] dest
|
210
|
-
# The uninterpolated destination path.
|
211
|
-
#
|
212
|
-
# @param [String] file
|
213
|
-
# The source file or template.
|
214
|
-
#
|
215
|
-
# @param [Hash] options
|
216
|
-
# Additional options.
|
217
|
-
#
|
218
|
-
# @option options [Boolean] :template
|
219
|
-
# Specifies that the file is a template, and should be rendered.
|
220
|
-
#
|
221
|
-
# @return [String]
|
222
|
-
# The destination path of the file.
|
223
|
-
#
|
224
|
-
# @since 0.7.1
|
225
|
-
#
|
226
|
-
def generate_file(dest,file,options={})
|
227
|
-
return if @generated_files.has_key?(dest)
|
80
|
+
generate_directories!
|
81
|
+
generate_files!
|
228
82
|
|
229
|
-
|
83
|
+
in_root do
|
84
|
+
case @scm
|
85
|
+
when :git
|
86
|
+
run 'git init' unless File.directory?('.git')
|
87
|
+
run 'git add .'
|
88
|
+
run 'git commit -m "Initial commit."'
|
89
|
+
when :hg
|
90
|
+
run 'hg init' unless File.directory?('.hg')
|
91
|
+
run 'hg add .'
|
92
|
+
run 'hg commit -m "Initial commit."'
|
93
|
+
when :svn
|
94
|
+
@ignore.each do |pattern|
|
95
|
+
run "svn propset svn:ignore #{pattern.dump}"
|
96
|
+
end
|
230
97
|
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
@current_template_dir = nil
|
235
|
-
else
|
236
|
-
copy_file file, path
|
98
|
+
run 'svn add .'
|
99
|
+
run 'svn commit -m "Initial commit."'
|
100
|
+
end
|
237
101
|
end
|
238
|
-
|
239
|
-
@generated_files[dest] = path
|
240
|
-
return path
|
241
102
|
end
|
242
103
|
|
104
|
+
protected
|
105
|
+
|
243
106
|
#
|
244
107
|
# Enables a template, adding it to the generator.
|
245
108
|
#
|
@@ -253,7 +116,7 @@ module Ore
|
|
253
116
|
|
254
117
|
return false if @enabled_templates.include?(name)
|
255
118
|
|
256
|
-
unless (template_dir =
|
119
|
+
unless (template_dir = Template.templates[name])
|
257
120
|
say "Unknown template #{name}", :red
|
258
121
|
exit -1
|
259
122
|
end
|
@@ -290,7 +153,7 @@ module Ore
|
|
290
153
|
|
291
154
|
return false if @disabled_templates.include?(name)
|
292
155
|
|
293
|
-
unless (template_dir =
|
156
|
+
unless (template_dir = Template.templates[name])
|
294
157
|
say "Unknown template #{name}", :red
|
295
158
|
exit -1
|
296
159
|
end
|
@@ -307,22 +170,22 @@ module Ore
|
|
307
170
|
# Enables templates.
|
308
171
|
#
|
309
172
|
def enable_templates!
|
310
|
-
@templates
|
311
|
-
@enabled_templates
|
173
|
+
@templates = []
|
174
|
+
@enabled_templates = Set[]
|
312
175
|
@disabled_templates = Set[]
|
313
176
|
|
314
177
|
enable_template :base
|
315
178
|
|
316
179
|
# enable the default templates first
|
317
|
-
|
318
|
-
if (
|
180
|
+
Options.defaults.each_key do |name|
|
181
|
+
if (Template.template?(name) && options[name])
|
319
182
|
enable_template(name)
|
320
183
|
end
|
321
184
|
end
|
322
185
|
|
323
186
|
# enable the templates specified by option
|
324
187
|
options.each do |name,value|
|
325
|
-
if (
|
188
|
+
if (Template.template?(name) && value)
|
326
189
|
enable_template(name)
|
327
190
|
end
|
328
191
|
end
|
@@ -340,27 +203,42 @@ module Ore
|
|
340
203
|
# Initializes variables for the templates.
|
341
204
|
#
|
342
205
|
def initialize_variables!
|
343
|
-
@
|
344
|
-
@
|
206
|
+
@root = destination_root
|
207
|
+
@project_dir = File.basename(@root)
|
208
|
+
@name = (options.name || @project_dir)
|
345
209
|
|
346
|
-
@modules
|
210
|
+
@modules = modules_of(@name)
|
347
211
|
@module_depth = @modules.length
|
348
|
-
@module
|
212
|
+
@module = @modules.last
|
349
213
|
|
350
|
-
@namespace
|
214
|
+
@namespace = namespace_of(@name)
|
351
215
|
@namespace_dirs = namespace_dirs_of(@name)
|
352
216
|
@namespace_path = namespace_path_of(@name)
|
353
|
-
@namespace_dir
|
217
|
+
@namespace_dir = @namespace_dirs.last
|
354
218
|
|
355
|
-
@version
|
356
|
-
@summary
|
219
|
+
@version = options.version
|
220
|
+
@summary = options.summary
|
357
221
|
@description = options.description
|
358
|
-
@license
|
359
|
-
@
|
360
|
-
@
|
361
|
-
@
|
362
|
-
|
363
|
-
|
222
|
+
@license = options.license
|
223
|
+
@authors = options.authors
|
224
|
+
@author = @authors.first
|
225
|
+
@github_user = if options.git?
|
226
|
+
`git config github.user`.chomp
|
227
|
+
end
|
228
|
+
|
229
|
+
@email = options.email
|
230
|
+
@safe_email = @email.sub('@',' at ') if @email
|
231
|
+
@homepage = if options.homepage
|
232
|
+
URI(options.homepage)
|
233
|
+
elsif !(@github_user.nil? || @github_user.empty?)
|
234
|
+
URI("https://github.com/#{@github_user}/#{@name}#readme")
|
235
|
+
else
|
236
|
+
URI("https://rubygems.org/gems/#{@name}")
|
237
|
+
end
|
238
|
+
@bug_tracker = case @homepage.host
|
239
|
+
when 'github.com'
|
240
|
+
"https://#{@homepage.host}#{@homepage.path}/issues"
|
241
|
+
end
|
364
242
|
|
365
243
|
@markup = if options.markdown?
|
366
244
|
:markdown
|
@@ -370,18 +248,38 @@ module Ore
|
|
370
248
|
:rdoc
|
371
249
|
end
|
372
250
|
|
373
|
-
@
|
374
|
-
|
251
|
+
@scm = if File.directory?(File.join(@root,'.git'))
|
252
|
+
:git
|
253
|
+
elsif File.directory?(File.join(@root,'.hg'))
|
254
|
+
:hg
|
255
|
+
elsif File.directory?(File.join(@root,'.svn'))
|
256
|
+
:svn
|
257
|
+
elsif options.hg?
|
258
|
+
:hg
|
259
|
+
elsif options.git?
|
260
|
+
:git
|
261
|
+
end
|
262
|
+
|
263
|
+
@date = Date.today
|
264
|
+
@year = @date.year
|
375
265
|
@month = @date.month
|
376
|
-
@day
|
266
|
+
@day = @date.day
|
267
|
+
|
268
|
+
@ignore = SortedSet[]
|
269
|
+
@dependencies = {}
|
270
|
+
@development_dependencies = {}
|
377
271
|
|
378
272
|
@templates.each do |template|
|
273
|
+
@ignore.merge(template.ignore)
|
274
|
+
@dependencies.merge!(template.dependencies)
|
275
|
+
@development_dependencies.merge!(template.development_dependencies)
|
276
|
+
|
379
277
|
template.variables.each do |name,value|
|
380
278
|
instance_variable_set("@#{name}",value)
|
381
279
|
end
|
382
280
|
end
|
383
281
|
|
384
|
-
@generated_dirs
|
282
|
+
@generated_dirs = {}
|
385
283
|
@generated_files = {}
|
386
284
|
end
|
387
285
|
|