ez_gen 0.1.0 → 0.1.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ed6ea2992b32e37c2518ab930edcd58d187af1bf43269c8d0871c6baac696a56
4
- data.tar.gz: 4574a72be283dd286a232cc104e26958f5b77a8a6ffb8c65b40288e754b78d76
3
+ metadata.gz: 44da2666456bc3dcf5c19f7d6acab572f84277b2513e1057ed3c5e094dbc5d90
4
+ data.tar.gz: 7b038b4838049cbdb87ddb235996f6bf999b06a16fd6e35e39d0a321721d88b6
5
5
  SHA512:
6
- metadata.gz: 29b60f219fa163832f63d43174aff96e2cfdd9f94ba7ac01bcb647fc3ec7f2d3e75d3e34f64dfd8eaaf2589a54314fda9d0163f6e639760e2032ff5ce8dc0d3b
7
- data.tar.gz: 7c15d909a61a1085fba52d4137cd9d6f91fc29526f53c6b48ed7e42e96264b08756b19492ffb990cfc4186d715ac328b946ae1506e84ec2fe84af35bc2affb4d
6
+ metadata.gz: e224af021133ba8d5ac044b3550f96e19a6ed9ae8d277a45a3052720c9659bc2b9acb2319cb3076947295c39d487c5d0a68df05c8e062f7dbe0c9228aaf979d0
7
+ data.tar.gz: c1b012bb8718d79559d34def434578f20ea894ad0d0e03e24006966f1e06dcf5e7f740e971a9e6c5e4202ce94ad89d6ec4fd34ae03e912254a0e12ff3a724f28
data/bin/ez_gen CHANGED
@@ -2,4 +2,4 @@
2
2
 
3
3
  require 'ez_gen'
4
4
 
5
- EzGen::Template.generate
5
+ EzGen::Generator.generate_basic_env
@@ -1,9 +1,10 @@
1
- require "ez_gen/version"
1
+ require 'ez_gen/version'
2
+ require 'ez_gen/basic_env.rb'
2
3
 
3
4
  module EzGen
4
- class Template
5
- def self.generate
6
- require 'ez_gen/generator.rb'
5
+ class Generator
6
+ def self.generate_basic_env
7
+ BasicEnv.new.generate
7
8
  end
8
9
  end
9
10
  end
@@ -0,0 +1,52 @@
1
+ require 'fileutils'
2
+ require_relative 'file_writer'
3
+ require_relative 'message_writer'
4
+
5
+ class BasicEnv
6
+ def initialize
7
+ @title = ARGV.first
8
+ @file_writer = FileWriter.new(ARGV)
9
+ end
10
+
11
+ def generate
12
+ create_directories
13
+ cd_new_directory
14
+ initialize_git
15
+ write_template_files
16
+ commit_and_checkout
17
+ run_test
18
+ confirmation_message
19
+ end
20
+
21
+ private
22
+
23
+ def create_directories
24
+ %w(lib test .scripts).each {|dir| FileUtils.mkdir_p "#{@title}/#{dir}"}
25
+ end
26
+
27
+ def cd_new_directory
28
+ Dir.chdir "#{@title}"
29
+ end
30
+
31
+ def initialize_git
32
+ `git init`
33
+ end
34
+
35
+ def write_template_files
36
+ @file_writer.write
37
+ end
38
+
39
+ def commit_and_checkout
40
+ `git add .`
41
+ system("git commit -m 'Initial commit'")
42
+ system("git checkout -b dev")
43
+ end
44
+
45
+ def run_test
46
+ require "./test/#{ARGV.last}_test.rb"
47
+ end
48
+
49
+ def confirmation_message
50
+ MessageWriter.new(@title).write
51
+ end
52
+ end
@@ -0,0 +1,70 @@
1
+ require_relative 'templatable'
2
+
3
+ class FileWriter
4
+ include Templatable
5
+ def initialize(args)
6
+ @lower_name = args.last
7
+ @upper_name = @lower_name.split('_').map(&:capitalize).join
8
+ end
9
+
10
+ def write
11
+ write_rake
12
+ write_test_helper
13
+ write_class_template
14
+ write_test_file
15
+ write_generator
16
+ write_readme
17
+ write_pr_template
18
+ write_gitignore
19
+ end
20
+
21
+ private
22
+
23
+ def write_rake
24
+ rake = File.open("Rakefile", "w")
25
+ rake.write(rake_template)
26
+ rake.close
27
+ end
28
+
29
+ def write_test_helper
30
+ test_helper = File.open("test/test_helper.rb", "w")
31
+ test_helper.write(test_helper_template)
32
+ test_helper.close
33
+ end
34
+
35
+ def write_class_template
36
+ class_file = File.open("lib/#{@lower_name}.rb", 'w')
37
+ class_file.write(class_template(@upper_name))
38
+ class_file.close
39
+ end
40
+
41
+ def write_test_file
42
+ test_file = File.open("test/#{@lower_name}_test.rb", 'w')
43
+ test_file.write(test_template(@lower_name, @upper_name))
44
+ test_file.close
45
+ end
46
+
47
+ def write_generator
48
+ generator = File.open("./.scripts/generate.rb", 'w')
49
+ generator.write(generator_template)
50
+ generator.close
51
+ end
52
+
53
+ def write_readme
54
+ readme = File.open("README.md", 'w')
55
+ readme.write(readme_template)
56
+ readme.close
57
+ end
58
+
59
+ def write_pr_template
60
+ pr = File.open("pull_request_template.md", "w")
61
+ pr.write(pr_template)
62
+ pr.close
63
+ end
64
+
65
+ def write_gitignore
66
+ ignore = File.open(".gitignore", "w")
67
+ ignore.write("coverage/")
68
+ ignore.close
69
+ end
70
+ end
@@ -0,0 +1,65 @@
1
+ require 'pastel'
2
+
3
+ class MessageWriter
4
+ PASTEL = Pastel.new
5
+ def initialize(title)
6
+ @title = title
7
+ @message = {}
8
+ end
9
+
10
+ def write
11
+ stylize
12
+ confirmation
13
+ end
14
+
15
+ private
16
+
17
+ def confirmation
18
+ puts "\n" * 4
19
+ puts spacing[:spacing1] + @message[:repo] + @message[:title],""
20
+ puts spacing[:spacing1] + @message[:branch] + @message[:dev],""
21
+ puts spacing[:spacing2] + @message[:instructions],""
22
+ puts spacing[:spacing1] + @message[:run] + @message[:cd],""
23
+ puts spacing[:spacing1] + @message[:then],""
24
+ puts spacing[:spacing1] + @message[:run] + @message[:rake] + @message[:options],""
25
+ puts "\n" * 4
26
+ end
27
+
28
+ def spacing
29
+ {
30
+ spacing1: " " * 10,
31
+ spacing2: " " * 15,
32
+ }
33
+ end
34
+
35
+ def cyan_italic
36
+ {
37
+ repo: "Created new repository: ",
38
+ branch: "Switched to new branch: ",
39
+ run: "Run: ",
40
+ options: "to see available rake tasks",
41
+ then: "then..."
42
+ }
43
+ end
44
+
45
+ def magenta_bold
46
+ {
47
+ title: @title,
48
+ dev: "dev",
49
+ cd: "cd #{@title}",
50
+ rake: "rake --tasks "
51
+ }
52
+ end
53
+
54
+ def cyan_bold
55
+ {
56
+ instructions: "INSTRUCTIONS:"
57
+ }
58
+ end
59
+
60
+ def stylize
61
+ cyan_italic.each { |k,v| @message[k] = PASTEL.italic.cyan(v) }
62
+ magenta_bold.each { |k,v| @message[k] = PASTEL.bold.magenta(v) }
63
+ cyan_bold.each { |k,v| @message[k] = PASTEL.bold.cyan(v) }
64
+ end
65
+ end
@@ -0,0 +1,138 @@
1
+ module Templatable
2
+ def rake_template
3
+ <<~HEREDOC
4
+ require "rake/testtask"
5
+
6
+ Rake::TestTask.new do |task|
7
+ task.pattern = "test/*_test.rb"
8
+ end
9
+
10
+ desc "Run single test file based on class name, ex: rake test_class person"
11
+ task :test_class do
12
+ ARGV.each { |arg| task arg.to_sym do ; end }
13
+ eval File.read("./test/\#{ARGV.last}_test.rb")
14
+ end
15
+
16
+ desc "Generate new class and test, ex: rake g person"
17
+ task :g do
18
+ ARGV.each { |arg| task arg.to_sym do ; end }
19
+ ruby "./.scripts/generate.rb \#{ARGV.last}"
20
+ end
21
+ HEREDOC
22
+ end
23
+
24
+ def test_helper_template
25
+ <<~HEREDOC
26
+ require 'simplecov'
27
+ SimpleCov.start
28
+ require 'minitest/autorun'
29
+ require 'minitest/pride'
30
+ require 'mocha/minitest'
31
+ HEREDOC
32
+ end
33
+
34
+ def class_template(class_name)
35
+ <<~HEREDOC
36
+ class #{class_name}
37
+
38
+ end
39
+ HEREDOC
40
+ end
41
+
42
+ def test_template(lower_name, upper_name)
43
+ <<~HEREDOC
44
+ require './test/test_helper.rb'
45
+ require './lib/#{lower_name}.rb'
46
+
47
+ class #{upper_name}Test < Minitest::Test
48
+ def setup
49
+ @#{lower_name} = #{upper_name}.new
50
+ end
51
+
52
+ def test_it_exists
53
+ assert_instance_of #{upper_name}, @#{lower_name}
54
+ end
55
+ end
56
+ HEREDOC
57
+ end
58
+
59
+ def generator_template
60
+ <<~'HEREDOC'
61
+ lower_name = ARGV.first
62
+ upper_name = lower_name.split("_").map{|word| word.capitalize}.join
63
+
64
+ class_file = File.open("lib/#{lower_name}.rb", "w")
65
+ class_file.write("class #{upper_name}\n\nend")
66
+ class_file.close
67
+
68
+ test_file = File.open("test/#{lower_name}_test.rb", "w")
69
+ test_file.write(
70
+ "require \'./test/test_helper.rb\'
71
+ require \'./lib/#{lower_name}.rb\'
72
+
73
+ class #{upper_name}Test < Minitest::Test
74
+ def setup
75
+ @#{lower_name} = #{upper_name}.new
76
+ end
77
+
78
+ def test_it_exists
79
+ assert_instance_of #{upper_name}, @#{lower_name}
80
+ end
81
+ end"
82
+ )
83
+ test_file.close
84
+ eval File.read(test_file)
85
+ puts ""
86
+ puts "Created \'lib/#{lower_name}.rb\' and \'test/#{lower_name}_test.rb\'"
87
+ puts ""
88
+ HEREDOC
89
+ end
90
+
91
+ def readme_template
92
+ <<~HEREDOC
93
+ # Title
94
+
95
+ *Description*
96
+
97
+ ## Table of Contents:
98
+ - [Running Locally](#running-locally)
99
+ - [Tech Stack](#tech-stack)
100
+ - [Contributors](#contributors)
101
+
102
+ ***
103
+ ## Running Locally
104
+ [top](#table-of-contents)
105
+ * Instructions to run locally
106
+
107
+ ***
108
+ ## Tech Stack
109
+ [top](#table-of-contents)
110
+ * Language version
111
+ * Framework, gems, etc.
112
+
113
+ ***
114
+ ## Contributors
115
+ [top](#table-of-contents)
116
+ * [<NAME HERE>](<LINK TO GITHUB>)
117
+ HEREDOC
118
+ end
119
+
120
+ def pr_template
121
+ <<~HEREDOC
122
+ ## Description
123
+
124
+ ## Type of change
125
+ - [ ] Bug fix (non-breaking change which fixes an issue)
126
+ - [ ] Refactor (non-breaking change which maintains existing functionality)
127
+ - [ ] New feature (non-breaking change which adds functionality)
128
+ - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
129
+ ## Notes
130
+
131
+ ## Test Results
132
+ ```
133
+
134
+ ```
135
+ HEREDOC
136
+
137
+ end
138
+ end
@@ -1,3 +1,3 @@
1
1
  module EzGen
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ez_gen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tyler Porter
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-21 00:00:00.000000000 Z
11
+ date: 2020-09-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pastel
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0.19'
41
+ - !ruby/object:Gem::Dependency
42
+ name: mocha
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.11'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.11'
41
55
  description: Enter a project name and the name of the class you'd like to create.
42
56
  EzGen will generate a new git repo, class template, corresponding test template,
43
57
  PR template, README template, and Rakefile.
@@ -50,7 +64,10 @@ extra_rdoc_files: []
50
64
  files:
51
65
  - bin/ez_gen
52
66
  - lib/ez_gen.rb
53
- - lib/ez_gen/generator.rb
67
+ - lib/ez_gen/basic_env.rb
68
+ - lib/ez_gen/file_writer.rb
69
+ - lib/ez_gen/message_writer.rb
70
+ - lib/ez_gen/templatable.rb
54
71
  - lib/ez_gen/version.rb
55
72
  homepage: https://github.com/tylerpporter/ez_gen
56
73
  licenses:
@@ -58,7 +75,7 @@ licenses:
58
75
  metadata:
59
76
  homepage_uri: https://github.com/tylerpporter/ez_gen
60
77
  source_code_uri: https://github.com/tylerpporter/ez_gen
61
- post_install_message:
78
+ post_install_message:
62
79
  rdoc_options: []
63
80
  require_paths:
64
81
  - lib
@@ -73,8 +90,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
73
90
  - !ruby/object:Gem::Version
74
91
  version: '0'
75
92
  requirements: []
76
- rubygems_version: 3.1.4
77
- signing_key:
93
+ rubyforge_project:
94
+ rubygems_version: 2.7.6
95
+ signing_key:
78
96
  specification_version: 4
79
97
  summary: Quickly create an environment to write and test Ruby code.
80
98
  test_files: []
@@ -1,207 +0,0 @@
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