trackchange 0.3.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.
- data/README.md +38 -0
- data/lib/trackchange/exec.rb +10 -1
- data/lib/trackchange/probe.rb +47 -5
- data/lib/trackchange/version.rb +1 -1
- metadata +4 -4
data/README.md
CHANGED
@@ -46,6 +46,44 @@ Or install it yourself as:
|
|
46
46
|
trackchange uninstall
|
47
47
|
|
48
48
|
|
49
|
+
## Configuration
|
50
|
+
|
51
|
+
Trackchange creates its configuration file in `~/.trackchange/config.yml`.
|
52
|
+
|
53
|
+
### fetch
|
54
|
+
|
55
|
+
This is the command to fetch the tracked sites. `%url%` will be
|
56
|
+
substituted by the requested site url.
|
57
|
+
|
58
|
+
The default command is
|
59
|
+
|
60
|
+
lynx -dump '%url%' | uniq
|
61
|
+
|
62
|
+
Here are some alternatives you might want to experiment
|
63
|
+
with. (Unfortunately pandoc only works with http, not with https and
|
64
|
+
does not follow redirects, hence the version with curl.)
|
65
|
+
|
66
|
+
lynx -dump '%url%' | uniq | sed -e "/References/,/\s+[0-9]+\. h/d"
|
67
|
+
|
68
|
+
pandoc '%url%' -t markdown
|
69
|
+
|
70
|
+
pandoc '%url%' -t plain
|
71
|
+
|
72
|
+
curl -sL '%url%' | pandoc -t plain
|
73
|
+
|
74
|
+
### rss_path
|
75
|
+
|
76
|
+
...
|
77
|
+
|
78
|
+
### feed_size
|
79
|
+
|
80
|
+
...
|
81
|
+
|
82
|
+
### log_level
|
83
|
+
|
84
|
+
...
|
85
|
+
|
86
|
+
|
49
87
|
## Contributing
|
50
88
|
|
51
89
|
1. Fork it
|
data/lib/trackchange/exec.rb
CHANGED
@@ -87,7 +87,7 @@ module Trackchange
|
|
87
87
|
|
88
88
|
# upgrade from <= 0.2.0
|
89
89
|
if v(data[:version]) <= v('0.2.0')
|
90
|
-
data[:version] =
|
90
|
+
data[:version] = '0.2.0'
|
91
91
|
data[:sites] = data[:sites].map do |site|
|
92
92
|
{ url: site }
|
93
93
|
end
|
@@ -95,6 +95,15 @@ module Trackchange
|
|
95
95
|
store_config!
|
96
96
|
end
|
97
97
|
|
98
|
+
# upgrade from 0.3.0 to 0.4.0
|
99
|
+
if v(data[:version]) < v('0.4.0')
|
100
|
+
data[:version ] = '0.4.0'
|
101
|
+
data[:fetch] = "lynx -dump '%url%' | uniq"
|
102
|
+
data[:feed_size] = 20
|
103
|
+
@config = OpenStruct.new(data)
|
104
|
+
store_config!
|
105
|
+
end
|
106
|
+
|
98
107
|
@config = OpenStruct.new(data)
|
99
108
|
end
|
100
109
|
|
data/lib/trackchange/probe.rb
CHANGED
@@ -20,9 +20,9 @@ module Trackchange
|
|
20
20
|
url = site[:url]
|
21
21
|
fname = url.sub(%r{https?://}, '').tr_s('/?&', '...')
|
22
22
|
site_path = File.expand_path(fname, '~/.trackchange')
|
23
|
-
|
24
|
-
logger.debug "% #{
|
25
|
-
system
|
23
|
+
cmd = config.fetch.gsub('%url%', url) + "> #{site_path}.new"
|
24
|
+
logger.debug "% #{cmd}"
|
25
|
+
system cmd
|
26
26
|
|
27
27
|
unless File.exist?(site_path) # new site
|
28
28
|
logger.warn "new site #{url}"
|
@@ -75,8 +75,47 @@ module Trackchange
|
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
78
|
-
if
|
79
|
-
logger.info "update feed #{
|
78
|
+
if file = File.expand_path(config.rss_path, ENV['HOME']) # write rss
|
79
|
+
logger.info "update rss feed '#{file}'"
|
80
|
+
|
81
|
+
out_rss = RSS::Maker.make('1.0') do |maker|
|
82
|
+
maker.channel.id = %x[ whoami ].chomp
|
83
|
+
maker.channel.author = %x[ whoami ].chomp
|
84
|
+
maker.channel.updated = Time.now.to_s
|
85
|
+
maker.channel.title = "Trackchange"
|
86
|
+
maker.channel.link = "http://github.com/brnach14/trackchange"
|
87
|
+
maker.channel.about = "Feed of detected changes"
|
88
|
+
maker.channel.description = "Feed of detected changes"
|
89
|
+
|
90
|
+
# new item
|
91
|
+
maker.items.new_item do |item|
|
92
|
+
item.link = "#{url}##{Time.now.to_i}"
|
93
|
+
item.title = "Change detected on #{url}"
|
94
|
+
item.date = Time.now.to_s
|
95
|
+
item.description = "<pre>#{result}</pre>"
|
96
|
+
end
|
97
|
+
|
98
|
+
# read rss, keepn old items
|
99
|
+
if File.exist?(file)
|
100
|
+
in_rss = RSS::Parser.parse(File.read(file))
|
101
|
+
in_rss.items.each_with_index do |in_item, index|
|
102
|
+
break if index > config.feed_size - 1
|
103
|
+
maker.items.new_item do |out_item|
|
104
|
+
out_item.link = in_item.link
|
105
|
+
out_item.title = in_item.title
|
106
|
+
out_item.date = in_item.date
|
107
|
+
out_item.description = in_item.description
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
# write rss
|
114
|
+
if File.exist?(file) and !File.writable?(file)
|
115
|
+
raise "'#{file}' is not writable, skipping rss persistency"
|
116
|
+
else
|
117
|
+
File.open(file, 'w') { |f| f.puts(out_rss) }
|
118
|
+
end
|
80
119
|
end
|
81
120
|
end
|
82
121
|
|
@@ -84,6 +123,9 @@ module Trackchange
|
|
84
123
|
return @logger if @logger
|
85
124
|
@logger = Logger.new(STDOUT).tap do |logger|
|
86
125
|
logger.level = (config.log_level || 2).to_i
|
126
|
+
logger.formatter = proc do |severity, datetime, progname, msg|
|
127
|
+
"#{msg}\n"
|
128
|
+
end
|
87
129
|
end
|
88
130
|
end
|
89
131
|
|
data/lib/trackchange/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trackchange
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2015-01-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: cronedit
|
@@ -94,7 +94,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
94
94
|
version: '0'
|
95
95
|
segments:
|
96
96
|
- 0
|
97
|
-
hash:
|
97
|
+
hash: 4114028559978867129
|
98
98
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
99
99
|
none: false
|
100
100
|
requirements:
|
@@ -103,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
103
103
|
version: '0'
|
104
104
|
segments:
|
105
105
|
- 0
|
106
|
-
hash:
|
106
|
+
hash: 4114028559978867129
|
107
107
|
requirements: []
|
108
108
|
rubyforge_project:
|
109
109
|
rubygems_version: 1.8.23
|