example_file 0.2.0 → 0.3.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: c27c0c37aed4d33ed7fdbaddc5ea08add611a904c5adeb588abc42178de8b2a4
4
- data.tar.gz: 26812fb041b9727dc718da8f46a6e8e70e7ea58f3d684625fd9ccdbd28898cd8
3
+ metadata.gz: 49937d788050f9c348a9a71cff14864470ea4c1a10e6580d94e14f7fe7b59fe9
4
+ data.tar.gz: 07bc86ec61da5085249a6c242c46f78b625b408196d08f40b3d1a06b203e509e
5
5
  SHA512:
6
- metadata.gz: e8008ba9546a72a9e79deafca628ed45cd77e634e25f903fa16f37ee3a68d8577f9ac652358f7ff3c9fdfde8835ad41121b63ac86c1297533f39b6d9645f40c2
7
- data.tar.gz: d2159ad14738f0afda3f65a6e3d48b5d99ef8e82edcf07e25601c260768de6c6c01459822eb5e50a4d1b47eb2bbca2638be26fe861d9ecf79de6b1ae0c88ee5c
6
+ metadata.gz: a23aa29a4e08c6e7aeebe27bd6a93199ede3611529e226156a09573b6488f383e46eb7c17bfc8fe3cd629e0cdd31b786a3535ea8c8c55e6f7a78f0377c15a809
7
+ data.tar.gz: cb7298effcef870ab313fb7dd1469472c8b8dd925d4ba67bca3dce5829cf6411989e9c0d25ed49a9139d10356bb6baceaf23e103fa6febd15476fd7d707d20d8
data/CHANGELOG.md CHANGED
@@ -2,8 +2,24 @@
2
2
 
3
3
  ## master (unreleased)
4
4
 
5
+ ## 0.3.1 (2021-04-16)
6
+
7
+ ## 0.3.0 (2021-04-16)
8
+
9
+ * Remake the question from "Do you want to edit?" to "What to do?".
10
+ * Add `replace-and-edit` answer.
11
+ * Change menu layout from inline to rows with numbers.
12
+ I have no idea how to make easier shortcut for `replace-and-edit`.
13
+ * Add Ruby 3 support and CI.
14
+ * Update development dependencies.
15
+
5
16
  ## 0.2.0 (2020-09-30)
6
17
 
18
+ * Abort program on try to edit file without `$EDITOR` environment variable.
19
+ Don't rely on external code, also abort only on try to edit.
20
+ * Update dependencies.
21
+ * Improve Cirrus CI config.
22
+
7
23
  ## 0.1.0 (2020-06-02)
8
24
 
9
25
  * Initial release.
data/README.md CHANGED
@@ -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
- * or replace regular file with a content from new example file.
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.rb CHANGED
@@ -18,20 +18,24 @@ 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
- Paint[File.basename(@file_name), :green, :bold]
27
- @regular_basename =
28
- Paint[File.basename(@regular_file_name), :red, :bold]
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 new?
38
+ return unless updated?
35
39
 
36
40
  return update_regular_file if diff.chomp.empty?
37
41
 
@@ -40,7 +44,7 @@ class ExampleFile
40
44
 
41
45
  private
42
46
 
43
- def new?
47
+ def updated?
44
48
  File.mtime(@file_name) > File.mtime(@regular_file_name)
45
49
  end
46
50
 
@@ -63,26 +67,31 @@ class ExampleFile
63
67
  .to_s(:color)
64
68
  end
65
69
 
66
- CHOICES = {
67
- yes: proc { edit_file @regular_file_name },
70
+ DEFAULT_CHOICES = {
71
+ edit: proc { edit_file @regular_file_name },
68
72
  replace: proc { rewrite_regular_file },
69
- no: proc do
73
+ 'replace-and-edit': proc do
74
+ rewrite_regular_file
75
+ edit_file @regular_file_name
76
+ end,
77
+ keep: proc do
70
78
  update_regular_file
71
79
  puts 'File modified time updated'
72
80
  end
73
81
  }.freeze
74
82
 
75
- private_constant :CHOICES
83
+ private_constant :DEFAULT_CHOICES
76
84
 
77
85
  def ask_question_and_make_actions
78
86
  puts warning_with_diff
79
87
 
80
88
  HIGHLINE.choose do |menu|
81
- menu.layout = :one_line
89
+ ## I don't know how to catch complex options like `replace-and-edit`, via shortcut like `rae`
90
+ # menu.layout = :one_line
82
91
 
83
- menu.prompt = "Do you want to edit #{@regular_basename} ? "
92
+ menu.header = "What to do with #{@regular_basename} "
84
93
 
85
- CHOICES.each do |answer, block|
94
+ choices.each do |answer, block|
86
95
  menu.choice(answer) { instance_exec(&block) }
87
96
  end
88
97
  end
@@ -90,7 +99,7 @@ class ExampleFile
90
99
 
91
100
  def warning_with_diff
92
101
  <<~WARN
93
- #{@basename} was modified after #{@regular_basename}.
102
+ #{@question_prefix}#{@basename} was modified after #{@regular_basename}.
94
103
 
95
104
  ```diff
96
105
  #{diff}
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class ExampleFile
4
- VERSION = '0.2.0'
4
+ VERSION = '0.3.1'
5
5
  end
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.2.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Popov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-30 00:00:00.000000000 Z
11
+ date: 2021-04-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: diffy
@@ -86,14 +86,14 @@ dependencies:
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 0.4.0
89
+ version: 0.8.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.4.0
96
+ version: 0.8.0
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: toys
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -114,14 +114,14 @@ dependencies:
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 0.2.0
117
+ version: 0.5.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.2.0
124
+ version: 0.5.0
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rspec
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -142,28 +142,28 @@ dependencies:
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: 0.19.0
145
+ version: 0.21.2
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: 0.19.0
152
+ version: 0.21.2
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: rubocop
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: 0.92.0
159
+ version: '1.3'
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: 0.92.0
166
+ version: '1.3'
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: rubocop-performance
169
169
  requirement: !ruby/object:Gem::Requirement
@@ -184,14 +184,14 @@ dependencies:
184
184
  requirements:
185
185
  - - "~>"
186
186
  - !ruby/object:Gem::Version
187
- version: '1.0'
187
+ version: '2.0'
188
188
  type: :development
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
192
  - - "~>"
193
193
  - !ruby/object:Gem::Version
194
- version: '1.0'
194
+ version: '2.0'
195
195
  description: |
196
196
  Class helper for example files.
197
197
  Usualy it's the alternative to environment variables (and `.env` files).
@@ -224,13 +224,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
224
224
  - - ">="
225
225
  - !ruby/object:Gem::Version
226
226
  version: '2.5'
227
+ - - "<"
228
+ - !ruby/object:Gem::Version
229
+ version: '4'
227
230
  required_rubygems_version: !ruby/object:Gem::Requirement
228
231
  requirements:
229
232
  - - ">="
230
233
  - !ruby/object:Gem::Version
231
234
  version: '0'
232
235
  requirements: []
233
- rubygems_version: 3.1.2
236
+ rubygems_version: 3.1.6
234
237
  signing_key:
235
238
  specification_version: 4
236
239
  summary: Class helper for example files