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.
@@ -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
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'ez_gen'
4
+
5
+ EzGen::Template.generate
@@ -0,0 +1,9 @@
1
+ require "ez_gen/version"
2
+
3
+ module EzGen
4
+ class Template
5
+ def self.generate
6
+ require 'ez_gen/generator.rb'
7
+ end
8
+ end
9
+ end
@@ -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
@@ -0,0 +1,3 @@
1
+ module EzGen
2
+ VERSION = "0.1.0"
3
+ 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: []