rubynews 0.0.1 → 0.1.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/Manifest.txt +3 -1
- data/Rakefile +2 -1
- data/bin/rubynews +17 -0
- data/lib/rubynews/tool.rb +182 -0
- data/lib/rubynews/version.rb +2 -2
- data/lib/rubynews.rb +6 -1
- data/test/test_tool.rb +20 -0
- metadata +21 -4
- data/test/test_print.rb +0 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a78a0b89936710b0bcdea4c8d0f1c290fcd87dc4
|
4
|
+
data.tar.gz: 3a923b8e5f0ada89a19313a87b5152aa092aa18a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7da8dda533a55ed7c72bbc28d4a5f59f3a31ca9d6c7e91db2d1b5ad90546404adc4f02c76c36386def13b13c112c546ce933b03528c071b969e4616f85417256
|
7
|
+
data.tar.gz: 1a13eb700358cfed947a1629277882accaee2828d0bf70de1d12904f02ba57e93cb8291216bc00877a366dfee4e63652e3f4cf092be26ecca05d97c2b81061a0
|
data/Manifest.txt
CHANGED
data/Rakefile
CHANGED
data/bin/rubynews
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
###################
|
4
|
+
# == DEV TIPS:
|
5
|
+
#
|
6
|
+
# For local testing run like:
|
7
|
+
#
|
8
|
+
# ruby -Ilib bin/rubynews
|
9
|
+
#
|
10
|
+
# Set the executable bit in Linux. Example:
|
11
|
+
#
|
12
|
+
# % chmod a+x bin/rubynews
|
13
|
+
#
|
14
|
+
|
15
|
+
require 'rubynews'
|
16
|
+
|
17
|
+
RubyNews.main
|
@@ -0,0 +1,182 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
module RubyNews
|
4
|
+
|
5
|
+
class Tool
|
6
|
+
def update
|
7
|
+
News.subscribe(
|
8
|
+
'http://www.ruby-lang.org/en/feeds/news.rss', # Ruby Lang News
|
9
|
+
'http://www.jruby.org/atom.xml', # JRuby Lang News
|
10
|
+
'http://blog.rubygems.org/atom.xml', # RubyGems News
|
11
|
+
'http://bundler.io/blog/feed.xml', # Bundler News
|
12
|
+
'https://www.ruby-toolbox.com/blog.rss', # Ruby Toolbox News
|
13
|
+
'https://idiosyncratic-ruby.com/feed.xml', # Idiosyncratic Ruby
|
14
|
+
'http://weblog.rubyonrails.org/feed/atom.xml', # Ruby on Rails News
|
15
|
+
'http://sinatrarb.com/feed.xml', # Sinatra News
|
16
|
+
'https://dry-rb.org/feed.xml', # DRY News
|
17
|
+
'https://hanamirb.org/atom.xml', # Hanami News
|
18
|
+
'http://jekyllrb.com/feed.xml', # Jekyll News
|
19
|
+
'http://feeds.feedburner.com/jetbrains_rubymine?format=xml', # RubyMine IDE News
|
20
|
+
'https://blog.phusion.nl/rss/', # Phusion News
|
21
|
+
'https://rubyinstaller.org/feed.xml', # Ruby Installer for Windows News
|
22
|
+
|
23
|
+
'http://planetruby.github.io/calendar/feed.xml', # Ruby Conferences & Camps News
|
24
|
+
'https://rubytogether.org/news.xml', # Ruby Together News
|
25
|
+
'https://foundation.travis-ci.org/feed.xml', # Travis Foundation News
|
26
|
+
'https://railsgirlssummerofcode.org/blog.xml', # Rails Girls Summer of Code News
|
27
|
+
|
28
|
+
## Ruby People ++ Personal Blog / Website
|
29
|
+
'http://blog.zenspider.com/atom.xml', # Ryan Davis @ Seattle › Washington › United States
|
30
|
+
'http://tenderlovemaking.com/atom.xml', # Aaron Patterson @ Seattle › Washington › United States
|
31
|
+
'http://blog.headius.com/feed.xml', # Charles Nutter @ Richfield › Minnesota › United States
|
32
|
+
'http://www.schneems.com/feed.xml', # Richard Schneeman @ Austin › Texas › United States
|
33
|
+
'https://developers.redhat.com/blog/author/vnmakarov/feed/', # Vladimir Makarov @ Toronto › Canada
|
34
|
+
|
35
|
+
'https://eregon.me/blog/feed.xml', # Benoit Daloze @ Zürich › Switzerland
|
36
|
+
'https://gettalong.org/posts.atom', # Thomas Leitner @ Vienna • Wien › Austria
|
37
|
+
'https://rubytuesday.katafrakt.me/feed.xml', # Paweł Świątkowski @ Kraków, Poland
|
38
|
+
'https://solnic.codes/feed/', # Piotr Solnica @ Kraków › Poland
|
39
|
+
'https://zverok.github.io/feed.xml', # Victor Shepelev @ Kharkiv › Ukraine
|
40
|
+
|
41
|
+
'http://samsaffron.com/posts.rss', # Sam Saffron @ Sydney › Australia
|
42
|
+
'https://www.rubypigeon.com/feed.xml', # Tom Dalling @ Melbourne› Australia
|
43
|
+
)
|
44
|
+
|
45
|
+
News.update
|
46
|
+
end
|
47
|
+
|
48
|
+
|
49
|
+
def banner
|
50
|
+
puts "Welcome to Ruby News v#{VERSION} (#{News.channels.count} Channels, #{News.items.count} Items)"
|
51
|
+
end
|
52
|
+
|
53
|
+
def list
|
54
|
+
date = Date.today
|
55
|
+
empty_week_counter = 0
|
56
|
+
|
57
|
+
loop do
|
58
|
+
week = date.cweek
|
59
|
+
year = date.year
|
60
|
+
week_start = Date.commercial( year, week, 1 )
|
61
|
+
week_end = Date.commercial( year, week, 7 )
|
62
|
+
|
63
|
+
count = News.week(week, year).count
|
64
|
+
if count == 0
|
65
|
+
empty_week_counter += 1
|
66
|
+
else
|
67
|
+
empty_week_counter = 0
|
68
|
+
end
|
69
|
+
|
70
|
+
print
|
71
|
+
print "Week #{week}/#{year} - "
|
72
|
+
print "#{week_start.format('Mon, 02 Jan')} to "
|
73
|
+
print "#{week_end.format('Mon, 02 Jan')} "
|
74
|
+
print "(#{count} Items)"
|
75
|
+
print "\n"
|
76
|
+
|
77
|
+
|
78
|
+
last_day = nil
|
79
|
+
last_host = nil
|
80
|
+
|
81
|
+
News.week(week, year).each do |item|
|
82
|
+
if last_day != item.date.day
|
83
|
+
puts
|
84
|
+
print " #{item.date.format( 'Mon, 02 Jan' )} "
|
85
|
+
print ">> #{URI(item.feed.feed_url).host} <<"
|
86
|
+
print "\n"
|
87
|
+
elsif last_host != URI(item.feed.feed_url).host
|
88
|
+
print " "
|
89
|
+
print ">> #{URI(item.feed.feed_url).host} <<"
|
90
|
+
print "\n"
|
91
|
+
else
|
92
|
+
end
|
93
|
+
|
94
|
+
puts " #{item.title}"
|
95
|
+
|
96
|
+
last_day = item.date.day
|
97
|
+
last_host = URI(item.feed.feed_url).host
|
98
|
+
end
|
99
|
+
|
100
|
+
if count > 0 || empty_week_counter > 10
|
101
|
+
puts
|
102
|
+
print ">> Press space for more; press any key to quit. <<"
|
103
|
+
ch = STDIN.getch
|
104
|
+
print "\r"
|
105
|
+
|
106
|
+
empty_week_counter = 0
|
107
|
+
|
108
|
+
break if ch != ' '
|
109
|
+
end
|
110
|
+
date = week_start-1
|
111
|
+
end
|
112
|
+
|
113
|
+
print " "
|
114
|
+
print "\n"
|
115
|
+
|
116
|
+
puts ">> TIP: Type > rubyconf < to list all upcoming ruby conferences & camps in #{Date.today.year}. <<"
|
117
|
+
puts
|
118
|
+
puts "Bye"
|
119
|
+
end
|
120
|
+
end # class Tool
|
121
|
+
|
122
|
+
|
123
|
+
def self.main( args=ARGV )
|
124
|
+
|
125
|
+
dbpath = "#{Env.home}/.news/news.db"
|
126
|
+
# puts "dbpath: >#{dbpath}<"
|
127
|
+
|
128
|
+
FileUtils.mkdir_p( File.dirname(dbpath) ) ## make sure path exists!!
|
129
|
+
|
130
|
+
News.config.database = { adapter: 'sqlite3',
|
131
|
+
database: dbpath }
|
132
|
+
|
133
|
+
tool = Tool.new
|
134
|
+
|
135
|
+
if args.empty? && News.items.count == 0 ## on first-time auto-update
|
136
|
+
puts
|
137
|
+
puts
|
138
|
+
tool.banner
|
139
|
+
puts
|
140
|
+
puts ">> TIP: Type > rubynews update < to update all news feeds. <<"
|
141
|
+
puts
|
142
|
+
puts "First time? Do you want to update all news feeds now?"
|
143
|
+
puts
|
144
|
+
print ">> Press y for yes; press any key to continue. <<"
|
145
|
+
ch = STDIN.getch
|
146
|
+
print "\r"
|
147
|
+
print " "
|
148
|
+
print "\n"
|
149
|
+
|
150
|
+
if ch == 'y' or ch == 'Y'
|
151
|
+
tool.update
|
152
|
+
puts
|
153
|
+
puts
|
154
|
+
end
|
155
|
+
|
156
|
+
tool.list
|
157
|
+
else
|
158
|
+
|
159
|
+
if args.include?( 'u' ) ||
|
160
|
+
args.include?( 'up' ) ||
|
161
|
+
args.include?( 'update' )
|
162
|
+
puts
|
163
|
+
puts
|
164
|
+
tool.banner
|
165
|
+
puts
|
166
|
+
tool.update
|
167
|
+
else
|
168
|
+
puts
|
169
|
+
puts ">> TIP: Type > rubynews update < to update all news feeds. <<"
|
170
|
+
puts
|
171
|
+
puts
|
172
|
+
## todo/fix: add Last update on ??? --
|
173
|
+
## add to News module use News.date ?
|
174
|
+
## or use News.last_updated / last_update / last_fetch / fetched
|
175
|
+
|
176
|
+
tool.banner
|
177
|
+
puts
|
178
|
+
tool.list
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end # method self.main
|
182
|
+
end # module RubyNews
|
data/lib/rubynews/version.rb
CHANGED
data/lib/rubynews.rb
CHANGED
data/test/test_tool.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
###
|
2
|
+
# to run use
|
3
|
+
# ruby -I ./lib -I ./test test/test_tool.rb
|
4
|
+
|
5
|
+
|
6
|
+
require 'helper'
|
7
|
+
|
8
|
+
|
9
|
+
class TestTool < MiniTest::Test
|
10
|
+
|
11
|
+
|
12
|
+
def test_main
|
13
|
+
RubyNews.main( [] )
|
14
|
+
RubyNews.main( ['up'])
|
15
|
+
|
16
|
+
assert true
|
17
|
+
## assume everything ok if get here
|
18
|
+
end
|
19
|
+
|
20
|
+
end # class TestTool
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubynews
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gerald Bauer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-02-
|
11
|
+
date: 2020-02-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: whatson
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 1.1.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: pluto-news
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.0.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.0.0
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rdoc
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -54,7 +68,8 @@ dependencies:
|
|
54
68
|
version: '3.16'
|
55
69
|
description: rubynews - what's news in the ruby world? browse week by week
|
56
70
|
email: ruby-talk@ruby-lang.org
|
57
|
-
executables:
|
71
|
+
executables:
|
72
|
+
- rubynews
|
58
73
|
extensions: []
|
59
74
|
extra_rdoc_files:
|
60
75
|
- CHANGELOG.md
|
@@ -65,10 +80,12 @@ files:
|
|
65
80
|
- Manifest.txt
|
66
81
|
- README.md
|
67
82
|
- Rakefile
|
83
|
+
- bin/rubynews
|
68
84
|
- lib/rubynews.rb
|
85
|
+
- lib/rubynews/tool.rb
|
69
86
|
- lib/rubynews/version.rb
|
70
87
|
- test/helper.rb
|
71
|
-
- test/
|
88
|
+
- test/test_tool.rb
|
72
89
|
homepage: https://github.com/planetruby/planet
|
73
90
|
licenses:
|
74
91
|
- Public Domain
|
data/test/test_print.rb
DELETED