ez_gen 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []