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 +4 -4
- data/CHANGELOG.md +22 -0
- data/README.md +55 -3
- data/lib/gem_generator/command.rb +28 -15
- data/lib/gem_generator/render_variables.rb +11 -2
- data/lib/gem_generator/version.rb +1 -1
- metadata +24 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8cfd12ba054676e203daa371f7ffb27b93513a4c77833df17cea52f255a82f1e
|
4
|
+
data.tar.gz: 172676284e80200664ae9f9652f359544a5d23332f3b00a56b48896a75b8a738
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
[](https://codecov.io/gh/AlexWayfer/gem_generator)
|
5
5
|
[](https://codeclimate.com/github/AlexWayfer/gem_generator)
|
6
6
|
[](https://depfu.com/repos/github/AlexWayfer/gem_generator)
|
7
|
-
[](https://inch-ci.org/github/AlexWayfer/gem_generator)
|
8
7
|
[](LICENSE.txt)
|
9
8
|
[](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=
|
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
|
-
|
46
|
+
refine_template_parameter if git?
|
44
47
|
|
45
|
-
|
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
|
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
|
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.
|
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-
|
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:
|
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:
|
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.
|
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.
|
124
|
+
version: 0.10.0
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
126
|
+
name: toys
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
114
128
|
requirements:
|
115
129
|
- - "~>"
|
116
130
|
- !ruby/object:Gem::Version
|
117
|
-
version: 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.
|
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.
|
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:
|