ez_gen 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/bin/ez_gen +5 -0
- data/lib/ez_gen.rb +9 -0
- data/lib/ez_gen/generator.rb +207 -0
- data/lib/ez_gen/version.rb +3 -0
- metadata +80 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: ed6ea2992b32e37c2518ab930edcd58d187af1bf43269c8d0871c6baac696a56
|
4
|
+
data.tar.gz: 4574a72be283dd286a232cc104e26958f5b77a8a6ffb8c65b40288e754b78d76
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 29b60f219fa163832f63d43174aff96e2cfdd9f94ba7ac01bcb647fc3ec7f2d3e75d3e34f64dfd8eaaf2589a54314fda9d0163f6e639760e2032ff5ce8dc0d3b
|
7
|
+
data.tar.gz: 7c15d909a61a1085fba52d4137cd9d6f91fc29526f53c6b48ed7e42e96264b08756b19492ffb990cfc4186d715ac328b946ae1506e84ec2fe84af35bc2affb4d
|
data/bin/ez_gen
ADDED
data/lib/ez_gen.rb
ADDED
@@ -0,0 +1,207 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'pastel'
|
3
|
+
|
4
|
+
# file/class name
|
5
|
+
title = ARGV.first
|
6
|
+
lower_name = ARGV.last
|
7
|
+
upper_name = lower_name.split('_').map{|word| word.capitalize}.join
|
8
|
+
|
9
|
+
# create the directories
|
10
|
+
%w(lib test .scripts).each {|dir| FileUtils.mkdir_p "#{title}/#{dir}"}
|
11
|
+
|
12
|
+
# cd into new directory
|
13
|
+
Dir.chdir "#{title}"
|
14
|
+
|
15
|
+
# initialize git
|
16
|
+
`git init`
|
17
|
+
|
18
|
+
#write Rakefile
|
19
|
+
rake = File.open("Rakefile", "w")
|
20
|
+
rake.write(
|
21
|
+
'require "rake/testtask"
|
22
|
+
|
23
|
+
Rake::TestTask.new do |task|
|
24
|
+
task.pattern = "test/*_test.rb"
|
25
|
+
end
|
26
|
+
|
27
|
+
desc "Run single test file based on class name, ex: rake test_class person"
|
28
|
+
task :test_class do
|
29
|
+
ARGV.each { |arg| task arg.to_sym do ; end }
|
30
|
+
eval File.read("./test/#{ARGV.last}_test.rb")
|
31
|
+
end
|
32
|
+
|
33
|
+
desc "Generate new class and test, ex: rake g person"
|
34
|
+
task :g do
|
35
|
+
ARGV.each { |arg| task arg.to_sym do ; end }
|
36
|
+
ruby "./.scripts/generate.rb #{ARGV.last}"
|
37
|
+
end
|
38
|
+
'
|
39
|
+
)
|
40
|
+
rake.close
|
41
|
+
|
42
|
+
# write test helper
|
43
|
+
test_helper = File.open("test/test_helper.rb", "w")
|
44
|
+
test_helper.write(
|
45
|
+
"require 'simplecov'
|
46
|
+
SimpleCov.start
|
47
|
+
require 'minitest/autorun'
|
48
|
+
require 'minitest/pride'
|
49
|
+
require 'mocha/minitest'
|
50
|
+
"
|
51
|
+
)
|
52
|
+
test_helper.close
|
53
|
+
|
54
|
+
# write class template
|
55
|
+
class_file = File.open("lib/#{lower_name}.rb", 'w')
|
56
|
+
class_file.write("class #{upper_name}\n\nend")
|
57
|
+
class_file.close
|
58
|
+
|
59
|
+
# write test template
|
60
|
+
test_file = File.open("test/#{lower_name}_test.rb", 'w')
|
61
|
+
test_file.write(
|
62
|
+
"require './test/test_helper.rb'
|
63
|
+
require './lib/#{lower_name}.rb'
|
64
|
+
|
65
|
+
class #{upper_name}Test < Minitest::Test
|
66
|
+
def setup
|
67
|
+
@#{lower_name} = #{upper_name}.new
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_it_exists
|
71
|
+
assert_instance_of #{upper_name}, @#{lower_name}
|
72
|
+
end
|
73
|
+
end"
|
74
|
+
)
|
75
|
+
test_file.close
|
76
|
+
|
77
|
+
# write generator
|
78
|
+
generator = File.open("./.scripts/generate.rb", 'w')
|
79
|
+
generator.write(
|
80
|
+
'lower_name = ARGV.first
|
81
|
+
upper_name = lower_name.split("_").map{|word| word.capitalize}.join
|
82
|
+
|
83
|
+
class_file = File.open("lib/#{lower_name}.rb", "w")
|
84
|
+
class_file.write("class #{upper_name}\n\nend")
|
85
|
+
class_file.close
|
86
|
+
|
87
|
+
test_file = File.open("test/#{lower_name}_test.rb", "w")
|
88
|
+
test_file.write(
|
89
|
+
"require \'./test/test_helper.rb\'
|
90
|
+
require \'./lib/#{lower_name}.rb\'
|
91
|
+
|
92
|
+
class #{upper_name}Test < Minitest::Test
|
93
|
+
def setup
|
94
|
+
@#{lower_name} = #{upper_name}.new
|
95
|
+
end
|
96
|
+
|
97
|
+
def test_it_exists
|
98
|
+
assert_instance_of #{upper_name}, @#{lower_name}
|
99
|
+
end
|
100
|
+
end"
|
101
|
+
)
|
102
|
+
test_file.close
|
103
|
+
eval File.read(test_file)
|
104
|
+
puts ""
|
105
|
+
puts "Created \'lib/#{lower_name}.rb\' and \'test/#{lower_name}_test.rb\'"
|
106
|
+
puts ""
|
107
|
+
'
|
108
|
+
)
|
109
|
+
generator.close
|
110
|
+
|
111
|
+
# write README
|
112
|
+
readme = File.open("README.md", 'w')
|
113
|
+
readme.write(
|
114
|
+
'# Title
|
115
|
+
|
116
|
+
*Description*
|
117
|
+
|
118
|
+
## Table of Contents:
|
119
|
+
- [Running Locally](#running-locally)
|
120
|
+
- [Tech Stack](#tech-stack)
|
121
|
+
- [Contributors](#contributors)
|
122
|
+
|
123
|
+
***
|
124
|
+
## Running Locally
|
125
|
+
[top](#table-of-contents)
|
126
|
+
* Instructions to run locally
|
127
|
+
|
128
|
+
***
|
129
|
+
## Tech Stack
|
130
|
+
[top](#table-of-contents)
|
131
|
+
* Language version
|
132
|
+
* Framework, gems, etc.
|
133
|
+
|
134
|
+
***
|
135
|
+
## Contributors
|
136
|
+
[top](#table-of-contents)
|
137
|
+
* [<NAME HERE>](<LINK TO GITHUB>)
|
138
|
+
'
|
139
|
+
)
|
140
|
+
readme.close
|
141
|
+
|
142
|
+
# write pr template
|
143
|
+
pr = File.open("pull_request_template.md", "w")
|
144
|
+
pr.write(
|
145
|
+
"## Description
|
146
|
+
|
147
|
+
## Type of change
|
148
|
+
- [ ] Bug fix (non-breaking change which fixes an issue)
|
149
|
+
- [ ] Refactor (non-breaking change which maintains existing functionality)
|
150
|
+
- [ ] New feature (non-breaking change which adds functionality)
|
151
|
+
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
|
152
|
+
## Notes
|
153
|
+
|
154
|
+
## Test Results
|
155
|
+
```
|
156
|
+
|
157
|
+
```
|
158
|
+
"
|
159
|
+
)
|
160
|
+
pr.close
|
161
|
+
|
162
|
+
# write gitignore
|
163
|
+
ignore = File.open(".gitignore", "w")
|
164
|
+
ignore.write("coverage/")
|
165
|
+
ignore.close
|
166
|
+
|
167
|
+
# git
|
168
|
+
`git add .`
|
169
|
+
system("git commit -m 'Initial commit'")
|
170
|
+
system("git checkout -b dev")
|
171
|
+
|
172
|
+
# run the test
|
173
|
+
eval File.read(test_file)
|
174
|
+
|
175
|
+
# confirmation message
|
176
|
+
pastel = Pastel.new
|
177
|
+
message = {
|
178
|
+
spacing1: " " * 10,
|
179
|
+
spacing2: " " * 15,
|
180
|
+
title: pastel.bold.magenta("#{title}"),
|
181
|
+
repo: pastel.italic.cyan("Created new repository: "),
|
182
|
+
branch: pastel.italic.cyan("Switched to new branch: "),
|
183
|
+
dev: pastel.bold.magenta("dev"),
|
184
|
+
run: pastel.italic.cyan("Run: "),
|
185
|
+
cd: pastel.magenta.bold("cd #{title}"),
|
186
|
+
rake: pastel.magenta.bold("rake --tasks "),
|
187
|
+
options: pastel.italic.cyan("to see available rake tasks"),
|
188
|
+
then: pastel.italic.cyan("then..."),
|
189
|
+
instructions: pastel.cyan.bold("INSTRUCTIONS:")
|
190
|
+
}
|
191
|
+
4.times do
|
192
|
+
puts ""
|
193
|
+
end
|
194
|
+
puts message[:spacing1] + message[:repo] + message[:title]
|
195
|
+
puts ""
|
196
|
+
puts message[:spacing1] + message[:branch] + message[:dev]
|
197
|
+
puts ""
|
198
|
+
puts message[:spacing2] + message[:instructions]
|
199
|
+
puts ""
|
200
|
+
puts message[:spacing1] + message[:run] + message[:cd]
|
201
|
+
puts ""
|
202
|
+
puts message[:spacing1] + message[:then]
|
203
|
+
puts ""
|
204
|
+
puts message[:spacing1] + message[:run] + message[:rake] + message[:options]
|
205
|
+
4.times do
|
206
|
+
puts ""
|
207
|
+
end
|
metadata
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ez_gen
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Tyler Porter
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-08-21 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: pastel
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.8'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.8'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: simplecov
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.19'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0.19'
|
41
|
+
description: Enter a project name and the name of the class you'd like to create.
|
42
|
+
EzGen will generate a new git repo, class template, corresponding test template,
|
43
|
+
PR template, README template, and Rakefile.
|
44
|
+
email:
|
45
|
+
- tylerpporter@gmail.com
|
46
|
+
executables:
|
47
|
+
- ez_gen
|
48
|
+
extensions: []
|
49
|
+
extra_rdoc_files: []
|
50
|
+
files:
|
51
|
+
- bin/ez_gen
|
52
|
+
- lib/ez_gen.rb
|
53
|
+
- lib/ez_gen/generator.rb
|
54
|
+
- lib/ez_gen/version.rb
|
55
|
+
homepage: https://github.com/tylerpporter/ez_gen
|
56
|
+
licenses:
|
57
|
+
- MIT
|
58
|
+
metadata:
|
59
|
+
homepage_uri: https://github.com/tylerpporter/ez_gen
|
60
|
+
source_code_uri: https://github.com/tylerpporter/ez_gen
|
61
|
+
post_install_message:
|
62
|
+
rdoc_options: []
|
63
|
+
require_paths:
|
64
|
+
- lib
|
65
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 2.3.0
|
70
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
75
|
+
requirements: []
|
76
|
+
rubygems_version: 3.1.4
|
77
|
+
signing_key:
|
78
|
+
specification_version: 4
|
79
|
+
summary: Quickly create an environment to write and test Ruby code.
|
80
|
+
test_files: []
|