gbud 0.1.0 → 0.2.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.
- checksums.yaml +5 -5
- data/bin/gbud +2 -0
- data/lib/gbud.rb +7 -80
- data/lib/gbud/base.rb +107 -0
- data/lib/gbud/messages.rb +48 -0
- data/lib/gbud/project_builder.rb +59 -42
- data/lib/gbud/project_metadata.rb +2 -0
- data/lib/gbud/user_prompt.rb +3 -0
- data/lib/templates/base.rb.erb +18 -0
- data/lib/templates/cli.rb.erb +10 -2
- data/lib/templates/{guardfile.rb.erb → copyright_snippet.rb.erb} +1 -10
- data/lib/templates/executable.rb.erb +7 -20
- data/lib/templates/gemfile.rb.erb +13 -24
- data/lib/templates/gemspec.rb.erb +11 -25
- data/lib/templates/hello.rb.erb +14 -25
- data/lib/templates/namespace.rb.erb +9 -20
- data/lib/templates/rakefile.rb.erb +4 -17
- data/lib/templates/readme.md.erb +1 -1
- data/lib/templates/test_hello.rb.erb +7 -20
- data/test/test_project_builder.rb +2 -0
- data/test/test_project_metadata.rb +2 -0
- metadata +10 -9
- data/lib/gbud/namespace.rb +0 -26
- data/lib/templates/main.rb.erb +0 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: '08400d19d7eaebaa06fa06c93e65cda305fdeb19a5157777eb5ae5710f302a1b'
|
4
|
+
data.tar.gz: 29ef7e5b4ba0e28cc7980e25f2fccbb2faedef4d9a321cc7e112907a0411b65a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7e1583d70fc000685405151618599f59486c1bafa2f49a3862ea13c0c886e1ebc48e6d417d94bacc5b1d6b3ddb9ca02b5fcccd48f30331d2c61c62c6eec8062e
|
7
|
+
data.tar.gz: ca8446b4b303f74c3697a4cf4cf329398373217bc6bbf104aa1c46fe6134153b9aea0b79e19dec8538759b323d78398d5e603d4119509c11f38f934a9427f55b
|
data/bin/gbud
CHANGED
data/lib/gbud.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# Copyright 2017 Richard Davis
|
2
4
|
#
|
3
5
|
# This file is part of gbud.
|
@@ -15,89 +17,14 @@
|
|
15
17
|
# You should have received a copy of the GNU General Public License
|
16
18
|
# along with gbud. If not, see <http://www.gnu.org/licenses/>.
|
17
19
|
|
20
|
+
require 'gbud/base'
|
21
|
+
|
18
22
|
##
|
19
|
-
# =
|
23
|
+
# = GBud
|
20
24
|
# Author:: Richard Davis
|
21
25
|
# Copyright:: Copyright 2017 Richard Davis
|
22
26
|
# License:: GNU Public License 3
|
23
27
|
#
|
24
|
-
#
|
25
|
-
|
26
|
-
require 'optparse'
|
27
|
-
require 'erb'
|
28
|
-
|
29
|
-
require 'gbud/user_prompt'
|
30
|
-
require 'gbud/project_metadata'
|
31
|
-
require 'gbud/project_builder'
|
32
|
-
|
33
|
-
trap('INT') do
|
34
|
-
puts "\nTerminating..."
|
35
|
-
exit
|
28
|
+
# Module for namespacing application classes.
|
29
|
+
module GBud
|
36
30
|
end
|
37
|
-
|
38
|
-
options = {}
|
39
|
-
|
40
|
-
optparse = OptionParser.new do |opts|
|
41
|
-
opts.banner = 'Usage: gbud [options]'
|
42
|
-
|
43
|
-
opts.on('-n', '--new NAME', 'Creates a project given a name') do |name|
|
44
|
-
options[:name] = name
|
45
|
-
end
|
46
|
-
|
47
|
-
opts.on('--cli', 'Creates an executable with option parsing') do
|
48
|
-
options[:cli] = true
|
49
|
-
end
|
50
|
-
|
51
|
-
opts.on('--no-cli', 'Creates an executable without option parsing') do
|
52
|
-
options[:cli] = false
|
53
|
-
end
|
54
|
-
|
55
|
-
opts.on('-l', '--license', 'Displays the copyright notice') do
|
56
|
-
puts "This program is free software: you can redistribute it and/or modify
|
57
|
-
it under the terms of the GNU General Public License as published by
|
58
|
-
the Free Software Foundation, either version 3 of the License, or
|
59
|
-
(at your option) any later version.
|
60
|
-
"
|
61
|
-
end
|
62
|
-
|
63
|
-
opts.on('-w', '--warranty', 'Displays the warranty statement') do
|
64
|
-
puts "This program is distributed in the hope that it will be useful,
|
65
|
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
66
|
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
67
|
-
GNU General Public License for more details.
|
68
|
-
"
|
69
|
-
end
|
70
|
-
|
71
|
-
opts.on_tail('-h', '--help', 'Displays the help screen') do
|
72
|
-
puts opts
|
73
|
-
exit
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
optparse.parse!
|
78
|
-
|
79
|
-
if options[:name]
|
80
|
-
metadata = GBud::ProjectMetadata.new
|
81
|
-
metadata.name = options[:name]
|
82
|
-
if metadata.name.nil?
|
83
|
-
puts 'Invalid gem name. See RubyGems for gem naming conventions.'
|
84
|
-
exit 1
|
85
|
-
end
|
86
|
-
metadata.authors = GBud::UserPrompt.get_value 'Project authors => '
|
87
|
-
loop do
|
88
|
-
metadata.email = GBud::UserPrompt.get_value 'Project email => '
|
89
|
-
break unless metadata.email.nil?
|
90
|
-
puts 'Please enter a valid email address.'
|
91
|
-
end
|
92
|
-
loop do
|
93
|
-
metadata.url = GBud::UserPrompt.get_value 'Project website => '
|
94
|
-
break unless metadata.url.nil?
|
95
|
-
puts 'Please enter a valid project URL'
|
96
|
-
end
|
97
|
-
metadata.summary = GBud::UserPrompt.get_value 'Enter a short summary of the project => '
|
98
|
-
metadata.description = GBud::UserPrompt.get_value 'Enter a description of the project => '
|
99
|
-
options[:cli] = true if options[:cli].nil?
|
100
|
-
project = GBud::ProjectBuilder.new metadata.to_hash, options[:cli]
|
101
|
-
project.build
|
102
|
-
end
|
103
|
-
|
data/lib/gbud/base.rb
ADDED
@@ -0,0 +1,107 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Copyright 2017 Richard Davis
|
4
|
+
#
|
5
|
+
# This file is part of gbud.
|
6
|
+
#
|
7
|
+
# gbud is free software: you can redistribute it and/or modify
|
8
|
+
# it under the terms of the GNU General Public License as published by
|
9
|
+
# the Free Software Foundation, either version 3 of the License, or
|
10
|
+
# (at your option) any later version.
|
11
|
+
#
|
12
|
+
# gbud is distributed in the hope that it will be useful,
|
13
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15
|
+
# GNU General Public License for more details.
|
16
|
+
#
|
17
|
+
# You should have received a copy of the GNU General Public License
|
18
|
+
# along with gbud. If not, see <http://www.gnu.org/licenses/>.
|
19
|
+
|
20
|
+
##
|
21
|
+
# = base.rb
|
22
|
+
# Author:: Richard Davis
|
23
|
+
# Copyright:: Copyright 2017 Richard Davis
|
24
|
+
# License:: GNU Public License 3
|
25
|
+
#
|
26
|
+
# The main script for handling user input and program execution.
|
27
|
+
require 'fileutils'
|
28
|
+
require 'optparse'
|
29
|
+
require 'erb'
|
30
|
+
require 'English'
|
31
|
+
|
32
|
+
require 'gbud/user_prompt'
|
33
|
+
require 'gbud/project_metadata'
|
34
|
+
require 'gbud/project_builder'
|
35
|
+
require 'gbud/messages'
|
36
|
+
require 'gbud/helpers'
|
37
|
+
|
38
|
+
trap('INT') do
|
39
|
+
puts "\nTerminating..."
|
40
|
+
exit
|
41
|
+
end
|
42
|
+
|
43
|
+
options = {}
|
44
|
+
|
45
|
+
optparse = OptionParser.new do |opts|
|
46
|
+
opts.banner = 'Usage: gbud [options]'
|
47
|
+
|
48
|
+
opts.on('-n', '--new NAME', 'Creates a project given a name') do |name|
|
49
|
+
options[:name] = name
|
50
|
+
end
|
51
|
+
|
52
|
+
opts.on('--cli', 'Creates an executable with option parsing') do
|
53
|
+
options[:cli] = true
|
54
|
+
end
|
55
|
+
|
56
|
+
opts.on('--no-cli', 'Creates an executable without option parsing') do
|
57
|
+
options[:cli] = false
|
58
|
+
end
|
59
|
+
|
60
|
+
opts.on('-l', '--license', 'Displays the copyright notice') do
|
61
|
+
puts GBud::Messages.license
|
62
|
+
end
|
63
|
+
|
64
|
+
opts.on('-w', '--warranty', 'Displays the warranty statement') do
|
65
|
+
puts GBud::Messages.warranty
|
66
|
+
end
|
67
|
+
|
68
|
+
opts.on_tail('-h', '--help', 'Displays the help screen') do
|
69
|
+
puts opts
|
70
|
+
exit
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
begin
|
75
|
+
optparse.parse!
|
76
|
+
rescue OptionParser::InvalidOption, OptionParser::MissingArgument
|
77
|
+
puts $ERROR_INFO.to_s
|
78
|
+
puts 'Use -h or --help for options.'
|
79
|
+
exit 1
|
80
|
+
end
|
81
|
+
|
82
|
+
if options[:name]
|
83
|
+
metadata = GBud::ProjectMetadata.new
|
84
|
+
metadata.name = options[:name]
|
85
|
+
if metadata.name.nil?
|
86
|
+
puts 'Invalid gem name. See RubyGems for gem naming conventions.'
|
87
|
+
exit 1
|
88
|
+
end
|
89
|
+
metadata.authors = GBud::UserPrompt.get_value 'Project authors => '
|
90
|
+
loop do
|
91
|
+
metadata.email = GBud::UserPrompt.get_value 'Project email => '
|
92
|
+
break unless metadata.email.nil?
|
93
|
+
|
94
|
+
puts 'Please enter a valid email address.'
|
95
|
+
end
|
96
|
+
loop do
|
97
|
+
metadata.url = GBud::UserPrompt.get_value 'Project website => '
|
98
|
+
break unless metadata.url.nil?
|
99
|
+
|
100
|
+
puts 'Please enter a valid project URL'
|
101
|
+
end
|
102
|
+
metadata.summary = GBud::UserPrompt.get_value 'Enter a short summary => '
|
103
|
+
metadata.description = GBud::UserPrompt.get_value 'Enter a description => '
|
104
|
+
options[:cli] = true if options[:cli].nil?
|
105
|
+
project = GBud::ProjectBuilder.new metadata.to_hash, options[:cli]
|
106
|
+
project.build
|
107
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Copyright 2017 Richard Davis
|
4
|
+
#
|
5
|
+
# This file is part of gbud.
|
6
|
+
#
|
7
|
+
# gbud is free software: you can redistribute it and/or modify
|
8
|
+
# it under the terms of the GNU General Public License as published by
|
9
|
+
# the Free Software Foundation, either version 3 of the License, or
|
10
|
+
# (at your option) any later version.
|
11
|
+
#
|
12
|
+
# gbud is distributed in the hope that it will be useful,
|
13
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15
|
+
# GNU General Public License for more details.
|
16
|
+
#
|
17
|
+
# You should have received a copy of the GNU General Public License
|
18
|
+
# along with gbud. If not, see <http://www.gnu.org/licenses/>.
|
19
|
+
|
20
|
+
module GBud
|
21
|
+
##
|
22
|
+
# = Messages
|
23
|
+
# Author:: Richard Davis
|
24
|
+
# Copyright:: Copyright 2017 Richard Davis
|
25
|
+
# License:: GNU Public License 3
|
26
|
+
#
|
27
|
+
# Module containing methods used to prompt the user for program
|
28
|
+
# input.
|
29
|
+
module Messages
|
30
|
+
##
|
31
|
+
# Returns the license message.
|
32
|
+
def self.license
|
33
|
+
"This program is free software: you can redistribute it and/or modify
|
34
|
+
it under the terms of the GNU General Public License as published by
|
35
|
+
the Free Software Foundation, either version 3 of the License, or
|
36
|
+
(at your option) any later version."
|
37
|
+
end
|
38
|
+
|
39
|
+
##
|
40
|
+
# Returns the warranty message.
|
41
|
+
def self.warranty
|
42
|
+
"This program is distributed in the hope that it will be useful,
|
43
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
44
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
45
|
+
GNU General Public License for more details."
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
data/lib/gbud/project_builder.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# Copyright 2017 Richard Davis
|
2
4
|
#
|
3
5
|
# This file is part of gbud.
|
@@ -40,20 +42,18 @@ module GBud
|
|
40
42
|
|
41
43
|
##
|
42
44
|
# Instantiates a ProjectBuilder object
|
43
|
-
def initialize
|
45
|
+
def initialize(metadata, cli)
|
44
46
|
@metadata = metadata
|
45
|
-
|
46
47
|
@cli = cli
|
47
48
|
@templates = {
|
48
49
|
'readme.md': 'README.md',
|
49
50
|
'gemspec.rb': "#{metadata[:name]}.gemspec",
|
50
51
|
'gemfile.rb': 'Gemfile',
|
51
|
-
'guardfile.rb': 'Guardfile',
|
52
52
|
'rakefile.rb': 'Rakefile',
|
53
|
-
'
|
53
|
+
'base.rb': 'base.rb',
|
54
54
|
'hello.rb': 'hello.rb',
|
55
55
|
'test_hello.rb': 'test_hello.rb',
|
56
|
-
'namespace.rb': '
|
56
|
+
'namespace.rb': "#{metadata[:name].to_s.tr('-', '_')}.rb"
|
57
57
|
}
|
58
58
|
@assets = {
|
59
59
|
license: 'LICENSE'
|
@@ -62,12 +62,11 @@ module GBud
|
|
62
62
|
project_dir: "#{metadata[:name]}/",
|
63
63
|
project_lib_dir: "#{metadata[:name]}/lib/",
|
64
64
|
project_lib_project_dir: "#{metadata[:name]}/lib/#{metadata[:name]}/",
|
65
|
-
project_test_dir: "#{metadata[:name]}/test/"
|
65
|
+
project_test_dir: "#{metadata[:name]}/test/"
|
66
66
|
}
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
end
|
67
|
+
exit unless cli == true
|
68
|
+
@templates[:'executable.rb'] = metadata[:name].to_s
|
69
|
+
@paths[:project_bin_dir] = "#{metadata[:name]}/bin/"
|
71
70
|
end
|
72
71
|
|
73
72
|
##
|
@@ -83,7 +82,7 @@ module GBud
|
|
83
82
|
##
|
84
83
|
# Creates the project directories
|
85
84
|
def make_directories
|
86
|
-
@paths.each do |
|
85
|
+
@paths.each do |_path, dir|
|
87
86
|
FileUtils.mkdir_p(dir)
|
88
87
|
end
|
89
88
|
end
|
@@ -94,7 +93,7 @@ module GBud
|
|
94
93
|
@templates.each do |template, filename|
|
95
94
|
directory = map_template template
|
96
95
|
file = File.new "#{directory}#{filename}", 'w+'
|
97
|
-
file.puts(render
|
96
|
+
file.puts(render(template))
|
98
97
|
file.close
|
99
98
|
make_executable if template == :'executable.rb'
|
100
99
|
end
|
@@ -102,32 +101,32 @@ module GBud
|
|
102
101
|
|
103
102
|
##
|
104
103
|
# Maps each templated file to correct directory
|
105
|
-
def map_template
|
104
|
+
def map_template(template)
|
106
105
|
case template
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
106
|
+
when :'readme.md'
|
107
|
+
@paths[:project_dir]
|
108
|
+
when :'gemspec.rb'
|
109
|
+
@paths[:project_dir]
|
110
|
+
when :'gemfile.rb'
|
111
|
+
@paths[:project_dir]
|
112
|
+
when :'rakefile.rb'
|
113
|
+
@paths[:project_dir]
|
114
|
+
when :'base.rb'
|
115
|
+
@paths[:project_lib_project_dir]
|
116
|
+
when :'hello.rb'
|
117
|
+
@paths[:project_lib_project_dir]
|
118
|
+
when :'executable.rb'
|
119
|
+
@paths[:project_bin_dir]
|
120
|
+
when :'test_hello.rb'
|
121
|
+
@paths[:project_test_dir]
|
122
|
+
when :'namespace.rb'
|
123
|
+
@paths[:project_lib_dir]
|
125
124
|
end
|
126
125
|
end
|
127
126
|
|
128
127
|
##
|
129
128
|
# Renders the templates into files
|
130
|
-
def render
|
129
|
+
def render(template)
|
131
130
|
path = File.expand_path(File.join(File.dirname(__FILE__),
|
132
131
|
'..',
|
133
132
|
'templates',
|
@@ -138,7 +137,7 @@ module GBud
|
|
138
137
|
##
|
139
138
|
# Flags the CLI file as executable
|
140
139
|
def make_executable
|
141
|
-
File.chmod(
|
140
|
+
File.chmod(0o755, "#{@paths[:project_bin_dir]}#{@templates[:'executable.rb']}")
|
142
141
|
end
|
143
142
|
|
144
143
|
##
|
@@ -147,22 +146,40 @@ module GBud
|
|
147
146
|
@assets.each do |asset, filename|
|
148
147
|
directory = map_asset asset
|
149
148
|
FileUtils.cp(File.expand_path(File.join(File.dirname(__FILE__),
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
149
|
+
'..',
|
150
|
+
'assets',
|
151
|
+
filename.to_s)),
|
152
|
+
"#{directory}#{filename}")
|
154
153
|
end
|
155
154
|
end
|
156
155
|
|
157
156
|
##
|
158
157
|
# Maps each asset file to correct directory
|
159
|
-
def map_asset
|
158
|
+
def map_asset(asset)
|
160
159
|
case asset
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
160
|
+
when :gitignore
|
161
|
+
@paths[:project_dir]
|
162
|
+
when :license
|
163
|
+
@paths[:project_dir]
|
165
164
|
end
|
166
165
|
end
|
166
|
+
|
167
|
+
##
|
168
|
+
# Returns the string in camel case.
|
169
|
+
def camel_case(str)
|
170
|
+
str.split(/-|_/).each(&:capitalize!).join
|
171
|
+
end
|
172
|
+
|
173
|
+
##
|
174
|
+
# Returns the string in snake case.
|
175
|
+
def snake_case(str)
|
176
|
+
str.to_s.tr('-', '_')
|
177
|
+
end
|
178
|
+
|
179
|
+
##
|
180
|
+
# Returns an enumberable as string separated by commas
|
181
|
+
def listify(arr)
|
182
|
+
arr.join(', ')
|
183
|
+
end
|
167
184
|
end
|
168
185
|
end
|
data/lib/gbud/user_prompt.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# Copyright 2017 Richard Davis
|
2
4
|
#
|
3
5
|
# This file is part of gbud.
|
@@ -51,6 +53,7 @@ module GBud
|
|
51
53
|
print 'Is this correct? (Y/N) => '
|
52
54
|
confirm = gets.chomp.to_s.upcase
|
53
55
|
return false unless confirm == 'Y'
|
56
|
+
|
54
57
|
true
|
55
58
|
end
|
56
59
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
<%= render 'copyright_snippet.rb' %>
|
4
|
+
|
5
|
+
##
|
6
|
+
# = /lib/<%= snake_case(@metadata[:name]) %>.rb
|
7
|
+
# Author:: <%= listify(@metadata[:authors]) %>
|
8
|
+
# Copyright:: Copyright <%= Date.today.year %> <%= listify(@metadata[:authors]) %>
|
9
|
+
# License:: GNU Public License 3
|
10
|
+
#
|
11
|
+
# Main application file that loads other files.
|
12
|
+
require '<%= @metadata[:name] %>/hello'
|
13
|
+
|
14
|
+
<%= render 'cli.rb' if @cli == true %>
|
15
|
+
# NOTE: You should replace the greet functionality with some of your own code.
|
16
|
+
# Use the hello.rb file as a guide for structuring your code, and ensure
|
17
|
+
# that you adjust the require statement as well as the CLI option (if
|
18
|
+
# included), adding additional files/CLI options in a similar fashion.
|
data/lib/templates/cli.rb.erb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'optparse'
|
2
|
+
require 'English'
|
2
3
|
|
3
4
|
trap('INT') do
|
4
5
|
puts "\nTerminating..."
|
@@ -36,8 +37,15 @@ GNU General Public License for more details.
|
|
36
37
|
end
|
37
38
|
end
|
38
39
|
|
39
|
-
|
40
|
+
begin
|
41
|
+
optparse.parse!
|
42
|
+
rescue OptionParser::InvalidOption, OptionParser::MissingArgument
|
43
|
+
puts $ERROR_INFO.to_s
|
44
|
+
puts 'Use -h or --help for options.'
|
45
|
+
exit 1
|
46
|
+
end
|
40
47
|
|
41
48
|
if options[:greet]
|
42
|
-
|
49
|
+
# Displays the greeting which serves as a functional test
|
50
|
+
puts <%= camel_case(@metadata[:name]) %>::Hello.greeting(options[:greet])
|
43
51
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright <%= Date.today.year %> <%= @metadata[:authors]
|
1
|
+
# Copyright <%= Date.today.year %> <%= listify(@metadata[:authors]) %>
|
2
2
|
#
|
3
3
|
# This file is part of <%= @metadata[:name] %>.
|
4
4
|
#
|
@@ -14,12 +14,3 @@
|
|
14
14
|
#
|
15
15
|
# You should have received a copy of the GNU General Public License
|
16
16
|
# along with <%= @metadata[:name] %>. If not, see <http://www.gnu.org/licenses/>.
|
17
|
-
|
18
|
-
directories(%w[lib test])\
|
19
|
-
.select { |d| Dir.exist?(d) ? d : UI.warning("Directory #{d} does not exist") }
|
20
|
-
|
21
|
-
guard :minitest do
|
22
|
-
watch(%r{^test/(.*)\/?test_(.*)\.rb$})
|
23
|
-
watch(%r{^lib/(.*/)?([^/]+)\.rb$}) { |m| "test/#{m[1]}test_#{m[2]}.rb" }
|
24
|
-
watch(%r{^test/test_helper\.rb$}) { 'test' }
|
25
|
-
end
|
@@ -1,31 +1,18 @@
|
|
1
1
|
#!/usr/bin/env ruby'
|
2
|
-
#
|
3
|
-
|
4
|
-
|
5
|
-
#
|
6
|
-
# <%= @metadata[:name] %> is free software: you can redistribute it and/or modify
|
7
|
-
# it under the terms of the GNU General Public License as published by
|
8
|
-
# the Free Software Foundation, either version 3 of the License, or
|
9
|
-
# (at your option) any later version.
|
10
|
-
#
|
11
|
-
# <%= @metadata[:name] %> is distributed in the hope that it will be useful,
|
12
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
|
-
# GNU General Public License for more details.
|
15
|
-
#
|
16
|
-
# You should have received a copy of the GNU General Public License
|
17
|
-
# along with <%= @metadata[:name] %>. If not, see <http://www.gnu.org/licenses/>.
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
<%= render 'copyright_snippet.rb' %>
|
18
5
|
|
19
6
|
##
|
20
7
|
# = /bin/<%= @metadata[:name] %>
|
21
|
-
# Author:: <%= @metadata[:authors]
|
22
|
-
# Copyright:: Copyright <%= Date.today.year %> <%= @metadata[:authors]
|
8
|
+
# Author:: <%= listify(@metadata[:authors]) %>
|
9
|
+
# Copyright:: Copyright <%= Date.today.year %> <%= listify(@metadata[:authors]) %>
|
23
10
|
# License:: GNU Public License 3
|
24
11
|
#
|
25
12
|
# Project executable file.
|
26
13
|
begin
|
27
|
-
require '<%= @metadata[:name]
|
14
|
+
require '<%= snake_case(@metadata[:name])%>'
|
28
15
|
rescue LoadError
|
29
16
|
require 'rubygems'
|
30
|
-
require '<%= @metadata[:name]
|
17
|
+
require '<%= snake_case(@metadata[:name])%>'
|
31
18
|
end
|
@@ -1,33 +1,22 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
|
4
|
-
#
|
5
|
-
# <%= @metadata[:name] %> is free software: you can redistribute it and/or modify
|
6
|
-
# it under the terms of the GNU General Public License as published by
|
7
|
-
# the Free Software Foundation, either version 3 of the License, or
|
8
|
-
# (at your option) any later version.
|
9
|
-
#
|
10
|
-
# <%= @metadata[:name] %> is distributed in the hope that it will be useful,
|
11
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
-
# GNU General Public License for more details.
|
14
|
-
#
|
15
|
-
# You should have received a copy of the GNU General Public License
|
16
|
-
# along with <%= @metadata[:name] %>. If not, see <http://www.gnu.org/licenses/>.
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
<%= render 'copyright_snippet.rb' %>
|
17
4
|
|
18
5
|
source 'https://rubygems.org'
|
19
|
-
ruby '2.
|
6
|
+
ruby '2.5.1'
|
20
7
|
|
21
|
-
group :development do
|
8
|
+
group :development, :test do
|
22
9
|
# Minitest for unit tests
|
23
|
-
gem 'minitest', '~> 5.
|
24
|
-
# Use Guard to run automated tests
|
25
|
-
gem 'guard', '~> 2.14', '>= 2.14.1'
|
26
|
-
gem 'guard-minitest', '~> 2.4', '>= 2.4.6'
|
10
|
+
gem 'minitest', '~> 5.11', '>= 5.11.3'
|
27
11
|
# Rake executes tasks defined in the Rakefile
|
28
|
-
gem 'rake', '~> 12.
|
12
|
+
gem 'rake', '~> 12.3', '>= 12.3.1'
|
13
|
+
end
|
14
|
+
|
15
|
+
group :development do
|
16
|
+
# Pry for debugging/REPL
|
17
|
+
gem 'pry', '~> 0.11.3'
|
29
18
|
# Rubocop for code style guidelines
|
30
|
-
gem 'rubocop', '~> 0.
|
19
|
+
gem 'rubocop', '~> 0.59.2'
|
31
20
|
# RDoc for generating documentation
|
32
21
|
gem 'rdoc', '~> 5.1'
|
33
22
|
end
|
@@ -1,40 +1,26 @@
|
|
1
|
-
#
|
2
|
-
# Copyright <%= Date.today.year %> <%= @metadata[:authors].join(', ') %>
|
3
|
-
#
|
4
|
-
# This file is part of <%= @metadata[:name] %>.
|
5
|
-
#
|
6
|
-
# <%= @metadata[:name] %> is free software: you can redistribute it and/or modify
|
7
|
-
# it under the terms of the GNU General Public License as published by
|
8
|
-
# the Free Software Foundation, either version 3 of the License, or
|
9
|
-
# (at your option) any later version.
|
10
|
-
#
|
11
|
-
# <%= @metadata[:name] %> is distributed in the hope that it will be useful,
|
12
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
|
-
# GNU General Public License for more details.
|
15
|
-
#
|
16
|
-
# You should have received a copy of the GNU General Public License
|
17
|
-
# along with <%= @metadata[:name] %>. If not, see <http://www.gnu.org/licenses/>.
|
1
|
+
# frozen_string_literal: true
|
18
2
|
|
19
|
-
|
3
|
+
<%= render 'copyright_snippet.rb' %>
|
4
|
+
|
5
|
+
lib = File.expand_path('../lib', __dir__)
|
20
6
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
21
7
|
|
22
8
|
Gem::Specification.new do |s|
|
23
9
|
s.name = '<%= @metadata[:name] %>'
|
24
10
|
s.version = '<%= @metadata[:version] %>'
|
25
11
|
s.platform = Gem::Platform::RUBY
|
26
|
-
s.authors = <%= @metadata[:authors] %>
|
12
|
+
s.authors = <%= @metadata[:authors].to_s.tr('"', "'") %>
|
27
13
|
s.email = '<%= @metadata[:email] %>'
|
28
14
|
s.homepage = '<%= @metadata[:url] %>'
|
29
15
|
s.summary = '<%= @metadata[:summary] %>'
|
30
|
-
s.description =
|
31
|
-
|
32
|
-
|
16
|
+
s.description = <<~HEREDOC
|
17
|
+
<%= @metadata[:description] %>
|
18
|
+
HEREDOC
|
33
19
|
s.license = '<%= @metadata[:license] %>'
|
34
20
|
s.files = Dir['lib/**/*']
|
35
|
-
|
36
|
-
|
37
|
-
|
21
|
+
<% if @cli == true %>
|
22
|
+
s.executables = ['<%= @metadata[:name] %>']
|
23
|
+
<% end %>
|
38
24
|
s.test_files = Dir['test/**/*']
|
39
25
|
s.require_path = ['lib']
|
40
26
|
end
|
data/lib/templates/hello.rb.erb
CHANGED
@@ -1,30 +1,19 @@
|
|
1
|
-
#
|
2
|
-
#
|
3
|
-
# This file is part of <%= @metadata[:name] %>.
|
4
|
-
#
|
5
|
-
# <%= @metadata[:name] %> is free software: you can redistribute it and/or modify
|
6
|
-
# it under the terms of the GNU General Public License as published by
|
7
|
-
# the Free Software Foundation, either version 3 of the License, or
|
8
|
-
# (at your option) any later version.
|
9
|
-
#
|
10
|
-
# <%= @metadata[:name] %> is distributed in the hope that it will be useful,
|
11
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
-
# GNU General Public License for more details.
|
14
|
-
#
|
15
|
-
# You should have received a copy of the GNU General Public License
|
16
|
-
# along with <%= @metadata[:name] %>. If not, see <http://www.gnu.org/licenses/>.
|
1
|
+
# frozen_string_literal: true
|
17
2
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
#
|
23
|
-
#
|
24
|
-
#
|
25
|
-
|
3
|
+
<%= render 'copyright_snippet.rb' %>
|
4
|
+
|
5
|
+
module <%= camel_case(@metadata[:name]) %>
|
6
|
+
##
|
7
|
+
# = Hello
|
8
|
+
# Author:: <%= listify(@metadata[:authors]) %>
|
9
|
+
# Copyright:: Copyright <%= Date.today.year %> <%= listify(@metadata[:authors]) %>
|
10
|
+
# License:: GNU Public License 3
|
11
|
+
#
|
12
|
+
# Contains modularized code for project; given example provides a greeting
|
26
13
|
class Hello
|
27
|
-
|
14
|
+
##
|
15
|
+
# Returns a greeting provided a name.
|
16
|
+
def self.greeting(name)
|
28
17
|
"Hello, #{name}."
|
29
18
|
end
|
30
19
|
end
|
@@ -1,26 +1,15 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
# it under the terms of the GNU General Public License as published by
|
7
|
-
# the Free Software Foundation, either version 3 of the License, or
|
8
|
-
# (at your option) any later version.
|
9
|
-
#
|
10
|
-
# <%= @metadata[:name] %> is distributed in the hope that it will be useful,
|
11
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
-
# GNU General Public License for more details.
|
14
|
-
#
|
15
|
-
# You should have received a copy of the GNU General Public License
|
16
|
-
# along with <%= @metadata[:name] %>. If not, see <http://www.gnu.org/licenses/>.
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
<%= render 'copyright_snippet.rb' %>
|
4
|
+
|
5
|
+
require '<%= metadata[:name] %>/base'
|
17
6
|
|
18
7
|
##
|
19
|
-
# = <%= @metadata[:name]
|
20
|
-
# Author:: <%= @metadata[:authors]
|
21
|
-
# Copyright:: Copyright <%= Date.today.year %> <%= @metadata[:authors]
|
8
|
+
# = <%= camel_case(@metadata[:name]) %>
|
9
|
+
# Author:: <%= listify(@metadata[:authors]) %>
|
10
|
+
# Copyright:: Copyright <%= Date.today.year %> <%= listify(@metadata[:authors]) %>
|
22
11
|
# License:: GNU Public License 3
|
23
12
|
#
|
24
13
|
# Module for namespacing application classes.
|
25
|
-
module <%= @metadata[:name]
|
14
|
+
module <%= camel_case(@metadata[:name]) %>
|
26
15
|
end
|
@@ -1,25 +1,12 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
|
4
|
-
#
|
5
|
-
# <%= @metadata[:name] %> is free software: you can redistribute it and/or modify
|
6
|
-
# it under the terms of the GNU General Public License as published by
|
7
|
-
# the Free Software Foundation, either version 3 of the License, or
|
8
|
-
# (at your option) any later version.
|
9
|
-
#
|
10
|
-
# <%= @metadata[:name] %> is distributed in the hope that it will be useful,
|
11
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
-
# GNU General Public License for more details.
|
14
|
-
#
|
15
|
-
# You should have received a copy of the GNU General Public License
|
16
|
-
# along with <%= @metadata[:name] %>. If not, see <http://www.gnu.org/licenses/>.
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
<%= render 'copyright_snippet.rb' %>
|
17
4
|
|
18
5
|
require 'rake/testtask'
|
19
6
|
require 'rdoc/task'
|
20
7
|
|
21
8
|
Rake::TestTask.new do |t|
|
22
|
-
|
9
|
+
t.libs << 'test'
|
23
10
|
end
|
24
11
|
|
25
12
|
RDoc::Task.new :rdoc do |rdoc|
|
data/lib/templates/readme.md.erb
CHANGED
@@ -1,30 +1,17 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
|
4
|
-
#
|
5
|
-
# <%= @metadata[:name] %> is free software: you can redistribute it and/or modify
|
6
|
-
# it under the terms of the GNU General Public License as published by
|
7
|
-
# the Free Software Foundation, either version 3 of the License, or
|
8
|
-
# (at your option) any later version.
|
9
|
-
#
|
10
|
-
# <%= @metadata[:name] %> is distributed in the hope that it will be useful,
|
11
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
-
# GNU General Public License for more details.
|
14
|
-
#
|
15
|
-
# You should have received a copy of the GNU General Public License
|
16
|
-
# along with <%= @metadata[:name] %>. If not, see <http://www.gnu.org/licenses/>.
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
<%= render 'copyright_snippet.rb' %>
|
17
4
|
|
18
5
|
require 'minitest/autorun'
|
19
6
|
require_relative '../lib/<%= @metadata[:name] %>/hello'
|
20
7
|
|
21
8
|
##
|
22
9
|
# = HelloTest
|
23
|
-
# Author:: <%= @metadata[:authors]
|
24
|
-
# Copyright:: Copyright <%= Date.today.year %> <%= @metadata[:authors]
|
10
|
+
# Author:: <%= listify(@metadata[:authors]) %>
|
11
|
+
# Copyright:: Copyright <%= Date.today.year %> <%= listify(@metadata[:authors]) %>
|
25
12
|
# License:: GNU Public License 3
|
26
13
|
#
|
27
|
-
# Contains
|
14
|
+
# Contains tests for Hello class.
|
28
15
|
class HelloTest < Minitest::Test
|
29
16
|
##
|
30
17
|
# Initializes test with sample data
|
@@ -35,6 +22,6 @@ class HelloTest < Minitest::Test
|
|
35
22
|
##
|
36
23
|
# Ensures the greeter is behaving as expected
|
37
24
|
def test_hello
|
38
|
-
assert_equal('Hello, friend.', <%= @metadata[:name]
|
25
|
+
assert_equal('Hello, friend.', <%= camel_case(@metadata[:name]) %>::Hello.greeting(@name))
|
39
26
|
end
|
40
27
|
end
|
metadata
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gbud
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Richard Davis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-10-04 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description: |
|
14
|
-
|
15
|
-
|
13
|
+
description: |
|
14
|
+
This project aims to make starting a new gem project simple by automating
|
15
|
+
the creation of all required files and directories for you.
|
16
16
|
email: rvdavis@member.fsf.org
|
17
17
|
executables:
|
18
18
|
- gbud
|
@@ -22,17 +22,18 @@ files:
|
|
22
22
|
- bin/gbud
|
23
23
|
- lib/assets/LICENSE
|
24
24
|
- lib/gbud.rb
|
25
|
-
- lib/gbud/
|
25
|
+
- lib/gbud/base.rb
|
26
|
+
- lib/gbud/messages.rb
|
26
27
|
- lib/gbud/project_builder.rb
|
27
28
|
- lib/gbud/project_metadata.rb
|
28
29
|
- lib/gbud/user_prompt.rb
|
30
|
+
- lib/templates/base.rb.erb
|
29
31
|
- lib/templates/cli.rb.erb
|
32
|
+
- lib/templates/copyright_snippet.rb.erb
|
30
33
|
- lib/templates/executable.rb.erb
|
31
34
|
- lib/templates/gemfile.rb.erb
|
32
35
|
- lib/templates/gemspec.rb.erb
|
33
|
-
- lib/templates/guardfile.rb.erb
|
34
36
|
- lib/templates/hello.rb.erb
|
35
|
-
- lib/templates/main.rb.erb
|
36
37
|
- lib/templates/namespace.rb.erb
|
37
38
|
- lib/templates/rakefile.rb.erb
|
38
39
|
- lib/templates/readme.md.erb
|
@@ -59,7 +60,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
59
60
|
version: '0'
|
60
61
|
requirements: []
|
61
62
|
rubyforge_project:
|
62
|
-
rubygems_version: 2.6
|
63
|
+
rubygems_version: 2.7.6
|
63
64
|
signing_key:
|
64
65
|
specification_version: 4
|
65
66
|
summary: Initializes the basic structure of a gem
|
data/lib/gbud/namespace.rb
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
# Copyright 2017 Richard Davis
|
2
|
-
#
|
3
|
-
# This file is part of gbud.
|
4
|
-
#
|
5
|
-
# gbud is free software: you can redistribute it and/or modify
|
6
|
-
# it under the terms of the GNU General Public License as published by
|
7
|
-
# the Free Software Foundation, either version 3 of the License, or
|
8
|
-
# (at your option) any later version.
|
9
|
-
#
|
10
|
-
# gbud is distributed in the hope that it will be useful,
|
11
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
-
# GNU General Public License for more details.
|
14
|
-
#
|
15
|
-
# You should have received a copy of the GNU General Public License
|
16
|
-
# along with gbud. If not, see <http://www.gnu.org/licenses/>.
|
17
|
-
|
18
|
-
##
|
19
|
-
# = GBud
|
20
|
-
# Author:: Richard Davis
|
21
|
-
# Copyright:: Copyright 2017 Richard Davis
|
22
|
-
# License:: GNU Public License 3
|
23
|
-
#
|
24
|
-
# Module for namespacing application classes.
|
25
|
-
module GBud
|
26
|
-
end
|
data/lib/templates/main.rb.erb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
# Copyright <%= Date.today.year %> <%= @metadata[:authors].join(', ') %>
|
2
|
-
#
|
3
|
-
# This file is part of <%= @metadata[:name] %>.
|
4
|
-
#
|
5
|
-
# <%= @metadata[:name] %> is free software: you can redistribute it and/or modify
|
6
|
-
# it under the terms of the GNU General Public License as published by
|
7
|
-
# the Free Software Foundation, either version 3 of the License, or
|
8
|
-
# (at your option) any later version.
|
9
|
-
#
|
10
|
-
# <%= @metadata[:name] %> is distributed in the hope that it will be useful,
|
11
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
-
# GNU General Public License for more details.
|
14
|
-
#
|
15
|
-
# You should have received a copy of the GNU General Public License
|
16
|
-
# along with <%= @metadata[:name] %>. If not, see <http://www.gnu.org/licenses/>.
|
17
|
-
|
18
|
-
##
|
19
|
-
# = /lib/<%= @metadata[:name] %>.rb
|
20
|
-
# Author:: <%= @metadata[:authors].join(', ') %>
|
21
|
-
# Copyright:: Copyright <%= Date.today.year %> <%= @metadata[:authors].join(', ') %>
|
22
|
-
# License:: GNU Public License 3
|
23
|
-
#
|
24
|
-
# Main application file that loads other files.
|
25
|
-
require '<%= @metadata[:name] %>/hello'
|
26
|
-
|
27
|
-
<%= render 'cli.rb' if @cli == true %>
|