example_file 0.2.0 → 0.4.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 +28 -1
- data/README.md +5 -4
- data/lib/example_file/version.rb +1 -1
- data/lib/example_file.rb +32 -15
- metadata +38 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dd44dec5c2bf7075656ebdd405b0960221dcba6dad77e376e23015bdabebd3b8
|
4
|
+
data.tar.gz: 1c1e5659cea072d168309c0b0e30feaca6ada071f7e9517342a23851346f5ae7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2ad40a576dd715a6b4e30c239bc1ccde7872b0cbdd7deec4fe308073711188640af0d3fbab410db104e0fea2c97f5613208980ac3f2c92d309c41733e66196bb
|
7
|
+
data.tar.gz: 376ff78bf8f127348e0dc68f22c83f5031cbec931b525d1ee8df2379303170241b1ec0c67ffff9d4ee216cd601f98d3bd971a57a60c5a928015adcf82614a839
|
data/CHANGELOG.md
CHANGED
@@ -1,9 +1,36 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
-
##
|
3
|
+
## Unreleased
|
4
|
+
|
5
|
+
## 0.4.0 (2022-09-29)
|
6
|
+
|
7
|
+
* Drop Ruby 2.5 support.
|
8
|
+
* Add Ruby 3.1 support.
|
9
|
+
* Add `#initialize_regular_file` method.
|
10
|
+
* Update development dependencies.
|
11
|
+
* Resolve new RuboCop offenses.
|
12
|
+
* Add `bundle-audit` CI task.
|
13
|
+
|
14
|
+
## 0.3.1 (2021-04-16)
|
15
|
+
|
16
|
+
* Fix Ruby warnings (and specs fails).
|
17
|
+
|
18
|
+
## 0.3.0 (2021-04-16)
|
19
|
+
|
20
|
+
* Remake the question from "Do you want to edit?" to "What to do?".
|
21
|
+
* Add `replace-and-edit` answer.
|
22
|
+
* Change menu layout from inline to rows with numbers.
|
23
|
+
I have no idea how to make easier shortcut for `replace-and-edit`.
|
24
|
+
* Add Ruby 3 support and CI.
|
25
|
+
* Update development dependencies.
|
4
26
|
|
5
27
|
## 0.2.0 (2020-09-30)
|
6
28
|
|
29
|
+
* Abort program on try to edit file without `$EDITOR` environment variable.
|
30
|
+
Don't rely on external code, also abort only on try to edit.
|
31
|
+
* Update dependencies.
|
32
|
+
* Improve Cirrus CI config.
|
33
|
+
|
7
34
|
## 0.1.0 (2020-06-02)
|
8
35
|
|
9
36
|
* Initial release.
|
data/README.md
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
# Example File
|
2
2
|
|
3
3
|

|
4
|
-
[](https://codecov.io/gh/AlexWayfer/example_file)
|
5
5
|
[](https://codeclimate.com/github/AlexWayfer/example_file)
|
6
6
|

|
7
|
-
[](https://github.com/AlexWayfer/example_file/blob/
|
7
|
+
[](https://inch-ci.org/github/AlexWayfer/example_file)
|
8
|
+
[](https://github.com/AlexWayfer/example_file/blob/main/LICENSE.txt)
|
9
9
|
[](https://rubygems.org/gems/example_file)
|
10
10
|
|
11
11
|
Class helper for example files. Usually it's the alternative
|
@@ -61,7 +61,8 @@ It'll act in these ways:
|
|
61
61
|
* ask for a further action:
|
62
62
|
* open the editor;
|
63
63
|
* just update regular without changes;
|
64
|
-
*
|
64
|
+
* replace regular file with a content from new example file;
|
65
|
+
* or replace and then open the editor.
|
65
66
|
* If there is regular file with file modified time after example file:
|
66
67
|
* do nothing.
|
67
68
|
|
data/lib/example_file/version.rb
CHANGED
data/lib/example_file.rb
CHANGED
@@ -18,29 +18,41 @@ class ExampleFile
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
+
attr_reader :choices
|
22
|
+
attr_writer :question_prefix
|
23
|
+
|
21
24
|
def initialize(file_name)
|
22
25
|
@file_name = file_name
|
23
26
|
@regular_file_name = @file_name.sub SUFFIX, ''
|
24
27
|
|
25
|
-
@basename =
|
26
|
-
|
27
|
-
|
28
|
-
|
28
|
+
@basename = Paint[File.basename(@file_name), :green, :bold]
|
29
|
+
@regular_basename = Paint[File.basename(@regular_file_name), :red, :bold]
|
30
|
+
|
31
|
+
@choices = DEFAULT_CHOICES.dup
|
32
|
+
@question_prefix = nil
|
29
33
|
end
|
30
34
|
|
31
35
|
def actualize_regular_file
|
32
36
|
return create_regular_file unless regular_file_exist?
|
33
37
|
|
34
|
-
return unless
|
38
|
+
return unless updated?
|
35
39
|
|
36
40
|
return update_regular_file if diff.chomp.empty?
|
37
41
|
|
38
42
|
ask_question_and_make_actions
|
39
43
|
end
|
40
44
|
|
45
|
+
def initialize_regular_file
|
46
|
+
if File.exist? @regular_file_name
|
47
|
+
raise "File `#{File.basename(@regular_file_name)}` already exists"
|
48
|
+
end
|
49
|
+
|
50
|
+
FileUtils.cp @file_name, @regular_file_name
|
51
|
+
end
|
52
|
+
|
41
53
|
private
|
42
54
|
|
43
|
-
def
|
55
|
+
def updated?
|
44
56
|
File.mtime(@file_name) > File.mtime(@regular_file_name)
|
45
57
|
end
|
46
58
|
|
@@ -49,7 +61,7 @@ class ExampleFile
|
|
49
61
|
end
|
50
62
|
|
51
63
|
def create_regular_file
|
52
|
-
|
64
|
+
initialize_regular_file
|
53
65
|
edit_file @regular_file_name
|
54
66
|
end
|
55
67
|
|
@@ -63,26 +75,31 @@ class ExampleFile
|
|
63
75
|
.to_s(:color)
|
64
76
|
end
|
65
77
|
|
66
|
-
|
67
|
-
|
78
|
+
DEFAULT_CHOICES = {
|
79
|
+
edit: proc { edit_file @regular_file_name },
|
68
80
|
replace: proc { rewrite_regular_file },
|
69
|
-
|
81
|
+
'replace-and-edit': proc do
|
82
|
+
rewrite_regular_file
|
83
|
+
edit_file @regular_file_name
|
84
|
+
end,
|
85
|
+
keep: proc do
|
70
86
|
update_regular_file
|
71
87
|
puts 'File modified time updated'
|
72
88
|
end
|
73
89
|
}.freeze
|
74
90
|
|
75
|
-
private_constant :
|
91
|
+
private_constant :DEFAULT_CHOICES
|
76
92
|
|
77
93
|
def ask_question_and_make_actions
|
78
94
|
puts warning_with_diff
|
79
95
|
|
80
96
|
HIGHLINE.choose do |menu|
|
81
|
-
|
97
|
+
## I don't know how to catch complex options like `replace-and-edit`, via shortcut like `rae`
|
98
|
+
# menu.layout = :one_line
|
82
99
|
|
83
|
-
menu.
|
100
|
+
menu.header = "What to do with #{@regular_basename} "
|
84
101
|
|
85
|
-
|
102
|
+
choices.each do |answer, block|
|
86
103
|
menu.choice(answer) { instance_exec(&block) }
|
87
104
|
end
|
88
105
|
end
|
@@ -90,7 +107,7 @@ class ExampleFile
|
|
90
107
|
|
91
108
|
def warning_with_diff
|
92
109
|
<<~WARN
|
93
|
-
#{@basename} was modified after #{@regular_basename}.
|
110
|
+
#{@question_prefix}#{@basename} was modified after #{@regular_basename}.
|
94
111
|
|
95
112
|
```diff
|
96
113
|
#{diff}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: example_file
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Popov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-09-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: diffy
|
@@ -81,47 +81,47 @@ dependencies:
|
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '2.0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: bundler-audit
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 0.
|
89
|
+
version: 0.9.0
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: 0.
|
96
|
+
version: 0.9.0
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: gem_toys
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 0.
|
103
|
+
version: 0.12.1
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 0.
|
110
|
+
version: 0.12.1
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: toys
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 0.
|
117
|
+
version: 0.13.0
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 0.
|
124
|
+
version: 0.13.0
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: rspec
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -142,28 +142,42 @@ dependencies:
|
|
142
142
|
requirements:
|
143
143
|
- - "~>"
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version: 0.
|
145
|
+
version: 0.21.2
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: 0.21.2
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: simplecov-cobertura
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '2.1'
|
146
160
|
type: :development
|
147
161
|
prerelease: false
|
148
162
|
version_requirements: !ruby/object:Gem::Requirement
|
149
163
|
requirements:
|
150
164
|
- - "~>"
|
151
165
|
- !ruby/object:Gem::Version
|
152
|
-
version:
|
166
|
+
version: '2.1'
|
153
167
|
- !ruby/object:Gem::Dependency
|
154
168
|
name: rubocop
|
155
169
|
requirement: !ruby/object:Gem::Requirement
|
156
170
|
requirements:
|
157
171
|
- - "~>"
|
158
172
|
- !ruby/object:Gem::Version
|
159
|
-
version:
|
173
|
+
version: 1.36.0
|
160
174
|
type: :development
|
161
175
|
prerelease: false
|
162
176
|
version_requirements: !ruby/object:Gem::Requirement
|
163
177
|
requirements:
|
164
178
|
- - "~>"
|
165
179
|
- !ruby/object:Gem::Version
|
166
|
-
version:
|
180
|
+
version: 1.36.0
|
167
181
|
- !ruby/object:Gem::Dependency
|
168
182
|
name: rubocop-performance
|
169
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -184,14 +198,14 @@ dependencies:
|
|
184
198
|
requirements:
|
185
199
|
- - "~>"
|
186
200
|
- !ruby/object:Gem::Version
|
187
|
-
version: '
|
201
|
+
version: '2.0'
|
188
202
|
type: :development
|
189
203
|
prerelease: false
|
190
204
|
version_requirements: !ruby/object:Gem::Requirement
|
191
205
|
requirements:
|
192
206
|
- - "~>"
|
193
207
|
- !ruby/object:Gem::Version
|
194
|
-
version: '
|
208
|
+
version: '2.0'
|
195
209
|
description: |
|
196
210
|
Class helper for example files.
|
197
211
|
Usualy it's the alternative to environment variables (and `.env` files).
|
@@ -214,7 +228,8 @@ licenses:
|
|
214
228
|
metadata:
|
215
229
|
source_code_uri: https://github.com/AlexWayfer/example_file
|
216
230
|
homepage_uri: https://github.com/AlexWayfer/example_file
|
217
|
-
changelog_uri: https://github.com/AlexWayfer/example_file/blob/
|
231
|
+
changelog_uri: https://github.com/AlexWayfer/example_file/blob/main/CHANGELOG.md
|
232
|
+
rubygems_mfa_required: 'true'
|
218
233
|
post_install_message:
|
219
234
|
rdoc_options: []
|
220
235
|
require_paths:
|
@@ -223,14 +238,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
223
238
|
requirements:
|
224
239
|
- - ">="
|
225
240
|
- !ruby/object:Gem::Version
|
226
|
-
version: '2.
|
241
|
+
version: '2.6'
|
242
|
+
- - "<"
|
243
|
+
- !ruby/object:Gem::Version
|
244
|
+
version: '4'
|
227
245
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
228
246
|
requirements:
|
229
247
|
- - ">="
|
230
248
|
- !ruby/object:Gem::Version
|
231
249
|
version: '0'
|
232
250
|
requirements: []
|
233
|
-
rubygems_version: 3.
|
251
|
+
rubygems_version: 3.3.7
|
234
252
|
signing_key:
|
235
253
|
specification_version: 4
|
236
254
|
summary: Class helper for example files
|