dropcaster 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5e8f2bc56c30e306420ad56a4755769de90292b365a422cd257e11d160bc336d
4
- data.tar.gz: 7f4d2fbccd894ef10e6cc212931252ea69b253cf12b22448c4b3ee2e05acdaa9
3
+ metadata.gz: 00f46163bcbe9e5dab46ecb8d13f1ffd0d98ad34515c0f6b69ee7bb7717cf151
4
+ data.tar.gz: d110b3a0c424ad88bc4e20811f45edb03dbe13f8f12bfb1da2017f5652a39a96
5
5
  SHA512:
6
- metadata.gz: 31ec8e4d767d0e2af69f7975f044c58c4f6aae21f3a708f644f6079a96dc411d74cfeccafd361ab218960c34fb2bd60c794cc0dd65ec3f26cacac6417b249638
7
- data.tar.gz: 62a015d29486572e452e16ca302e6d383e71728681699c417269531d57a814bec4e72b19c149bf33ef717f5274dc7497a04976955ecb29a3efc842f0998b4e3d
6
+ metadata.gz: 2557829bc673bfe5ee58a6135534b5381d9909679414015e6ac56d999fbd203066930f05f2903c01aa98bedfd036f79c49cfe41187eecf31000f93a411e4123a
7
+ data.tar.gz: 61b47cec9dbcca537c56ed1c78c85b230d0b628a8e01c65b098d61370a82651b1cc5eca208eb9de7bde53faa14fae24cbb91379807e15ca56742a2bf52d8f68e
@@ -24,151 +24,9 @@ Naming/FileName:
24
24
 
25
25
  Metrics/BlockLength:
26
26
  Exclude:
27
- - spec/**/*
27
+ - test/**/*
28
28
 
29
- Lint/AmbiguousRegexpLiteral:
30
- Enabled: false
31
-
32
- Lint/HandleExceptions:
33
- Enabled: true
34
-
35
- Lint/UnusedBlockArgument:
36
- Enabled: false
37
-
38
- Lint/UnusedMethodArgument:
39
- Enabled: false
40
-
41
- Metrics/AbcSize:
42
- Enabled: false
43
-
44
- Metrics/ClassLength:
45
- Enabled: false
46
-
47
- Metrics/CyclomaticComplexity:
48
- Max: 12
49
-
50
- Metrics/LineLength:
29
+ Layout/LineLength:
51
30
  Max: 180
52
-
53
- Metrics/MethodLength:
54
- Max: 60
55
-
56
- Metrics/ModuleLength:
57
- Enabled: false
58
-
59
- Metrics/ParameterLists:
60
- Enabled: false
61
-
62
- Metrics/PerceivedComplexity:
63
- Enabled: false
64
-
65
- Performance/Casecmp:
66
- Enabled: false
67
-
68
- Performance/Sample:
69
- Enabled: false
70
-
71
- Style/Alias:
72
- EnforcedStyle: prefer_alias_method
73
-
74
- Layout/AlignParameters:
75
- Enabled: false
76
-
77
- Style/BlockDelimiters:
78
- Enabled: false
79
-
80
- Style/BracesAroundHashParameters:
81
- Enabled: false
82
-
83
- Style/ClassAndModuleChildren:
84
- Enabled: false
85
-
86
- Layout/ClosingParenthesisIndentation:
87
- Enabled: false
88
-
89
- Style/Documentation:
90
- Enabled: false
91
-
92
- Layout/DotPosition:
93
- EnforcedStyle: trailing
94
-
95
- Style/DoubleNegation:
96
- Enabled: false
97
-
98
- Style/EachWithObject:
99
- Enabled: false
100
-
101
- Style/FormatString:
102
- EnforcedStyle: sprintf
103
-
104
- Style/GuardClause:
105
- Enabled: false
106
-
107
- Style/IfUnlessModifier:
108
- Enabled: false
109
-
110
- Layout/IndentArray:
111
- EnforcedStyle: consistent
112
-
113
- Layout/IndentHash:
114
- Enabled: false
115
-
116
- Style/Lambda:
117
- Enabled: false
118
-
119
- Style/MultilineBlockChain:
120
- Enabled: false
121
-
122
- Layout/MultilineBlockLayout:
123
- Enabled: false
124
-
125
- Layout/MultilineOperationIndentation:
126
- Enabled: false
127
-
128
- Style/NegatedIf:
129
- Enabled: false
130
-
131
- Style/Next:
132
- Enabled: false
133
-
134
- Style/NumericLiterals:
135
- Enabled: false
136
-
137
- Naming/PredicateName:
138
- Enabled: false
139
-
140
- Style/RaiseArgs:
141
- EnforcedStyle: compact
142
-
143
- Style/RedundantSelf:
144
- Enabled: false
145
-
146
- Style/RescueModifier:
147
- Enabled: false
148
-
149
- Style/SignalException:
150
- Enabled: false
151
-
152
- Style/SingleLineBlockParams:
153
- Enabled: false
154
-
155
- Layout/SpaceAroundEqualsInParameterDefault:
156
- EnforcedStyle: no_space
157
-
158
- Style/StructInheritance:
159
- Enabled: false
160
-
161
- Style/TrailingCommaInArguments:
162
- Enabled: false
163
-
164
- Style/TrailingUnderscoreVariable:
165
- Enabled: false
166
-
167
- Style/TrivialAccessors:
168
- Enabled: false
169
-
170
- Style/WordArray:
171
- Enabled: false
172
-
173
- Style/ZeroLengthPredicate:
174
- Enabled: false
31
+ Exclude:
32
+ - test/**/*
@@ -1 +1 @@
1
- 2.5.1
1
+ 2.6.5
@@ -1,11 +1,17 @@
1
1
  language: ruby
2
2
 
3
3
  rvm:
4
- - 2.5.1
4
+ - 2.5.7
5
+ - 2.6.5
6
+ - 2.7.0-rc2
7
+
8
+ matrix:
9
+ allow_failures:
10
+ - rvm: 2.7.0-rc2
5
11
 
6
12
  before_install:
7
- # https://github.com/travis-ci/travis-ci/issues/8978#issuecomment-377680126
8
- - gem install bundler
13
+ # https://github.com/travis-ci/travis-ci/issues/8978#issuecomment-377680126
14
+ - gem install bundler
9
15
 
10
16
  script:
11
17
  - bundle exec rake
@@ -1,73 +1,73 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dropcaster (1.0.0)
4
+ dropcaster (1.1.0)
5
5
  activesupport
6
6
  bundler
7
- nokogiri (~> 1.8.2)
7
+ nokogiri
8
8
  null-logger
9
9
  ruby-mp3info
10
10
 
11
11
  GEM
12
12
  remote: https://rubygems.org/
13
13
  specs:
14
- activesupport (4.2.10)
15
- i18n (~> 0.7)
14
+ activesupport (6.0.2.1)
15
+ concurrent-ruby (~> 1.0, >= 1.0.2)
16
+ i18n (>= 0.7, < 2)
16
17
  minitest (~> 5.1)
17
- thread_safe (~> 0.3, >= 0.3.4)
18
18
  tzinfo (~> 1.1)
19
- addressable (2.5.2)
20
- public_suffix (>= 2.0.2, < 4.0)
19
+ zeitwerk (~> 2.2)
20
+ addressable (2.7.0)
21
+ public_suffix (>= 2.0.2, < 5.0)
21
22
  ast (2.4.0)
22
- byebug (10.0.2)
23
+ byebug (11.0.1)
23
24
  coderay (1.1.2)
24
25
  coffee-script (2.4.1)
25
26
  coffee-script-source
26
27
  execjs
27
28
  coffee-script-source (1.11.1)
28
29
  colorator (1.1.0)
29
- commonmarker (0.17.9)
30
+ commonmarker (0.17.13)
30
31
  ruby-enum (~> 0.5)
31
- concurrent-ruby (1.0.5)
32
- dnsruby (1.61.1)
32
+ concurrent-ruby (1.1.5)
33
+ dnsruby (1.61.3)
33
34
  addressable (~> 2.5)
34
35
  em-websocket (0.5.1)
35
36
  eventmachine (>= 0.12.9)
36
37
  http_parser.rb (~> 0.6.0)
37
- ethon (0.11.0)
38
+ ethon (0.12.0)
38
39
  ffi (>= 1.3.0)
39
40
  eventmachine (1.2.7)
40
41
  eventmachine (1.2.7-x86-mingw32)
41
42
  execjs (2.7.0)
42
- faraday (0.15.2)
43
+ faraday (0.17.1)
43
44
  multipart-post (>= 1.2, < 3)
44
- ffi (1.9.25)
45
- ffi (1.9.25-x86-mingw32)
45
+ ffi (1.11.3)
46
+ ffi (1.11.3-x86-mingw32)
46
47
  formatador (0.2.5)
47
48
  forwardable-extended (2.6.0)
48
- gemoji (3.0.0)
49
- github-pages (188)
50
- activesupport (= 4.2.10)
51
- github-pages-health-check (= 1.8.1)
52
- jekyll (= 3.7.3)
53
- jekyll-avatar (= 0.6.0)
49
+ gemoji (3.0.1)
50
+ github-pages (203)
51
+ github-pages-health-check (= 1.16.1)
52
+ jekyll (= 3.8.5)
53
+ jekyll-avatar (= 0.7.0)
54
54
  jekyll-coffeescript (= 1.1.1)
55
- jekyll-commonmark-ghpages (= 0.1.5)
55
+ jekyll-commonmark-ghpages (= 0.1.6)
56
56
  jekyll-default-layout (= 0.1.4)
57
- jekyll-feed (= 0.10.0)
57
+ jekyll-feed (= 0.13.0)
58
58
  jekyll-gist (= 1.5.0)
59
- jekyll-github-metadata (= 2.9.4)
60
- jekyll-mentions (= 1.4.0)
61
- jekyll-optional-front-matter (= 0.3.0)
59
+ jekyll-github-metadata (= 2.12.1)
60
+ jekyll-mentions (= 1.5.1)
61
+ jekyll-optional-front-matter (= 0.3.2)
62
62
  jekyll-paginate (= 1.1.0)
63
- jekyll-readme-index (= 0.2.0)
64
- jekyll-redirect-from (= 0.14.0)
65
- jekyll-relative-links (= 0.5.3)
66
- jekyll-remote-theme (= 0.3.1)
63
+ jekyll-readme-index (= 0.3.0)
64
+ jekyll-redirect-from (= 0.15.0)
65
+ jekyll-relative-links (= 0.6.1)
66
+ jekyll-remote-theme (= 0.4.1)
67
67
  jekyll-sass-converter (= 1.5.2)
68
- jekyll-seo-tag (= 2.5.0)
69
- jekyll-sitemap (= 1.2.0)
70
- jekyll-swiss (= 0.4.0)
68
+ jekyll-seo-tag (= 2.6.1)
69
+ jekyll-sitemap (= 1.4.0)
70
+ jekyll-swiss (= 1.0.0)
71
71
  jekyll-theme-architect (= 0.1.1)
72
72
  jekyll-theme-cayman (= 0.1.1)
73
73
  jekyll-theme-dinky (= 0.1.1)
@@ -77,27 +77,26 @@ GEM
77
77
  jekyll-theme-midnight (= 0.1.1)
78
78
  jekyll-theme-minimal (= 0.1.1)
79
79
  jekyll-theme-modernist (= 0.1.1)
80
- jekyll-theme-primer (= 0.5.3)
80
+ jekyll-theme-primer (= 0.5.4)
81
81
  jekyll-theme-slate (= 0.1.1)
82
82
  jekyll-theme-tactile (= 0.1.1)
83
83
  jekyll-theme-time-machine (= 0.1.1)
84
- jekyll-titles-from-headings (= 0.5.1)
85
- jemoji (= 0.10.0)
86
- kramdown (= 1.16.2)
87
- liquid (= 4.0.0)
88
- listen (= 3.1.5)
84
+ jekyll-titles-from-headings (= 0.5.3)
85
+ jemoji (= 0.11.1)
86
+ kramdown (= 1.17.0)
87
+ liquid (= 4.0.3)
89
88
  mercenary (~> 0.3)
90
- minima (= 2.5.0)
91
- nokogiri (>= 1.8.2, < 2.0)
92
- rouge (= 2.2.1)
89
+ minima (= 2.5.1)
90
+ nokogiri (>= 1.10.4, < 2.0)
91
+ rouge (= 3.13.0)
93
92
  terminal-table (~> 1.4)
94
- github-pages-health-check (1.8.1)
93
+ github-pages-health-check (1.16.1)
95
94
  addressable (~> 2.3)
96
95
  dnsruby (~> 1.60)
97
96
  octokit (~> 4.0)
98
- public_suffix (~> 2.0)
97
+ public_suffix (~> 3.0)
99
98
  typhoeus (~> 1.3)
100
- guard (2.14.2)
99
+ guard (2.16.1)
101
100
  formatador (>= 0.2.4)
102
101
  listen (>= 2.7, < 4.0)
103
102
  lumberjack (>= 1.0.12, < 2.0)
@@ -106,22 +105,22 @@ GEM
106
105
  pry (>= 0.9.12)
107
106
  shellany (~> 0.0)
108
107
  thor (>= 0.18.1)
109
- guard-bundler (2.1.0)
110
- bundler (~> 1.0)
108
+ guard-bundler (3.0.0)
109
+ bundler (>= 2.1, < 3)
111
110
  guard (~> 2.2)
112
111
  guard-compat (~> 1.1)
113
112
  guard-compat (1.2.1)
114
113
  guard-minitest (2.4.6)
115
114
  guard-compat (~> 1.2)
116
115
  minitest (>= 3.0)
117
- html-pipeline (2.8.3)
116
+ html-pipeline (2.12.3)
118
117
  activesupport (>= 2)
119
118
  nokogiri (>= 1.4)
120
119
  http_parser.rb (0.6.0)
121
120
  i18n (0.9.5)
122
121
  concurrent-ruby (~> 1.0)
123
- jaro_winkler (1.5.1)
124
- jekyll (3.7.3)
122
+ jaro_winkler (1.5.4)
123
+ jekyll (3.8.5)
125
124
  addressable (~> 2.4)
126
125
  colorator (~> 1.0)
127
126
  em-websocket (~> 0.5)
@@ -134,49 +133,50 @@ GEM
134
133
  pathutil (~> 0.9)
135
134
  rouge (>= 1.7, < 4)
136
135
  safe_yaml (~> 1.0)
137
- jekyll-avatar (0.6.0)
138
- jekyll (~> 3.0)
136
+ jekyll-avatar (0.7.0)
137
+ jekyll (>= 3.0, < 5.0)
139
138
  jekyll-coffeescript (1.1.1)
140
139
  coffee-script (~> 2.2)
141
140
  coffee-script-source (~> 1.11.1)
142
- jekyll-commonmark (1.2.0)
141
+ jekyll-commonmark (1.3.1)
143
142
  commonmarker (~> 0.14)
144
- jekyll (>= 3.0, < 4.0)
145
- jekyll-commonmark-ghpages (0.1.5)
143
+ jekyll (>= 3.7, < 5.0)
144
+ jekyll-commonmark-ghpages (0.1.6)
146
145
  commonmarker (~> 0.17.6)
147
- jekyll-commonmark (~> 1)
148
- rouge (~> 2)
146
+ jekyll-commonmark (~> 1.2)
147
+ rouge (>= 2.0, < 4.0)
149
148
  jekyll-default-layout (0.1.4)
150
149
  jekyll (~> 3.0)
151
- jekyll-feed (0.10.0)
152
- jekyll (~> 3.3)
150
+ jekyll-feed (0.13.0)
151
+ jekyll (>= 3.7, < 5.0)
153
152
  jekyll-gist (1.5.0)
154
153
  octokit (~> 4.2)
155
- jekyll-github-metadata (2.9.4)
156
- jekyll (~> 3.1)
154
+ jekyll-github-metadata (2.12.1)
155
+ jekyll (~> 3.4)
157
156
  octokit (~> 4.0, != 4.4.0)
158
- jekyll-mentions (1.4.0)
157
+ jekyll-mentions (1.5.1)
159
158
  html-pipeline (~> 2.3)
160
- jekyll (~> 3.0)
161
- jekyll-optional-front-matter (0.3.0)
162
- jekyll (~> 3.0)
159
+ jekyll (>= 3.7, < 5.0)
160
+ jekyll-optional-front-matter (0.3.2)
161
+ jekyll (>= 3.0, < 5.0)
163
162
  jekyll-paginate (1.1.0)
164
- jekyll-readme-index (0.2.0)
165
- jekyll (~> 3.0)
166
- jekyll-redirect-from (0.14.0)
167
- jekyll (~> 3.3)
168
- jekyll-relative-links (0.5.3)
169
- jekyll (~> 3.3)
170
- jekyll-remote-theme (0.3.1)
171
- jekyll (~> 3.5)
172
- rubyzip (>= 1.2.1, < 3.0)
163
+ jekyll-readme-index (0.3.0)
164
+ jekyll (>= 3.0, < 5.0)
165
+ jekyll-redirect-from (0.15.0)
166
+ jekyll (>= 3.3, < 5.0)
167
+ jekyll-relative-links (0.6.1)
168
+ jekyll (>= 3.3, < 5.0)
169
+ jekyll-remote-theme (0.4.1)
170
+ addressable (~> 2.0)
171
+ jekyll (>= 3.5, < 5.0)
172
+ rubyzip (>= 1.3.0)
173
173
  jekyll-sass-converter (1.5.2)
174
174
  sass (~> 3.4)
175
- jekyll-seo-tag (2.5.0)
176
- jekyll (~> 3.3)
177
- jekyll-sitemap (1.2.0)
178
- jekyll (~> 3.3)
179
- jekyll-swiss (0.4.0)
175
+ jekyll-seo-tag (2.6.1)
176
+ jekyll (>= 3.3, < 5.0)
177
+ jekyll-sitemap (1.4.0)
178
+ jekyll (>= 3.7, < 5.0)
179
+ jekyll-swiss (1.0.0)
180
180
  jekyll-theme-architect (0.1.1)
181
181
  jekyll (~> 3.5)
182
182
  jekyll-seo-tag (~> 2.0)
@@ -204,8 +204,8 @@ GEM
204
204
  jekyll-theme-modernist (0.1.1)
205
205
  jekyll (~> 3.5)
206
206
  jekyll-seo-tag (~> 2.0)
207
- jekyll-theme-primer (0.5.3)
208
- jekyll (~> 3.5)
207
+ jekyll-theme-primer (0.5.4)
208
+ jekyll (> 3.5, < 5.0)
209
209
  jekyll-github-metadata (~> 2.9)
210
210
  jekyll-seo-tag (~> 2.0)
211
211
  jekyll-theme-slate (0.1.1)
@@ -217,96 +217,93 @@ GEM
217
217
  jekyll-theme-time-machine (0.1.1)
218
218
  jekyll (~> 3.5)
219
219
  jekyll-seo-tag (~> 2.0)
220
- jekyll-titles-from-headings (0.5.1)
221
- jekyll (~> 3.3)
222
- jekyll-watch (2.0.0)
220
+ jekyll-titles-from-headings (0.5.3)
221
+ jekyll (>= 3.3, < 5.0)
222
+ jekyll-watch (2.2.1)
223
223
  listen (~> 3.0)
224
- jemoji (0.10.0)
224
+ jemoji (0.11.1)
225
225
  gemoji (~> 3.0)
226
226
  html-pipeline (~> 2.2)
227
- jekyll (~> 3.0)
228
- kramdown (1.16.2)
227
+ jekyll (>= 3.0, < 5.0)
228
+ kramdown (1.17.0)
229
229
  libnotify (0.9.4)
230
230
  ffi (>= 1.0.11)
231
231
  libxml-ruby (3.1.0)
232
- liquid (4.0.0)
233
- listen (3.1.5)
234
- rb-fsevent (~> 0.9, >= 0.9.4)
235
- rb-inotify (~> 0.9, >= 0.9.7)
236
- ruby_dep (~> 1.2)
232
+ liquid (4.0.3)
233
+ listen (3.2.1)
234
+ rb-fsevent (~> 0.10, >= 0.10.3)
235
+ rb-inotify (~> 0.9, >= 0.9.10)
237
236
  lumberjack (1.0.13)
238
237
  mercenary (0.3.6)
239
- method_source (0.9.0)
240
- mini_portile2 (2.3.0)
241
- minima (2.5.0)
242
- jekyll (~> 3.5)
238
+ method_source (0.9.2)
239
+ mini_portile2 (2.4.0)
240
+ minima (2.5.1)
241
+ jekyll (>= 3.5, < 5.0)
243
242
  jekyll-feed (~> 0.9)
244
243
  jekyll-seo-tag (~> 2.1)
245
- minitest (5.11.3)
246
- multipart-post (2.0.0)
244
+ minitest (5.13.0)
245
+ multipart-post (2.1.1)
247
246
  nenv (0.3.0)
248
- nokogiri (1.8.4)
249
- mini_portile2 (~> 2.3.0)
250
- nokogiri (1.8.4-x86-mingw32)
251
- mini_portile2 (~> 2.3.0)
252
- notiffany (0.1.1)
247
+ nokogiri (1.10.7)
248
+ mini_portile2 (~> 2.4.0)
249
+ nokogiri (1.10.7-x86-mingw32)
250
+ mini_portile2 (~> 2.4.0)
251
+ notiffany (0.1.3)
253
252
  nenv (~> 0.1)
254
253
  shellany (~> 0.0)
255
254
  null-logger (0.1.5)
256
- octokit (4.9.0)
255
+ octokit (4.14.0)
257
256
  sawyer (~> 0.8.0, >= 0.5.3)
258
- parallel (1.12.1)
259
- parser (2.5.1.2)
257
+ parallel (1.19.1)
258
+ parser (2.6.5.0)
260
259
  ast (~> 2.4.0)
261
- pathutil (0.16.1)
260
+ pathutil (0.16.2)
262
261
  forwardable-extended (~> 2.6)
263
- powerpack (0.1.2)
264
- pry (0.11.3)
262
+ pry (0.12.2)
265
263
  coderay (~> 1.1.0)
266
264
  method_source (~> 0.9.0)
267
- pry-byebug (3.6.0)
268
- byebug (~> 10.0)
265
+ pry-byebug (3.7.0)
266
+ byebug (~> 11.0)
269
267
  pry (~> 0.10)
270
- public_suffix (2.0.5)
268
+ public_suffix (3.1.1)
271
269
  rainbow (3.0.0)
272
- rake (12.3.1)
270
+ rake (13.0.1)
273
271
  rb-fsevent (0.10.3)
274
- rb-inotify (0.9.10)
275
- ffi (>= 0.5.0, < 2)
276
- rouge (2.2.1)
277
- rubocop (0.58.1)
272
+ rb-inotify (0.10.1)
273
+ ffi (~> 1.0)
274
+ rouge (3.13.0)
275
+ rubocop (0.78.0)
278
276
  jaro_winkler (~> 1.5.1)
279
277
  parallel (~> 1.10)
280
- parser (>= 2.5, != 2.5.1.1)
281
- powerpack (~> 0.1)
278
+ parser (>= 2.6)
282
279
  rainbow (>= 2.2.2, < 4.0)
283
280
  ruby-progressbar (~> 1.7)
284
- unicode-display_width (~> 1.0, >= 1.0.1)
281
+ unicode-display_width (>= 1.4.0, < 1.7)
285
282
  ruby-enum (0.7.2)
286
283
  i18n
287
284
  ruby-mp3info (0.8.10)
288
- ruby-progressbar (1.9.0)
289
- ruby_dep (1.5.0)
290
- rubyzip (1.2.1)
291
- safe_yaml (1.0.4)
292
- sass (3.5.6)
285
+ ruby-progressbar (1.10.1)
286
+ rubyzip (2.0.0)
287
+ safe_yaml (1.0.5)
288
+ sass (3.7.4)
293
289
  sass-listen (~> 4.0.0)
294
290
  sass-listen (4.0.0)
295
291
  rb-fsevent (~> 0.9, >= 0.9.4)
296
292
  rb-inotify (~> 0.9, >= 0.9.7)
297
- sawyer (0.8.1)
298
- addressable (>= 2.3.5, < 2.6)
299
- faraday (~> 0.8, < 1.0)
293
+ sawyer (0.8.2)
294
+ addressable (>= 2.3.5)
295
+ faraday (> 0.8, < 2.0)
300
296
  shellany (0.0.1)
301
297
  terminal-table (1.8.0)
302
298
  unicode-display_width (~> 1.1, >= 1.1.1)
303
- thor (0.20.0)
299
+ thor (1.0.1)
304
300
  thread_safe (0.3.6)
305
- typhoeus (1.3.0)
301
+ typhoeus (1.3.1)
306
302
  ethon (>= 0.9.0)
307
- tzinfo (1.2.5)
303
+ tzinfo (1.2.6)
308
304
  thread_safe (~> 0.1)
309
- unicode-display_width (1.4.0)
305
+ unicode-display_width (1.6.0)
306
+ zeitwerk (2.2.2)
310
307
 
311
308
  PLATFORMS
312
309
  ruby
@@ -329,4 +326,4 @@ DEPENDENCIES
329
326
  rubocop
330
327
 
331
328
  BUNDLED WITH
332
- 1.16.2
329
+ 2.1.2
@@ -24,6 +24,16 @@ To get started, use RubyGems to install Dropcaster:
24
24
 
25
25
  Once installed, you can use the `dropcaster` command to generate a new podcast feed document.
26
26
 
27
+ ## Troubleshooting
28
+
29
+ `libxml-ruby` is a frequent offender with installation problems. As usual, [Stack Overflow](https://stackoverflow.com/questions/38129330/libxml-ruby-failed-to-build-gem-native-extension#comment98572516_55162900) has the answer (at least for macOS with Homebrew):
30
+
31
+ ```
32
+ $ gem install --no-document libxml-ruby -- --with-xml2-config="$(brew --prefix libxml2)/bin/xml2-config"
33
+ ```
34
+
35
+ For Ruby 2.5, add `-v '3.1.0'`.
36
+
27
37
  # Basic Usage
28
38
 
29
39
  Once Dropcaster is installed, the only two other things you will need are a channel definition and one or more mp3 files to publish.
@@ -146,6 +156,12 @@ The generated XML file contains all elements required for iTunes. However, Dropc
146
156
 
147
157
  The whole concept of Dropcaster works perfectly fine without Dropbox. Just run the Dropcaster script in a directory of mp3 files and upload the files as well as the generated index.rss to a web server. Leave the relative position of the index and mp3 files as is, otherwise the path to the mp3 files in index.rss will become invalid.
148
158
 
159
+ ## Using Dropcaster With S3 or Digital Ocean Spaces
160
+
161
+ If you set up an S3 bucket or Digital Ocean Space (or any other s3 compatible static asset host), you can easily sync your local podcast directory using a command line tool like [s3cmd](https://github.com/s3tools/s3cmd).
162
+
163
+ After installing s3cmd, make sure you have the right credentials to write to your bucket/space. Add your mp3 files to your folder, run `dropcaster > index.rss` and then `s3cmd sync ./ s3://$your-bucket-name --acl public-read`. S3cmd will now upload any new or changed files to your bucket.
164
+
149
165
  ## Episode Identifier (uuid)
150
166
 
151
167
  Dropcaster uses a rather simple approach to uniquely identify the episodes. It simply generates a SHA1 hash of the mp3 file. If it changes, for whatever reason (even if only a tag was changed), the episode will get a new UUID, and any podcatcher will fetch the episode again (which is what you want, in most cases).
data/Rakefile CHANGED
@@ -26,7 +26,7 @@ namespace :web do
26
26
  end
27
27
  CLOBBER << 'website/vision.markdown'
28
28
 
29
- file 'website/contributors.markdown' do |f|
29
+ file 'website/contributors.markdown' do
30
30
  require 'dropcaster/contributors'
31
31
  File.write('website/contributors.markdown', Dropcaster.contributors)
32
32
  end
@@ -41,22 +41,24 @@ end
41
41
  OptionParser.new do |opts|
42
42
  opts.banner = help
43
43
 
44
- opts.on('--verbose', 'Verbose mode - displays additional diagnostic information') do |file|
44
+ opts.on('--verbose', 'Verbose mode - displays additional diagnostic information') do
45
45
  logger.level = Logger::INFO
46
46
  end
47
47
 
48
- opts.on('--trace', 'Verbose mode - displays additional diagnostic information') do |file|
48
+ opts.on('--trace', 'Verbose mode - displays additional diagnostic information') do
49
49
  logger.level = Logger::DEBUG
50
50
  end
51
51
 
52
52
  opts.on('--channel FILE', 'Read the channel definition from FILE instead of channel.yml in the current directory.') do |file|
53
53
  logger.info "Reading channel definition from #{file}"
54
- options = YAML.load_file(file).merge(options)
55
- options[:auto_detect_channel_file] = false
56
- rescue StandardError
57
- logger.error "Could not load channel definition. #{$ERROR_INFO.message}"
58
- logger.info $ERROR_INFO.backtrace
59
- exit(1)
54
+ begin
55
+ options = YAML.load_file(file).merge(options)
56
+ options[:auto_detect_channel_file] = false
57
+ rescue StandardError
58
+ logger.error "Could not load channel definition. #{$ERROR_INFO.message}"
59
+ logger.info $ERROR_INFO.backtrace
60
+ exit(1)
61
+ end
60
62
  end
61
63
 
62
64
  opts.on('--title STRING', "Use STRING as the channel's title. Overrides settings read from channel definition file.") do |title|
data/bin/lstags CHANGED
@@ -2,7 +2,7 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  unless ARGV.size == 1
5
- STDERR.puts "#{File.basename(__FILE__)}: Missing required parameter for the mp3 file to process"
5
+ warn "#{File.basename(__FILE__)}: Missing required parameter for the mp3 file to process"
6
6
  exit(1)
7
7
  end
8
8
 
@@ -16,12 +16,12 @@ begin
16
16
  # rubocop:disable Lint/EmptyWhen
17
17
  Mp3Info.open(file_name) do |mp3info|
18
18
  puts 'ID3v1 tags:'
19
- mp3info.tag.each_key { |key|
19
+ mp3info.tag.each_key do |key|
20
20
  puts " #{key} => #{mp3info.tag.send(key)}"
21
- }
21
+ end
22
22
  puts
23
23
  puts 'ID3v2 tags:'
24
- mp3info.tag2.each_key { |key|
24
+ mp3info.tag2.each_key do |key|
25
25
  case key
26
26
  when 'PIC'
27
27
  when 'APIC'
@@ -29,20 +29,22 @@ begin
29
29
  when 'ULT'
30
30
  print ' ULT => '
31
31
  block_counter = 0
32
- mp3info.tag2.ULT.bytes { |b|
33
- print sprintf('0x%02x ', b.to_i)
32
+ mp3info.tag2.ULT.bytes do |b|
33
+ # rubocop:disable Style/FormatStringToken
34
+ print format('0x%02x ', b.to_i)
35
+ # rubocop:enable Style/FormatStringToken
34
36
  print b > 31 ? " '#{b.chr}' " : ' ' * 5
35
37
  if (block_counter += 1) > 7 # display in blocks of 8 bytes
36
38
  puts
37
39
  print ' ' * 9
38
40
  block_counter = 0
39
41
  end
40
- }
42
+ end
41
43
  puts
42
44
  else
43
45
  puts " #{key} => #{mp3info.tag2.send(key)}"
44
46
  end
45
- }
47
+ end
46
48
  end
47
49
  # rubocop:enable Metrics/BlockLength
48
50
  # rubocop:enable Lint/EmptyWhen
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
22
22
 
23
23
  spec.add_dependency 'activesupport'
24
24
  spec.add_dependency 'bundler'
25
- spec.add_dependency 'nokogiri', '~> 1.8.2'
25
+ spec.add_dependency 'nokogiri'
26
26
  spec.add_dependency 'null-logger'
27
27
  spec.add_dependency 'ruby-mp3info'
28
28
 
@@ -63,7 +63,7 @@ module Dropcaster
63
63
  channel_template = @attributes[:channel_template] || File.join(File.dirname(__FILE__), '..', '..', 'templates', 'channel.rss.erb')
64
64
 
65
65
  begin
66
- @erb_template = ERB.new(IO.read(channel_template), 0, '%<>')
66
+ @erb_template = ERB.new(IO.read(channel_template))
67
67
  rescue Errno::ENOENT => e
68
68
  raise TemplateNotFoundError.new(e.message)
69
69
  end
@@ -89,7 +89,7 @@ module Dropcaster
89
89
  logger.debug("Adding new item from file #{src}")
90
90
 
91
91
  # set author and image_url from channel if empty
92
- if item.artist.blank?
92
+ if item.tag.artist.blank?
93
93
  logger.info("#{src} has no artist, using the channel's author")
94
94
  item.tag.artist = @attributes[:author]
95
95
  end
@@ -145,7 +145,7 @@ module Dropcaster
145
145
  # rubocop:disable Style/MethodMissing
146
146
  def method_missing(meth, *args)
147
147
  m = meth.id2name
148
- if /=$/.match?(m)
148
+ if m =~ /=$/
149
149
  @attributes[m.chop.to_sym] = (args.length < 2 ? args[0] : args)
150
150
  else
151
151
  @attributes[m.to_sym]
@@ -154,7 +154,7 @@ module Dropcaster
154
154
  # rubocop:enable Style/MethodMissing
155
155
 
156
156
  def respond_to_missing?(meth, *)
157
- /=$/.match?(meth.id2name) || super
157
+ (meth.id2name =~ /=$/) || super
158
158
  end
159
159
 
160
160
  private
@@ -10,7 +10,7 @@ module Dropcaster
10
10
  include Logging
11
11
 
12
12
  attr_reader :file_path, :tag, :tag2, :duration, :file_size, :uuid, :pub_date, :lyrics
13
- attr_accessor :artist, :image_url, :url, :keywords
13
+ attr_accessor :image_url, :url, :keywords
14
14
 
15
15
  def initialize(file_path, options=nil)
16
16
  Mp3Info.open(file_path) { |mp3info|
@@ -27,7 +27,7 @@ module Dropcaster
27
27
  @file_size = File.new(file_path).stat.size
28
28
  @uuid = Digest::SHA1.hexdigest(File.read(file_path))
29
29
 
30
- if tag2.TDR.blank?
30
+ if tag2.TRD.blank?
31
31
  logger.info("#{file_path} has no pub date set, using the file's modification time")
32
32
  @pub_date = Time.parse(File.new(file_path).mtime.to_s)
33
33
  else
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dropcaster
4
- VERSION = '1.0.0'
4
+ VERSION = '1.1.0'
5
5
  end
@@ -26,12 +26,9 @@
26
26
  <h1>Episodes</h1>
27
27
  <% items.each{|item| %>
28
28
  <div class="item" id="<%= h(item.uuid) %>">
29
- <h1><%= h(item.tag.title || item.tag2.TIT2 || item.file_path.to_s) %></h1>
30
- <% unless item.tag2.SUBTITLE.blank? %>
31
- <h2><%= h(item.tag2.SUBTITLE) %></h2>
32
- <% end %>
33
- <% unless item.tag2.TT3.blank? %>
34
- <p><%= h(item.tag2.TT3) %></p>
29
+ <h1><%= h(item.tag.title || item.file_path.to_s) %></h1>
30
+ <% unless item.tag2.TT3.blank? && item.tag2.TIT3.blank? %>
31
+ <p><%= h(item.tag2.TT3 || item.tag2.TIT3) %></p>
35
32
  <% end %>
36
33
  <img src="<%= item.image_url %>"/>
37
34
  <p>Download: <a href="<%= item.url %>">MP3</a> (<%= humanize_time(item.duration.to_i) %>, <%= humanize_size(item.file_size) %>)</p>
@@ -45,11 +45,11 @@
45
45
  <% end %>
46
46
  <% items.each{|item| %>
47
47
  <item>
48
- <title><%= h(item.tag.title || item.tag2.TIT2 || item.file_path.to_s) %></title>
49
- <itunes:author><%= h(item.tag2.TP1 || item.tag2.TPE1) %></itunes:author>
50
- <% unless item.tag2.TT3.blank? %>
51
- <itunes:subtitle><%= h(truncate(item.tag2.TT3, 50)) %></itunes:subtitle>
52
- <itunes:summary><%= h(item.tag2.TT3) %></itunes:summary>
48
+ <title><%= h(item.tag.title || item.file_path.to_s) %></title>
49
+ <itunes:author><%= h(item.tag.artist) %></itunes:author>
50
+ <% unless item.tag2.TT3.blank? && item.tag2.TIT3.blank? %>
51
+ <itunes:subtitle><%= h(truncate(item.tag2.TT3 || item.tag2.TIT3, 50)) %></itunes:subtitle>
52
+ <itunes:summary><%= h(item.tag2.TT3 || item.tag2.TIT3) %></itunes:summary>
53
53
  <% end %>
54
54
  <itunes:image href="<%= item.image_url %>"/>
55
55
  <enclosure url="<%= item.url %>" length="<%= item.file_size %>" type="audio/mp3"/>
@@ -24,7 +24,7 @@ TYPES = [
24
24
  'provider-name', # The provider name of the target machine. targeted
25
25
  'state', # The state ID of the target machine. targeted
26
26
  'state-human-long', # Human-readable description of the state of the machine. This is the long version, and may be a paragraph or longer. targeted
27
- 'state-human-short', # Human-readable description of the state of the machine. This is the short version, limited to at most a sentence. targeted
27
+ 'state-human-short' # Human-readable description of the state of the machine. This is the short version, limited to at most a sentence. targeted
28
28
  ].freeze
29
29
 
30
30
  module Vagrant
@@ -19,10 +19,9 @@
19
19
  "categories": ["<% categories.join('\",\"') %>"],
20
20
  "explicit" : "<%= explicit %>",
21
21
  "items" : [<% items.collect{|item| %>{
22
- "title" : "<%= item.tag.title || item.tag2.TIT2 %>",
23
- "author" : "<%= item.tag2.TP1 || item.tag2.TPE1 %>",
24
- "subtitle" : "<%= item.tag2.SUBTITLE %>",
25
- "summary" : "<%= item.tag2.TT3 %>",
22
+ "title" : "<%= item.tag.title %>",
23
+ "author" : "<%= item.tag.artist %>",
24
+ "summary" : "<%= item.tag2.TT3 || item.tag2.TIT3 %>",
26
25
  "image" : "<%= item.image_url %>",
27
26
  "enclosure" : {
28
27
  "url" : "<%= item.url %>",
@@ -40,14 +40,11 @@ class TestItunesItem < MiniTest::Test
40
40
  assert_equal('iTunes Grouping', @item.tag2.TT1)
41
41
  assert_equal('iTunes Description (Video Pane)', @item.tag2.TT3)
42
42
  assert_equal('iTunes Composer', @item.tag2.TCM)
43
+ assert_equal('iTunes Comments (Info Pane)', @item.tag2.COM[1])
43
44
  end
44
45
 
45
46
  def test_lyrics
46
47
  assert_equal(1, @item.lyrics.size)
47
48
  assert_equal("iTunes Lyrics Line 1\niTunes Lyrics Line 2", @item.lyrics['eng'])
48
49
  end
49
-
50
- def test_tag2_comment
51
- assert_equal('iTunes Comments (Info Pane)', @item.tag2.COM[1])
52
- end
53
50
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dropcaster
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicholas E. Rabenau
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-15 00:00:00.000000000 Z
11
+ date: 2019-12-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -42,16 +42,16 @@ dependencies:
42
42
  name: nokogiri
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 1.8.2
47
+ version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: 1.8.2
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: null-logger
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -361,8 +361,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
361
361
  - !ruby/object:Gem::Version
362
362
  version: '0'
363
363
  requirements: []
364
- rubyforge_project:
365
- rubygems_version: 2.7.6
364
+ rubygems_version: 3.1.2
366
365
  signing_key:
367
366
  specification_version: 4
368
367
  summary: Simple Podcast Publishing with Dropbox