gem_generator 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7f3a231a663b783f7bf00b7faecbe2e0ba9a83758889f737850464d8787417b1
4
- data.tar.gz: 284e0c140d77a1601e7c4c0d8ede966761de87252ea4bdede6a40fdeddf3da80
3
+ metadata.gz: 2fe2385e7d9a9cfb6f5fcb76d8274bf16167fad4c735c1e0a54b6aec6fd591bd
4
+ data.tar.gz: d6a9bcf7df03caa8e69b5a7c339a48757453599f31fd6fa300814fa8c7f39c72
5
5
  SHA512:
6
- metadata.gz: 8c93e384412e88394adf30eb9dd7e4ad80ef8d1b4cd6206d77cb46d4fe75e01fc9fab8086a91c7710fb6ee680dd9816b99f3f0785fb95da01b295d6f7859084c
7
- data.tar.gz: 16b39763cafaa19b5fe6f760d6106d0e0df9d898bfba0197ce883a1c4f0a5d352a64e60984daf34b8d24e4333dbfec636352181e944885cfcf9d976f131df82c
6
+ metadata.gz: cd0aea83cf29f769c8447412aea0ebbd67a27a810cf147eda78ea1256a3634f0f024b5f8eeb4717ee00ff4e7bcf6b0f7e88035676caac4a13ada024df5be628f
7
+ data.tar.gz: bb8e82a95a63a8262dca93576e299f4e78f79ba1e2f76813ae06db194981806c55d4eb209031a969f196e7f6654ef7bc5f4d4cee6a9eba41db90ad2d3cf71436
data/CHANGELOG.md CHANGED
@@ -2,9 +2,14 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.3.2 (2021-11-10)
6
+
7
+ * Update `project_generator`.
8
+ Add custom parameters.
9
+
5
10
  ## 0.3.1 (2021-11-07)
6
11
 
7
- * Require runtime depepndencies.
12
+ * Require runtime dependencies.
8
13
 
9
14
  ## 0.3.0 (2021-11-01)
10
15
 
@@ -1,42 +1,28 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'yaml'
4
- require 'memery'
5
3
  require 'gorilla_patch/blank'
6
- require 'gorilla_patch/inflections'
7
4
 
8
5
  module GemGenerator
9
6
  ## Main CLI command for Gem Generator
10
- class Command < Clamp::Command
7
+ class Command < ProjectGenerator::Command
11
8
  ## Private instance methods for processing template files (copying, renaming, rendering)
12
9
  module ProcessFiles
13
10
  ## Class for a single object which should be a scope in render
14
- class RenderVariables
15
- include Memery
16
-
11
+ class RenderVariables < ProjectGenerator::Command::ProcessFiles::RenderVariables
17
12
  using GorillaPatch::Blank
18
- using GorillaPatch::Inflections
19
13
 
20
- attr_reader :name, :indentation, :summary
14
+ attr_reader :summary
21
15
 
22
16
  def initialize(name, namespace_option, indentation, summary)
23
- @name = name
17
+ super name, indentation
18
+
24
19
  @namespace_option = namespace_option
25
- @indentation = indentation
26
20
  @summary = summary
27
21
 
28
22
  ## Call to be sure that this is checked before author fields
29
23
  github_namespace
30
24
  end
31
25
 
32
- ## `public :binding` and `send :binding` return caller binding
33
- ## This is from ERB documentation: https://ruby-doc.org/core-2.7.2/Binding.html
34
- # rubocop:disable Naming/AccessorMethodName
35
- def get_binding
36
- binding
37
- end
38
- # rubocop:enable Naming/AccessorMethodName
39
-
40
26
  memoize def summary_string
41
27
  quote = summary.include?("'") ? '"' : "'"
42
28
  "#{quote}#{summary}#{quote}"
@@ -46,22 +32,6 @@ module GemGenerator
46
32
  summary.match?(/[.?!]$/) ? summary : "#{summary}."
47
33
  end
48
34
 
49
- memoize def path
50
- name.tr('-', '/')
51
- end
52
-
53
- memoize def title
54
- name.split(/[-_]/).map(&:camelize).join(' ')
55
- end
56
-
57
- memoize def module_name
58
- path.camelize
59
- end
60
-
61
- memoize def modules
62
- module_name.split('::')
63
- end
64
-
65
35
  memoize def version_constant
66
36
  "#{module_name}::VERSION"
67
37
  end
@@ -142,8 +112,6 @@ module GemGenerator
142
112
  config_file
143
113
  end
144
114
  end
145
-
146
- private_constant :RenderVariables
147
115
  end
148
116
  end
149
117
  end
@@ -4,73 +4,19 @@ require_relative 'process_files/render_variables'
4
4
 
5
5
  module GemGenerator
6
6
  ## Main CLI command for Gem Generator
7
- class Command < Clamp::Command
7
+ class Command < ProjectGenerator::Command
8
8
  ## Private instance methods for processing template files (copying, renaming, rendering)
9
9
  module ProcessFiles
10
- private
11
-
12
- def process_files
13
- copy_files
14
-
15
- begin
16
- @render_variables = RenderVariables.new name, namespace, indentation, @summary
17
-
18
- rename_files
19
-
20
- render_files
21
- rescue SystemExit => e
22
- FileUtils.rm_r @directory
23
- raise e
24
- end
25
- end
26
-
27
- def copy_files
28
- puts 'Copying files...'
29
-
30
- FileUtils.cp_r template, @directory
31
-
32
- FileUtils.rm_rf "#{@directory}/.git"
33
- end
34
-
35
- def rename_files
36
- puts 'Renaming files...'
10
+ RENAME_FILES_PLACEHOLDERS = {
11
+ name: 'gem_name',
12
+ path: 'gem_path'
13
+ }.freeze
37
14
 
38
- { 'gem_name' => @render_variables.name, 'gem_path' => @render_variables.path }
39
- .each do |template_name, real_name|
40
- Dir["#{@directory}/**/*#{template_name}*"].each do |file_name|
41
- new_file_name =
42
- @directory + file_name.delete_prefix(@directory).gsub(template_name, real_name)
43
-
44
- FileUtils.mkdir_p File.dirname new_file_name
45
-
46
- File.rename file_name, new_file_name
47
- end
48
- end
49
- end
50
-
51
- def render_files
52
- puts 'Rendering files...'
53
-
54
- Dir.glob("#{@directory}/**/*.erb", File::FNM_DOTMATCH).each do |template_file|
55
- ## Read a template file content and render it
56
- content =
57
- ERB.new(File.read(template_file), trim_mode: '-').result(@render_variables.get_binding)
58
-
59
- ## Replace tabs with spaces if necessary
60
- content.gsub!(/^\t+/) { |tabs| ' ' * tabs.count("\t") } if indentation == 'spaces'
61
-
62
- ## Render variables in file name
63
- real_pathname = Pathname.new(template_file).sub_ext('')
64
-
65
- ## Rename template file
66
- File.rename template_file, real_pathname
15
+ private
67
16
 
68
- ## Update file content
69
- File.write real_pathname, content
70
- end
17
+ def initialize_render_variables
18
+ self.class::RenderVariables.new name, namespace, indentation, @summary
71
19
  end
72
20
  end
73
-
74
- private_constant :ProcessFiles
75
21
  end
76
22
  end
@@ -1,11 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'bundler'
4
- require 'clamp'
5
- require 'erb'
6
- require 'fileutils'
7
- require 'pathname'
8
- require 'tmpdir'
4
+ require 'project_generator'
9
5
 
10
6
  require_relative 'command/process_files'
11
7
 
@@ -14,35 +10,16 @@ Clamp.allow_options_after_parameters = true
14
10
 
15
11
  module GemGenerator
16
12
  ## Main CLI command for Gem Generator
17
- class Command < Clamp::Command
13
+ class Command < ProjectGenerator::Command
18
14
  include ProcessFiles
19
15
 
20
16
  parameter 'NAME', 'name of a new gem'
21
17
  parameter 'TEMPLATE', 'template path of a new gem'
22
18
 
23
19
  option ['-n', '--namespace'], 'NAME', 'use NAME as repository namespace'
24
- option ['-i', '--indentation'], 'TYPE', 'type of indentation (tabs or spaces)',
25
- default: 'tabs' do |value|
26
- ## TODO: Add something like `:variants` to Clamp
27
- unless %w[tabs spaces].include? value
28
- raise ArgumentError, 'Only `tabs` or `spaces` values acceptable'
29
- end
30
-
31
- value
32
- end
33
-
34
- option '--git', :flag, 'use TEMPLATE as GitHub path (clone and generate from it)',
35
- default: false
36
-
37
- attr_reader(
38
- :path, :title, :modules, :version_constant, :github_path, :github_uri,
39
- :author_name, :author_email
40
- )
41
20
 
42
21
  def execute
43
- @directory = File.expand_path name
44
-
45
- signal_usage_error 'the target directory already exists' if Dir.exist? @directory
22
+ check_target_directory
46
23
 
47
24
  ## Prevent error like '"FIXME" or "TODO" is not a description' for `bundle install`
48
25
  @summary = ask_for_summary
@@ -53,18 +30,11 @@ module GemGenerator
53
30
 
54
31
  install_dependencies
55
32
 
56
- ## If there is no `gem_generator` config — `render` asks `git config`
57
- ## Also do `git add .` after all renders
58
33
  initialize_git
59
34
 
60
35
  FileUtils.rm_r @git_tmp_dir if git?
61
36
 
62
- puts 'Done.'
63
-
64
- puts <<~HELP
65
- To checkout into a new directory:
66
- cd #{name}
67
- HELP
37
+ done
68
38
  end
69
39
 
70
40
  private
@@ -88,21 +58,6 @@ module GemGenerator
88
58
  result
89
59
  end
90
60
 
91
- def refine_template_parameter
92
- @git_tmp_dir = Dir.mktmpdir
93
- `git clone -q https://github.com/#{template}.git #{@git_tmp_dir}`
94
- self.template = File.join @git_tmp_dir, 'template'
95
- end
96
-
97
- def initialize_git
98
- puts 'Initializing git...'
99
-
100
- Dir.chdir name do
101
- system 'git init'
102
- system 'git add .'
103
- end
104
- end
105
-
106
61
  def install_dependencies
107
62
  puts 'Installing dependencies...'
108
63
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GemGenerator
4
- VERSION = '0.3.1'
4
+ VERSION = '0.3.2'
5
5
  end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gem_generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Popov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-11-07 00:00:00.000000000 Z
11
+ date: 2021-11-09 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: alt_memery
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '2.0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '2.0'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: bundler
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -39,33 +25,33 @@ dependencies:
39
25
  - !ruby/object:Gem::Version
40
26
  version: '2.0'
41
27
  - !ruby/object:Gem::Dependency
42
- name: clamp
28
+ name: gorilla_patch
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
31
  - - "~>"
46
32
  - !ruby/object:Gem::Version
47
- version: '1.3'
33
+ version: '4.0'
48
34
  type: :runtime
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
38
  - - "~>"
53
39
  - !ruby/object:Gem::Version
54
- version: '1.3'
40
+ version: '4.0'
55
41
  - !ruby/object:Gem::Dependency
56
- name: gorilla_patch
42
+ name: project_generator
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
45
  - - "~>"
60
46
  - !ruby/object:Gem::Version
61
- version: '4.0'
47
+ version: 0.2.0
62
48
  type: :runtime
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
52
  - - "~>"
67
53
  - !ruby/object:Gem::Version
68
- version: '4.0'
54
+ version: 0.2.0
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: pry-byebug
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -257,7 +243,7 @@ licenses:
257
243
  - MIT
258
244
  metadata:
259
245
  bug_tracker_uri: https://github.com/AlexWayfer/gem_generator/issues
260
- changelog_uri: https://github.com/AlexWayfer/gem_generator/blob/v0.3.1/CHANGELOG.md
246
+ changelog_uri: https://github.com/AlexWayfer/gem_generator/blob/v0.3.2/CHANGELOG.md
261
247
  homepage_uri: https://github.com/AlexWayfer/gem_generator
262
248
  source_code_uri: https://github.com/AlexWayfer/gem_generator
263
249
  post_install_message: