gem_generator 0.1.0 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8f6652896d539c126a338591546a05a6c4ac65009eb9fd9add79ffce31412cc0
4
- data.tar.gz: d8f5b3dd52a7f98cd2d548281cc50070de63d2ea308e53acb254ec71ee700dcc
3
+ metadata.gz: 8cfd12ba054676e203daa371f7ffb27b93513a4c77833df17cea52f255a82f1e
4
+ data.tar.gz: 172676284e80200664ae9f9652f359544a5d23332f3b00a56b48896a75b8a738
5
5
  SHA512:
6
- metadata.gz: 14987f158b13c559f9f77846abbee7b15da524c76d77cb8eec965461a59a34255c4fe503336f65483c69b91ae31f23114dce5c5bbe4d6b08652acede07cf1302
7
- data.tar.gz: a4d5a7cab7d3ca9e7fd8ea2266052bebb0450f6276414ac8c681241ef6ffcd45471f30ec2eb0872a4a9cca3ca5ca583fe225661d34a1577ca3d7b067bb167ed2
6
+ metadata.gz: 25311e68bd697b2f3618d5bc6fd695c90f7fcf82a3ae14b02387cd1cb17caf0f126822ea9093abf7e9fcc689dcb76b0e03cccfd7be1d22aac97fe502405e0f35
7
+ data.tar.gz: c1047aa59e76117cdd5364b2852230015790d3b7333d12254be8744c772438dfbd65e742a38ec0558fc49de27898ec7c2d1f097817a3d8f556999acd005eeefc
data/CHANGELOG.md CHANGED
@@ -2,6 +2,28 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.2.0 (2021-10-18)
6
+
7
+ * Add `--git` option.
8
+ It allows you to use `TEMPLATE` parameter as GitHub path to automatically clone the repo
9
+ (into `/tmp` directory) and use its nested `template/` directory as a template.
10
+
11
+ * Add `author_name_string`.
12
+ Sometimes names include apostrophes, we should catch these cases.
13
+
14
+ * Improve usage documentation in README.
15
+
16
+ * Add instructions about templates to README.
17
+
18
+ * Remove Codecov token from Cirrus CI.
19
+ It should support tokenless uploads.
20
+
21
+ * Disable GitHub artifacts for RSpec.
22
+
23
+ * Update development dependencies.
24
+
25
+ * Remove docs badge from README.
26
+
5
27
  ## 0.1.0 (2021-10-05)
6
28
 
7
29
  * Initial release.
data/README.md CHANGED
@@ -4,7 +4,6 @@
4
4
  [![Codecov branch](https://img.shields.io/codecov/c/github/AlexWayfer/gem_generator/main.svg?style=flat-square)](https://codecov.io/gh/AlexWayfer/gem_generator)
5
5
  [![Code Climate](https://img.shields.io/codeclimate/maintainability/AlexWayfer/gem_generator.svg?style=flat-square)](https://codeclimate.com/github/AlexWayfer/gem_generator)
6
6
  [![Depfu](https://img.shields.io/depfu/AlexWayfer/gem_generator?style=flat-square)](https://depfu.com/repos/github/AlexWayfer/gem_generator)
7
- [![Inline docs](https://inch-ci.org/github/AlexWayfer/gem_generator.svg?branch=main)](https://inch-ci.org/github/AlexWayfer/gem_generator)
8
7
  [![license](https://img.shields.io/github/license/AlexWayfer/gem_generator.svg?style=flat-square)](LICENSE.txt)
9
8
  [![Gem](https://img.shields.io/gem/v/gem_generator.svg?style=flat-square)](https://rubygems.org/gems/gem_generator)
10
9
 
@@ -22,10 +21,22 @@ gem install gem_generator
22
21
 
23
22
  ## Usage
24
23
 
24
+ ### With local template
25
+
26
+ ```sh
27
+ gem_generator --namespace=your_github_nickname name_of_a_new_gem path/to/template
28
+ ```
29
+
30
+ ### With GitHub template
31
+
25
32
  ```sh
26
- gem_generator --namespace=github_nickname name_of_a_new_gem
33
+ gem_generator --namespace=your_github_nickname name_of_a_new_gem template_github_org/template_github_repo
27
34
  ```
28
35
 
36
+ Be aware: `gem_generator` uses `template/` directory from the GitHub repo, not the root one.
37
+
38
+ ### Config file
39
+
29
40
  You can create a config file, `.gem_generator.yaml` (or `.yml`) like this:
30
41
 
31
42
  ```yaml
@@ -44,7 +55,48 @@ for example, in some directory for work projects.
44
55
 
45
56
  ## Template creation
46
57
 
47
-
58
+ Example of gem template you can see at [AlexWayfer/gem_template](https://github.com/AlexWayfer/gem_template).
59
+
60
+ Available paths:
61
+
62
+ | Path part | Example of source | Example of result |
63
+ | ---------- | ----------------------------- | -------------------------------------- |
64
+ | `gem_name` | `gem_name.gemspec` | `faraday-my_middleware.gemspec` |
65
+ | `gem_path` | `lib/gem_path/version.rb.erb` | `lib/faraday/my_middleware/version.rb` |
66
+
67
+ Any `*.erb` file will be rendered via [ERB](https://ruby-doc.org/stdlib/libdoc/erb/rdoc/ERB.html);
68
+ if you want an `*.erb` file as result — name it as `*.erb.erb` (even if there are no tags).
69
+
70
+ Available variables:
71
+
72
+ | Variable | Example of result |
73
+ | ---------------------- | ---------------------------------------------------------- |
74
+ | `name` | `faraday-my_middleware` |
75
+ | `title` | `Faraday My Middleware` |
76
+ | `path` | `faraday/my_middleware` |
77
+ | `module_name` | `Faraday::MyMiddleware` |
78
+ | `modules` | `['Faraday', 'MyMiddleware']` |
79
+ | `version_constant` | `Faraday::MyMiddleware::VERSION` |
80
+ | `summary` | asked from user |
81
+ | `summary_string` | summary wrapped in `'` or `"`, depending on `'` inside |
82
+ | `description` | by default is `summary` with guaranteed dot at the end |
83
+ | `indentation` | `tabs` or `spaces`, as user specified by option |
84
+ | `github_path` | `AlexWayfer/faraday-my_middleware` |
85
+ | `github_namespace_uri` | `https://github.com/AlexWayfer` |
86
+ | `github_uri` | `https://github.com/AlexWayfer/faraday-my_middleware` |
87
+ | `author_name` | `Alexander Popov` |
88
+ | `author_name_string` | author name wrapped in `'` or `"`, depending on `'` inside |
89
+ | `author_email` | `alex.wayfer@gmail.com` |
90
+
91
+ By default indentation is `tabs`, but if a template spaces-indented — option will not affect.
92
+ So, this option only for tabs-indented templates.
93
+
94
+ ### Git templates
95
+
96
+ You can create public git-templates and then guide users to call
97
+ `gem_generator gem_game your_org/your_repo --git`, but be aware that `gem_generator` will look
98
+ for template inside `template/` directory to allow you having out-of-template README,
99
+ specs (for the template itself), anything else.
48
100
 
49
101
  ## Development
50
102
 
@@ -27,6 +27,9 @@ module GemGenerator
27
27
  value
28
28
  end
29
29
 
30
+ option '--git', :flag, 'use TEMPLATE as GitHub path (clone and generate from it)',
31
+ default: false
32
+
30
33
  attr_reader(
31
34
  :path, :title, :modules, :version_constant, :github_path, :github_uri,
32
35
  :author_name, :author_email
@@ -40,9 +43,9 @@ module GemGenerator
40
43
  ## Prevent error like '"FIXME" or "TODO" is not a description' for `bundle install`
41
44
  @summary = ask_for_summary
42
45
 
43
- copy_files
46
+ refine_template_parameter if git?
44
47
 
45
- render_files_and_file_names
48
+ process_files
46
49
 
47
50
  install_dependencies
48
51
 
@@ -50,6 +53,8 @@ module GemGenerator
50
53
  ## Also do `git add .` after all renders
51
54
  initialize_git
52
55
 
56
+ FileUtils.rm_r @git_tmp_dir if git?
57
+
53
58
  puts 'Done.'
54
59
 
55
60
  puts <<~HELP
@@ -79,6 +84,27 @@ module GemGenerator
79
84
  result
80
85
  end
81
86
 
87
+ def refine_template_parameter
88
+ @git_tmp_dir = Dir.mktmpdir
89
+ `git clone -q https://github.com/#{template}.git #{@git_tmp_dir}`
90
+ self.template = File.join @git_tmp_dir, 'template'
91
+ end
92
+
93
+ def process_files
94
+ copy_files
95
+
96
+ begin
97
+ @render_variables = RenderVariables.new name, namespace, indentation, @summary
98
+
99
+ rename_files
100
+
101
+ render_files
102
+ rescue SystemExit => e
103
+ FileUtils.rm_r @directory
104
+ raise e
105
+ end
106
+ end
107
+
82
108
  def copy_files
83
109
  puts 'Copying files...'
84
110
 
@@ -103,19 +129,6 @@ module GemGenerator
103
129
  end
104
130
  end
105
131
 
106
- def render_files_and_file_names
107
- @render_variables = RenderVariables.new name, namespace, indentation, @summary
108
-
109
- rename_files
110
-
111
- begin
112
- render_files
113
- rescue SystemExit, Clamp::UsageError => e
114
- FileUtils.rm_r @directory
115
- raise e
116
- end
117
- end
118
-
119
132
  def render_files
120
133
  puts 'Rendering files...'
121
134
 
@@ -20,6 +20,9 @@ module GemGenerator
20
20
  @namespace_option = namespace_option
21
21
  @indentation = indentation
22
22
  @summary = summary
23
+
24
+ ## Call to be sure that this is checked before author fields
25
+ github_namespace
23
26
  end
24
27
 
25
28
  ## `public :binding` and `send :binding` return caller binding
@@ -30,8 +33,9 @@ module GemGenerator
30
33
  end
31
34
  # rubocop:enable Naming/AccessorMethodName
32
35
 
33
- memoize def summary_quotes
34
- summary.include?("'") ? '"' : "'"
36
+ memoize def summary_string
37
+ quote = summary.include?("'") ? '"' : "'"
38
+ "#{quote}#{summary}#{quote}"
35
39
  end
36
40
 
37
41
  memoize def description
@@ -94,6 +98,11 @@ module GemGenerator
94
98
  memoize method_name
95
99
  end
96
100
 
101
+ memoize def author_name_string
102
+ quote = author_name.include?("'") ? '"' : "'"
103
+ "#{quote}#{author_name}#{quote}"
104
+ end
105
+
97
106
  private
98
107
 
99
108
  memoize def github_namespace
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GemGenerator
4
- VERSION = '0.1.0'
4
+ VERSION = '0.2.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gem_generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
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-10-05 00:00:00.000000000 Z
11
+ date: 2021-10-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: alt_memery
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '3.9'
69
+ - !ruby/object:Gem::Dependency
70
+ name: inifile
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: bundler
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -81,7 +95,7 @@ dependencies:
81
95
  - !ruby/object:Gem::Version
82
96
  version: '2.0'
83
97
  - !ruby/object:Gem::Dependency
84
- name: gem_toys
98
+ name: bundler-audit
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
101
  - - "~>"
@@ -95,33 +109,33 @@ dependencies:
95
109
  - !ruby/object:Gem::Version
96
110
  version: 0.9.0
97
111
  - !ruby/object:Gem::Dependency
98
- name: toys
112
+ name: gem_toys
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - "~>"
102
116
  - !ruby/object:Gem::Version
103
- version: 0.12.0
117
+ version: 0.10.0
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
122
  - - "~>"
109
123
  - !ruby/object:Gem::Version
110
- version: 0.12.0
124
+ version: 0.10.0
111
125
  - !ruby/object:Gem::Dependency
112
- name: bundler-audit
126
+ name: toys
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
129
  - - "~>"
116
130
  - !ruby/object:Gem::Version
117
- version: 0.9.0
131
+ version: 0.12.0
118
132
  type: :development
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
136
  - - "~>"
123
137
  - !ruby/object:Gem::Version
124
- version: 0.9.0
138
+ version: 0.12.0
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: ffaker
127
141
  requirement: !ruby/object:Gem::Requirement
@@ -242,7 +256,7 @@ licenses:
242
256
  - MIT
243
257
  metadata:
244
258
  bug_tracker_uri: https://github.com/AlexWayfer/gem_generator/issues
245
- changelog_uri: https://github.com/AlexWayfer/gem_generator/blob/v0.1.0/CHANGELOG.md
259
+ changelog_uri: https://github.com/AlexWayfer/gem_generator/blob/v0.2.0/CHANGELOG.md
246
260
  homepage_uri: https://github.com/AlexWayfer/gem_generator
247
261
  source_code_uri: https://github.com/AlexWayfer/gem_generator
248
262
  post_install_message: