ez_gen 0.1.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 +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: []
|