mkmatter 3.1.18 → 3.1.19

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: 75e0ffb5885b2cca3a5c86937ee366d3fb11b2fa79c08133cc9e2960bd467c2c
4
- data.tar.gz: a68c730e64ad48364c17957015fce3c230d12d1c2d5d36c3ccf507d089b8d8a8
3
+ metadata.gz: 7304c83014128ff9532cd76f7a3b9806b782e0735d47831c98a41b3324f883db
4
+ data.tar.gz: 41f7f6dee52f1a6dfd3ee4250cf6d96c58d6d99419a7009a91ea0666d3e4191b
5
5
  SHA512:
6
- metadata.gz: 663b61bbb39bf5373bb9d39f81a3372ef993d067d8d253d1378221c2901935241a7bfd1d9d5e3f49cd0c605ed86a9d2ac607eb7292b6b3a53fd64fc11437e583
7
- data.tar.gz: 2e2f32223509ec19972663d4b0e2d04ac326d7636e5bd0ae2d4d3d9339317aa60fa1180b81201c580653b6b3c022b7a4819fa8bac623c60a26eed4e672fbc556
6
+ metadata.gz: d5baebb4810de5240b2e2558e9244a235a8a9d9496ce1e4d6a2fc53185f06d3219455d5c3140317e60b267e0067251d36e70d190ac4821afe69f0cd99d69e044
7
+ data.tar.gz: 0d74b60662ed5d4aa4364ac81c7e7870195b1732a5e028a9dcdc969005d1a42a26ff7832d69dd5abff9a71f488cd45feff73a4ba21156670651d869f62ed3036
data/README.md CHANGED
@@ -1,16 +1,22 @@
1
1
  # mkmatter
2
2
 
3
+ <img src="https://uploads.iotaspencer.me/mkmatter_logo_3_face_2.png" width="200px" height="200px">
3
4
  [![Gem](https://img.shields.io/gem/v/mkmatter.svg?style=for-the-badge)](https://rubygems.org/gems/mkmatter)
4
5
  [![GitHub tag](https://img.shields.io/github/tag/IotaSpencer/mkmatter.svg?style=for-the-badge)](https://github.com/IotaSpencer/mkmatter/tree/)
5
6
 
6
- [![Gem](https://img.shields.io/gem/dt/mkmatter.svg?style=for-the-badge)](https://rubygems.org/gems/mkmatter)
7
- [![Gem](https://img.shields.io/gem/dtv/mkmatter.svg?style=for-the-badge)](https://rubygems.org/gems/mkmatter)
7
+ [![Downloads all time](https://img.shields.io/gem/dt/mkmatter.svg?style=for-the-badge)](https://rubygems.org/gems/mkmatter)
8
+ [![Downloads for latest version](https://img.shields.io/gem/dtv/mkmatter.svg?style=for-the-badge)](https://rubygems.org/gems/mkmatter)
8
9
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge)](https://opensource.org/licenses/MIT)
9
10
 
10
11
  [![forthebadge](https://forthebadge.com/images/badges/uses-badges.svg)](https://forthebadge.com)
11
12
  [![forthebadge](https://forthebadge.com/images/badges/built-with-love.svg)](https://forthebadge.com)
12
13
  [![forthebadge](https://forthebadge.com/images/badges/uses-git.svg)](https://forthebadge.com)
13
14
 
15
+ ### Coding Activity
16
+
17
+ [![wakatime](https://wakatime.com/badge/user/5ce38313-6fca-4c1e-b156-14447557e40f/project/339be810-d008-4a2a-8436-fe8675241c36.svg)](https://wakatime.com/badge/user/5ce38313-6fca-4c1e-b156-14447557e40f/project/339be810-d008-4a2a-8436-fe8675241c36)
18
+
19
+
14
20
  ## Contact
15
21
 
16
22
  If you install `mkmatter` Please let me know, I'd love to know the people using this!
@@ -18,7 +24,7 @@ If you install `mkmatter` Please let me know, I'd love to know the people using
18
24
  [![E-mail](https://img.shields.io/badge/Email-Me-green.svg?style=for-the-badge)](mailto:me@iotaspencer.me)
19
25
  [![Twitter Follow](https://img.shields.io/twitter/follow/KenISpencer.svg?label=Follow%20Me%20on%20Twitter&style=for-the-badge)](https://twitter.com/KenISpencer)
20
26
  [![Website](https://img.shields.io/website-up-down-green-red/https/iotaspencer.me.svg?label=My%20Site%20-%20IotaSpencer%2Eme&style=for-the-badge)](https://iotaspencer.me)
21
- [![E-mail](https://img.shields.io/badge/mkmatter%20on%20IotaSpencer%2eme-Project-green.svg?style=for-the-badge)](https://iotaspencer.me/projects/mkmatter)
27
+
22
28
 
23
29
  ## About mkmatter
24
30
 
@@ -1,16 +1,10 @@
1
1
  require 'yaml'
2
2
  require 'time'
3
- require 'highline'
4
3
  require 'mkmatter/helpers'
5
4
  module Mkmatter
6
5
  class Answers
7
- attr_accessor :title, :tags, :categories
8
- attr_accessor :date, :draft
9
- attr_accessor :slug_date, :answer_hash
10
- attr_accessor :published, :file_format
11
- attr_accessor :matter
12
- attr_accessor :extra_fields
13
- attr_accessor :summary
6
+ attr_accessor :title, :tags, :categories, :date, :draft, :slug_date, \
7
+ :answer_hash, :published, :file_format, :matter, :extra_fields, :summary
14
8
 
15
9
  def initialize(question_hash, publish, include_post_fields = true)
16
10
  @title = question_hash[:title]
@@ -84,10 +84,8 @@ module Mkmatter
84
84
  end
85
85
  end
86
86
 
87
- option :publish, :type => :boolean
88
87
  option :index, :type => :boolean, :default => nil
89
88
  option :type, :type => :string, :default => "post"
90
- option :draft, :type => :boolean, :default => nil
91
89
  option :'include-post-qs', :type => :boolean, :default => false,
92
90
  desc: "Include post questions in the prompt"
93
91
  option :'dry-run', :type => :boolean, :default => false
@@ -1,18 +1,12 @@
1
- require "highline"
2
- require "ostruct"
1
+ # frozen_string_literal: true
2
+
3
+ require 'highline'
3
4
 
4
5
  module Mkmatter
5
6
  class Questions
6
7
  attr :answers
7
- @hl = HighLine.new
8
- # def self.ask(cls)
9
- # known_questions = const_get(cls).methods.sort.delete_if { |m| m.to_s !~ /^get_.*$/ }
10
- # known_questions.each do |m|
11
- # @answers[:layout] = cls.to_s.lower
12
- # @answers[m.to_s.gsub(/^get_[0-9]{3}_/, "")] = method(m).call
13
- # end
14
- # @answers
15
- # end
8
+
9
+ @@hl = HighLine.new
16
10
 
17
11
  def ask(type, include_post_qs)
18
12
  known_questions = methods.sort.delete_if { |m| m.to_s !~ /^get_.*$/ }
@@ -36,21 +30,19 @@ module Mkmatter
36
30
  end
37
31
  known_questions.each do |m|
38
32
  @answers[:layout] = type
39
- @answers[m.to_s.gsub(/^get_[0-9]{3}_/, "")] = method(m).call
33
+ @answers[m.to_s.gsub(/^get_[0-9]{3}_/, '')] = method(m).call
40
34
  end
41
35
  @answers
42
36
  end
43
37
 
44
38
  # @!visibility private
45
39
  def initialize
46
- @answers = OpenStruct.new
47
- @hl = HighLine.new
40
+ @answers = {}
48
41
  end
49
42
 
50
43
  def get_001_title
51
- hl = @hl
52
- title = hl.ask "Title: "
53
- if hl.agree("Would you like it 'titleized' (Title instead of title)? ", true)
44
+ title = @@hl.ask 'Title: '
45
+ if @@hl.agree("Would you like it 'titleized' (Title instead of title)? ", true)
54
46
  title.titleize
55
47
  else
56
48
  title
@@ -59,24 +51,21 @@ module Mkmatter
59
51
 
60
52
  # @return [Array]
61
53
  def get_002_tags
62
- hl = @hl
63
- hl.ask("Tags? (write one on each line, then press '.' then press 'Enter')") do |q|
54
+ @@hl.ask("Tags? (write one on each line, then press '.' then press 'Enter')") do |q|
64
55
  q.gather = '.'
65
56
  end
66
57
  end
67
58
 
68
59
  # @return [Array]
69
60
  def get_003_categories
70
- hl = @hl
71
- hl.ask("Categories? (write one on each line, then press '.' then press 'Enter')") do |q|
61
+ @@hl.ask("Categories? (write one on each line, then press '.' then press 'Enter')") do |q|
72
62
  q.gather = '.'
73
63
  end
74
64
  end
75
65
 
76
66
  # @return [String]
77
67
  def get_004_file_format
78
- hl = @hl
79
- hl.choose do |menu|
68
+ @@hl.choose do |menu|
80
69
  menu.header = "Choose whether you want HTML or Markdown"
81
70
  menu.choice "html" do
82
71
  return "html"
@@ -90,18 +79,17 @@ module Mkmatter
90
79
 
91
80
  # @return [String]
92
81
  def get_005_extra_fields
93
- hl = @hl
94
82
  fields = {}
95
83
  custom_fields = nil
96
84
  cfh = nil
97
- if hl.agree("Do you want to add custom fields? ", true)
98
- hl.say(<<~EXTRA_FIELDS)
99
- These fields will be usable as {{LAYOUT_TYPE.FIELD}} in pages/posts etc.
100
- Your fields should be inputted as FIELD=>TEXT HERE
101
- Type 'EOL' on a new line then press Enter when you are done.
102
- <%= color('NOTE', :bold, RED) %>: Input is <%= color('NOT', :bold, RED) %> evaluated!
85
+ if @@hl.agree("Do you want to add custom fields? ", true)
86
+ @@hl.say(<<~EXTRA_FIELDS)
87
+ These fields will be usable as {{LAYOUT_TYPE.FIELD}} in pages/posts etc.
88
+ Your fields should be inputted as FIELD=>TEXT HERE
89
+ Type 'EOL' on a new line then press Enter when you are done.
90
+ <%= color('NOTE', :bold, RED) %>: Input is <%= color('NOT', :bold, RED) %> evaluated!
103
91
  EXTRA_FIELDS
104
- custom_fields = hl.ask("Fields?") do |q|
92
+ custom_fields = @@hl.ask('Fields?') do |q|
105
93
  q.gather = '.'
106
94
  end
107
95
  end
@@ -109,32 +97,30 @@ module Mkmatter
109
97
  custom_fields.each do |field|
110
98
  fields.store(field.to_sym, 'nil')
111
99
  end
112
- end
100
+ end
113
101
  if custom_fields.empty?
114
- hl.say("No extra fields were added.")
102
+ @@hl.say('No extra fields were added.')
115
103
  return
116
104
  else
117
- hl.say("#{fields} #{fields.class}")
118
- cfh = hl.ask("Value of field '<%= key %>'?") do |q|
105
+ @@hl.say("#{fields} #{fields.class}")
106
+ cfh = @@hl.ask("Value of field '<%= key %>'?") do |q|
119
107
  q.gather = fields
120
108
  end
121
109
  end
122
110
  cfh
123
111
  end
124
112
 
125
- # @return [OpenStruct]
126
113
  def get_006_summary
127
- hl = @hl
128
114
  summary = nil
129
- summary_if = hl.agree("Summary? ", true)
115
+ summary_if = @@hl.agree('Summary? ', true)
130
116
  if summary_if
131
- summary = hl.ask(<<~SUMMARYDOC) do |q|
117
+ summary = @@hl.ask(<<~SUMMARYDOC) do |q|
132
118
  Input a summary of the post.
133
119
  This will be outputted as a summary in the front matter.
134
120
  This is useful for a post that is long and you want to
135
121
  show a summary of the post.
136
122
  SUMMARYDOC
137
- q.gather = "."
123
+ q.gather = '.'
138
124
  end
139
125
  end
140
126
  summary.join("\n")
@@ -1,5 +1,5 @@
1
1
  module Mkmatter
2
- VERSION = '3.1.18'
2
+ VERSION = '3.1.19'
3
3
 
4
4
  # Return gem information for certain commands and options
5
5
  class GemInfo
data/mkmatter.gemspec CHANGED
@@ -35,21 +35,21 @@ Gem::Specification.new do |spec|
35
35
  spec.executables << 'mkmatter'
36
36
  spec.require_paths = ['lib']
37
37
 
38
- spec.add_runtime_dependency 'highline', '~> 3.1.2'
39
38
  spec.add_runtime_dependency 'activesupport', '~> 8.0.2'
39
+ spec.add_runtime_dependency 'front_matter_parser', '~> 1.0.1'
40
40
  spec.add_runtime_dependency 'git', '~> 3.1.0'
41
- spec.add_runtime_dependency 'slugity', '~> 1.1'
42
- spec.add_runtime_dependency 'thor', '~> 1.3.2'
43
- spec.add_runtime_dependency 'ostruct'
44
- spec.add_runtime_dependency 'terminal-table', '~> 4.0.0'
41
+ spec.add_runtime_dependency 'highline', '~> 3.1.2'
42
+ spec.add_runtime_dependency 'micro_install', '~> 0.4.2'
45
43
  spec.add_runtime_dependency 'os', '~> 1.1.4'
46
44
  spec.add_runtime_dependency 'paint', '~> 2.3.0'
47
- spec.add_runtime_dependency 'front_matter_parser', '~> 1.0.1'
48
45
  spec.add_runtime_dependency 'rake', '13.2.1'
49
- spec.add_runtime_dependency 'micro_install', '~> 0.4.1'
46
+ spec.add_runtime_dependency 'slugity', '~> 1.1'
47
+ spec.add_runtime_dependency 'terminal-table', '~> 4.0.0'
48
+ spec.add_runtime_dependency 'thor', '~> 1.4.0'
49
+
50
+ spec.add_development_dependency 'bump', '~> 0.10.0'
50
51
  spec.add_development_dependency 'bundler', '~> 2.6.9'
51
52
  spec.add_development_dependency 'cancun', '~> 0.2.2'
52
- spec.add_development_dependency 'bump', '~> 0.10.0'
53
53
  spec.add_development_dependency 'minitest', '~> 5'
54
54
  spec.add_development_dependency 'minitest-reporters', '~> 1.6.1'
55
55
  spec.add_development_dependency 'rspec', '~> 3.13.1'
metadata CHANGED
@@ -1,42 +1,42 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mkmatter
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.18
4
+ version: 3.1.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ken Spencer
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-06-12 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
- name: highline
13
+ name: activesupport
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
16
  - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: 3.1.2
18
+ version: 8.0.2
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: 3.1.2
25
+ version: 8.0.2
26
26
  - !ruby/object:Gem::Dependency
27
- name: activesupport
27
+ name: front_matter_parser
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
30
  - - "~>"
31
31
  - !ruby/object:Gem::Version
32
- version: 8.0.2
32
+ version: 1.0.1
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: 8.0.2
39
+ version: 1.0.1
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: git
42
42
  requirement: !ruby/object:Gem::Requirement
@@ -52,131 +52,131 @@ dependencies:
52
52
  - !ruby/object:Gem::Version
53
53
  version: 3.1.0
54
54
  - !ruby/object:Gem::Dependency
55
- name: slugity
55
+ name: highline
56
56
  requirement: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '1.1'
60
+ version: 3.1.2
61
61
  type: :runtime
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '1.1'
67
+ version: 3.1.2
68
68
  - !ruby/object:Gem::Dependency
69
- name: thor
69
+ name: micro_install
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: 1.3.2
74
+ version: 0.4.2
75
75
  type: :runtime
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: 1.3.2
81
+ version: 0.4.2
82
82
  - !ruby/object:Gem::Dependency
83
- name: ostruct
83
+ name: os
84
84
  requirement: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - ">="
86
+ - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: '0'
88
+ version: 1.1.4
89
89
  type: :runtime
90
90
  prerelease: false
91
91
  version_requirements: !ruby/object:Gem::Requirement
92
92
  requirements:
93
- - - ">="
93
+ - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: '0'
95
+ version: 1.1.4
96
96
  - !ruby/object:Gem::Dependency
97
- name: terminal-table
97
+ name: paint
98
98
  requirement: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
- version: 4.0.0
102
+ version: 2.3.0
103
103
  type: :runtime
104
104
  prerelease: false
105
105
  version_requirements: !ruby/object:Gem::Requirement
106
106
  requirements:
107
107
  - - "~>"
108
108
  - !ruby/object:Gem::Version
109
- version: 4.0.0
109
+ version: 2.3.0
110
110
  - !ruby/object:Gem::Dependency
111
- name: os
111
+ name: rake
112
112
  requirement: !ruby/object:Gem::Requirement
113
113
  requirements:
114
- - - "~>"
114
+ - - '='
115
115
  - !ruby/object:Gem::Version
116
- version: 1.1.4
116
+ version: 13.2.1
117
117
  type: :runtime
118
118
  prerelease: false
119
119
  version_requirements: !ruby/object:Gem::Requirement
120
120
  requirements:
121
- - - "~>"
121
+ - - '='
122
122
  - !ruby/object:Gem::Version
123
- version: 1.1.4
123
+ version: 13.2.1
124
124
  - !ruby/object:Gem::Dependency
125
- name: paint
125
+ name: slugity
126
126
  requirement: !ruby/object:Gem::Requirement
127
127
  requirements:
128
128
  - - "~>"
129
129
  - !ruby/object:Gem::Version
130
- version: 2.3.0
130
+ version: '1.1'
131
131
  type: :runtime
132
132
  prerelease: false
133
133
  version_requirements: !ruby/object:Gem::Requirement
134
134
  requirements:
135
135
  - - "~>"
136
136
  - !ruby/object:Gem::Version
137
- version: 2.3.0
137
+ version: '1.1'
138
138
  - !ruby/object:Gem::Dependency
139
- name: front_matter_parser
139
+ name: terminal-table
140
140
  requirement: !ruby/object:Gem::Requirement
141
141
  requirements:
142
142
  - - "~>"
143
143
  - !ruby/object:Gem::Version
144
- version: 1.0.1
144
+ version: 4.0.0
145
145
  type: :runtime
146
146
  prerelease: false
147
147
  version_requirements: !ruby/object:Gem::Requirement
148
148
  requirements:
149
149
  - - "~>"
150
150
  - !ruby/object:Gem::Version
151
- version: 1.0.1
151
+ version: 4.0.0
152
152
  - !ruby/object:Gem::Dependency
153
- name: rake
153
+ name: thor
154
154
  requirement: !ruby/object:Gem::Requirement
155
155
  requirements:
156
- - - '='
156
+ - - "~>"
157
157
  - !ruby/object:Gem::Version
158
- version: 13.2.1
158
+ version: 1.4.0
159
159
  type: :runtime
160
160
  prerelease: false
161
161
  version_requirements: !ruby/object:Gem::Requirement
162
162
  requirements:
163
- - - '='
163
+ - - "~>"
164
164
  - !ruby/object:Gem::Version
165
- version: 13.2.1
165
+ version: 1.4.0
166
166
  - !ruby/object:Gem::Dependency
167
- name: micro_install
167
+ name: bump
168
168
  requirement: !ruby/object:Gem::Requirement
169
169
  requirements:
170
170
  - - "~>"
171
171
  - !ruby/object:Gem::Version
172
- version: 0.4.1
173
- type: :runtime
172
+ version: 0.10.0
173
+ type: :development
174
174
  prerelease: false
175
175
  version_requirements: !ruby/object:Gem::Requirement
176
176
  requirements:
177
177
  - - "~>"
178
178
  - !ruby/object:Gem::Version
179
- version: 0.4.1
179
+ version: 0.10.0
180
180
  - !ruby/object:Gem::Dependency
181
181
  name: bundler
182
182
  requirement: !ruby/object:Gem::Requirement
@@ -205,20 +205,6 @@ dependencies:
205
205
  - - "~>"
206
206
  - !ruby/object:Gem::Version
207
207
  version: 0.2.2
208
- - !ruby/object:Gem::Dependency
209
- name: bump
210
- requirement: !ruby/object:Gem::Requirement
211
- requirements:
212
- - - "~>"
213
- - !ruby/object:Gem::Version
214
- version: 0.10.0
215
- type: :development
216
- prerelease: false
217
- version_requirements: !ruby/object:Gem::Requirement
218
- requirements:
219
- - - "~>"
220
- - !ruby/object:Gem::Version
221
- version: 0.10.0
222
208
  - !ruby/object:Gem::Dependency
223
209
  name: minitest
224
210
  requirement: !ruby/object:Gem::Requirement
@@ -277,14 +263,12 @@ files:
277
263
  - ".travis.yml"
278
264
  - Gemfile
279
265
  - LICENSE
280
- - LICENSE.txt
281
266
  - README.md
282
267
  - Rakefile
283
268
  - bin/console
284
269
  - bin/mkmatter
285
270
  - bin/setup
286
271
  - features/support/env.rb
287
- - lib/minitest/xs_and_os_plugin.rb
288
272
  - lib/mkmatter.rb
289
273
  - lib/mkmatter/answers.rb
290
274
  - lib/mkmatter/cli.rb
@@ -335,7 +319,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
335
319
  - !ruby/object:Gem::Version
336
320
  version: '0'
337
321
  requirements: []
338
- rubygems_version: 3.6.2
322
+ rubygems_version: 3.7.1
339
323
  specification_version: 4
340
324
  summary: Script facilitating easy content creation and generation for Jekyll Sites
341
325
  test_files: []
data/LICENSE.txt DELETED
@@ -1,21 +0,0 @@
1
- The MIT License (MIT)
2
-
3
- Copyright (c) 2018 Ken Spencer
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in
13
- all copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
- THE SOFTWARE.
@@ -1,206 +0,0 @@
1
- require 'minitest'
2
- require 'minitest/reporters/base_reporter'
3
- module Minitest
4
- module Reporters
5
- def plugin_xs_and_os_init
6
- Minitest.reporter.reporters.clear
7
- Minitest.reporter << TravisReporter.new(options[:io], options)
8
-
9
- end
10
-
11
- class TravisReporter < Minitest::Reporters::BaseReporter
12
- @@color_for_result_code = {
13
- '.' => :green,
14
- 'E' => :red,
15
- 'F' => :red,
16
- '$' => :yellow
17
- }
18
- @@result_code_to_unicode = {
19
- '.' => "\u{2714}",
20
- 'F' => "\u{2718}",
21
- 'E' => "\u{203C}",
22
- '$' => "\u{26A1}"
23
- }
24
- @@color = {
25
- red: 31,
26
- green: 32,
27
- yellow: 33,
28
- blue: 34
29
- }
30
-
31
- def initialize(*)
32
- super
33
- @color_enabled = io.respond_to?(:tty?) && io.tty?
34
-
35
- end
36
-
37
- def record(result)
38
- super
39
- puts
40
- print result.class_name
41
- print ' '
42
- print self.result_name result.name
43
- print ' ['
44
- print_result_code(result.result_code)
45
- print ']'
46
- end
47
-
48
- def start
49
- super
50
- io.print "Run options: #{options[:args]} / "
51
- io.print 'Running:'
52
- end
53
-
54
- def report
55
- super
56
- io.sync = true
57
-
58
- failing_results = results.reject(&:skipped?)
59
- skipped_results = results.select(&:skipped?)
60
-
61
- color = :green
62
- color = :yellow if skipped_results.any?
63
- color = :red if failing_results.any?
64
-
65
- if failing_results.any? || skipped_results.any?
66
- failing_results.each.with_index(1) { |result, index| display_failing(result, index) }
67
- skipped_results.each.with_index(failing_results.size + 1) { |result, index| display_skipped(result, index) }
68
- end
69
-
70
- io.print "\n\n"
71
- io.puts statistics
72
- io.puts color(summary, color)
73
-
74
- if failing_results.any?
75
- io.puts "\nFailed Tests:\n"
76
- failing_results.each { |result| display_replay_command(result) }
77
- io.puts "\n\n"
78
- end
79
- end
80
-
81
-
82
- def statistics
83
- 'Finished in %.6fs, %.4f runs/s, %.4f assertions/s.' %
84
- [total_time, count / total_time, assertions / total_time]
85
- end
86
-
87
- def summary # :nodoc:
88
- [
89
- pluralize('run', count),
90
- pluralize('assertion', assertions),
91
- pluralize('failure', failures),
92
- pluralize('error', errors),
93
- pluralize('skip', skips)
94
- ].join(', ')
95
- end
96
-
97
- def indent(text)
98
- text.gsub(/^/, ' ')
99
- end
100
-
101
- def display_failing(result, index)
102
- backtrace = backtrace(result.failure.backtrace)
103
- message = result.failure.message
104
- message = message.lines.tap(&:pop).join.chomp if result.error?
105
-
106
- str = "\n\n"
107
- str << color('%4d) %s' % [index, result_name(result.name)])
108
- str << "\n" << color(indent(message), :red)
109
- str << "\n" << color(backtrace, :blue)
110
- io.print str
111
- end
112
-
113
- def display_skipped(result, index)
114
- location = location(result.failure.location)
115
- str = "\n\n"
116
- str << color('%4d) %s [SKIPPED]' % [index, result_name(result.name)], :yellow)
117
- str << "\n" << indent(color(location, :yellow))
118
- io.print str
119
- end
120
-
121
- def display_replay_command(result)
122
- location, line = find_test_file(result)
123
- return if location.empty?
124
-
125
- command = if defined?(Rails) && Rails.version >= '5.0.0'
126
- %[bin/rails test #{location}:#{line}]
127
- %[rake TEST=#{location} TESTOPTS="--name=#{result.name}"]
128
- else
129
- end
130
-
131
- str = "\n"
132
- str << color(command, :red)
133
-
134
- io.print str
135
- end
136
-
137
- def find_test_file(result)
138
- location, line = result.source_location
139
- location = location.gsub(%r[^.*?/((?:test|spec)/.*?)$], "\\1")
140
-
141
- [location, line]
142
- end
143
-
144
- def backtrace(backtrace)
145
- backtrace = filter_backtrace(backtrace).map { |line| location(line, true) }
146
- return if backtrace.empty?
147
- indent(backtrace.join("\n")).gsub(/^(\s+)/, "\\1# ")
148
- end
149
-
150
- def location(location, include_line_number = false)
151
- regex = include_line_number ? /^([^:]+:\d+)/ : /^([^:]+)/
152
- location = File.expand_path(location[regex, 1])
153
-
154
- return location unless location.start_with?(Dir.pwd)
155
-
156
- location.gsub(%r[^#{Regexp.escape(Dir.pwd)}/], '')
157
- end
158
-
159
- def filter_backtrace(backtrace)
160
- Minitest.backtrace_filter.filter(backtrace)
161
- end
162
-
163
- def result_name(name)
164
- name
165
- .gsub(/^test(_\d+)?_/, '')
166
- .gsub(/_/, ' ')
167
- end
168
-
169
- def print_result_code(result_code)
170
- result = @@result_code_to_unicode[result_code]
171
- colors = {
172
- "\u{2714}" => :green,
173
- "\u{2718}" => :red,
174
- "\u{203C}" => :red,
175
- "\u{26A1}" => :yellow
176
- }
177
- io.print color(result, colors[result])
178
- end
179
-
180
- def color(string, color = :default)
181
- if color_enabled?
182
- color = @@color.fetch(color, 0)
183
- "\e[#{color}m#{string}\e[0m"
184
- else
185
- string
186
- end
187
- end
188
-
189
- def color_enabled?
190
- @color_enabled
191
- end
192
-
193
- def pluralize(word, count)
194
- case count
195
- when 0
196
- "no #{word}s"
197
- when 1
198
- "1 #{word}"
199
- else
200
- "#{count} #{word}s"
201
- end
202
- end
203
- end
204
- end
205
-
206
- end