transmission-rss 1.0.0.alpha1 → 1.0.0.alpha2

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
- SHA1:
3
- metadata.gz: 054764ff1a7340698a20d891b084e2a3763898be
4
- data.tar.gz: cd4df944492cfb88e2602be7b02adac5ff3a93e9
2
+ SHA256:
3
+ metadata.gz: 6549e5b8d06f19b6c8ff392677d66f0a5519ac73d39192522388eb0ed2b1bceb
4
+ data.tar.gz: 0fbd398d1a32c27b573a45228cdfd8b920010a627b3f3e46461a6ecd981750bb
5
5
  SHA512:
6
- metadata.gz: 5ca44ab44a99dee02cb406a5a8e537136a95c64fc1193f74b34aa80a248288ad3cc5823367adaa4a2a6af605d3129a45eac14c97fe7178811c7a9b59af4f671b
7
- data.tar.gz: a5031c612c6d8b5c8677ab338ed27c48c0095bae7829df1b908b591f4d34b5b8e8c20a70aa7c655d82e7985d4f2cc37e32b0f66b80cfe1a3954b131c1d8bff8b
6
+ metadata.gz: e14bfa9e9f86b4e52e1738d55752fa852bb4416eb0827be329db5688d5c13f1ca75a6f11df23388d5ed5242110b5704260fbf7ba460b28c06495062b742f3302
7
+ data.tar.gz: cfe725811a2ecbe457dfbda0451f59e99b6da4c5b48343db4753d7c4897976336b7c0d20eb45a6a6443284b7fea29bcda507990c62b6e40fe16dbce3b3d3b623
data/README.md CHANGED
@@ -52,6 +52,10 @@ can override some options for their transmission-rss instances by providing a
52
52
  config at `~/.config/transmission-rss/config.yml` (or in `$XDG_CONFIG_HOME`
53
53
  instead of `~/.config`).
54
54
 
55
+ **WARNING:** If you want to override a nested option like `log.target` you also
56
+ have to explicitly specify the others like `log.level`. (True for categories
57
+ `server`, `login`, `log`, `privileges`, and `client`.)
58
+
55
59
  ### Minimal example
56
60
 
57
61
  It should at least contain a list of feeds:
@@ -90,12 +94,14 @@ is true:
90
94
  ### All available options
91
95
 
92
96
  The following configuration file example contains every existing option
93
- (although `update_interval`, `add_paused`, `server`, `fork`, and `pid_file` are
94
- default values and could be omitted). The default `log_target` is STDERR.
95
- `privileges` is not defined by default, so the script runs as current
97
+ (although `update_interval`, `add_paused`, `server`, `log`, `fork`, and
98
+ `pid_file` are default values and could be omitted). The default `log.target` is
99
+ STDERR. `privileges` is not defined by default, so the script runs as current
96
100
  user/group. `login` is also not defined by default. It has to be defined, if
97
101
  transmission is configured for HTTP basic authentication.
98
102
 
103
+ See `./transmission-rss.conf.example` for more documentation.
104
+
99
105
  feeds:
100
106
  - url: http://example.com/feed1
101
107
  - url: http://example.com/feed2
@@ -133,7 +139,9 @@ transmission is configured for HTTP basic authentication.
133
139
  username: transmission
134
140
  password: transmission
135
141
 
136
- log_target: /var/log/transmissiond-rss.log
142
+ log:
143
+ target: /var/log/transmissiond-rss.log
144
+ level: debug
137
145
 
138
146
  privileges:
139
147
  user: nobody
@@ -46,12 +46,12 @@ config = TransmissionRSS::Config.instance
46
46
 
47
47
  # Initialize a log instance and configure it.
48
48
  log = Log.instance
49
- log.target = config.log_target
50
49
 
51
50
  # Load config file (default or given by argument).
52
51
  begin
53
52
  config.load(config_file)
54
- log.target = config.log_target
53
+ log.target = config.log.target
54
+ log.level = config.log.level
55
55
  rescue Errno::ENOENT
56
56
  log.error(config_file + ' not found')
57
57
  end
@@ -77,12 +77,12 @@ config = TransmissionRSS::Config.instance
77
77
 
78
78
  # Initialize a log instance and configure it.
79
79
  log = Log.instance
80
- log.target = config.log_target
81
80
 
82
81
  # Load config file (default or given by argument).
83
82
  begin
84
83
  config.load(config_file)
85
- log.target = config.log_target
84
+ log.target = config.log.target
85
+ log.level = config.log.level
86
86
  rescue Errno::ENOENT
87
87
  log.error(config_file + ' not found')
88
88
  end
@@ -100,7 +100,7 @@ if !(custom_config || ENV['HOME'].nil?)
100
100
  end
101
101
 
102
102
  # Print current config.
103
- log.debug('version ' + VERSION)
103
+ log.info('transmission-rss ' + VERSION)
104
104
  log.debug(config)
105
105
 
106
106
  # Fork value from command line.
@@ -156,6 +156,11 @@ end
156
156
  # Callback for changes to the config.
157
157
  config.on_change do
158
158
  aggregator.reinitialize!(config.feeds, seen_file: config.seen_file)
159
+
160
+ if reset_seen_file
161
+ aggregator.seen.clear!
162
+ log.debug('seenfile reset after config change')
163
+ end
159
164
  end
160
165
 
161
166
  # Start the aggregation process.
@@ -8,6 +8,10 @@ require File.join(libdir, 'log')
8
8
  require File.join(libdir, 'callback')
9
9
 
10
10
  module TransmissionRSS
11
+ DEPRECATED = {
12
+ log_target: 'log.target'
13
+ }
14
+
11
15
  # Class handles configuration parameters.
12
16
  class Config < Hash
13
17
  # This is a singleton class.
@@ -24,15 +28,17 @@ module TransmissionRSS
24
28
  end
25
29
 
26
30
  # Merges a Hash or YAML file (containing a Hash) with itself.
27
- def load(config)
31
+ def load(config, watch: true)
28
32
  case config.class.to_s
29
33
  when 'Hash'
30
34
  self.merge!(config)
31
35
  when 'String'
32
- self.merge_yaml!(config)
36
+ self.merge_yaml!(config, watch)
33
37
  else
34
38
  raise ArgumentError.new('Could not load config.')
35
39
  end
40
+
41
+ check_deprecated
36
42
  end
37
43
 
38
44
  def merge_defaults!
@@ -46,7 +52,10 @@ module TransmissionRSS
46
52
  'rpc_path' => '/transmission/rpc'
47
53
  },
48
54
  'login' => nil,
49
- 'log_target' => $stderr,
55
+ 'log' => {
56
+ 'target' => $stderr,
57
+ 'level' => :debug
58
+ },
50
59
  'fork' => false,
51
60
  'pid_file' => false,
52
61
  'privileges' => {},
@@ -70,7 +79,6 @@ module TransmissionRSS
70
79
 
71
80
  def watch_file(path)
72
81
  path = Pathname.new(path).realpath.to_s
73
- @log.debug('watch_file ' + path)
74
82
 
75
83
  @notifier ||= INotify::Notifier.new
76
84
  @notifier.watch(path, :close_write) do |e|
@@ -87,5 +95,15 @@ module TransmissionRSS
87
95
  @notifier.run
88
96
  end
89
97
  end
98
+
99
+ private
100
+
101
+ def check_deprecated
102
+ DEPRECATED.each do |key, value|
103
+ if self[key.to_s]
104
+ @log.warn('[DEPRECATED] option %s, use %s' % [key, value])
105
+ end
106
+ end
107
+ end
90
108
  end
91
109
  end
@@ -6,30 +6,42 @@ module TransmissionRSS
6
6
  class Log
7
7
  include Singleton
8
8
 
9
- def initialize(target = $stderr)
10
- old_logger = @logger
11
- @logger ||= Logger.new(target)
12
-
13
- if old_logger
14
- @logger.level = old_logger.level
15
- @logger.formatter = old_logger.formatter
16
- else
17
- @logger.level = Logger::DEBUG
18
- @logger.formatter = proc do |sev, time, _, msg|
19
- time = time.strftime('%Y-%m-%d %H:%M:%S')
20
- "#{time} (#{sev.downcase}) #{msg}\n"
21
- end
9
+ def initialize(target = $stderr, level = :debug)
10
+ @target = target
11
+ @level = level
12
+
13
+ @logger = Logger.new(target)
14
+ @logger.level = to_level_const(level)
15
+ @logger.formatter = proc do |sev, time, _, msg|
16
+ time = time.strftime('%Y-%m-%d %H:%M:%S')
17
+ "#{time} (#{sev.downcase}) #{msg}\n"
22
18
  end
23
19
  end
24
20
 
25
- # Change log target (IO or path to a file as String).
21
+ # Change log target (IO, path to a file as String, or Symbol for IO
22
+ # constant).
26
23
  def target=(target)
27
- initialize(target)
24
+ if target.is_a? Symbol
25
+ target = Object.const_get(target.to_s.upcase)
26
+ end
27
+
28
+ initialize(target, @level)
29
+ end
30
+
31
+ # Change log level (String or Symbol)
32
+ def level=(level)
33
+ initialize(@target, level)
28
34
  end
29
35
 
30
36
  # If this class misses a method, call it on the encapsulated Logger class.
31
37
  def method_missing(sym, *args)
32
38
  @logger.send(sym, *args)
33
39
  end
40
+
41
+ private
42
+
43
+ def to_level_const(level)
44
+ Object.const_get('Logger::' + level.to_s.upcase)
45
+ end
34
46
  end
35
47
  end
@@ -7,18 +7,12 @@ module TransmissionRSS
7
7
  # Persist seen torrent URLs
8
8
  class SeenFile
9
9
  extend ::Forwardable
10
-
11
- DEFAULT_LEGACY_PATH =
12
- File.join(Etc.getpwuid.dir, '.config/transmission/seen-torrents.conf')
13
-
14
- DEFAULT_PATH =
15
- File.join(Etc.getpwuid.dir, '.config/transmission/seen')
16
10
 
17
11
  def_delegators :@seen, :size, :to_a
18
12
 
19
13
  def initialize(path = nil, legacy_path = nil)
20
- @legacy_path = legacy_path || DEFAULT_LEGACY_PATH
21
- @path = path || DEFAULT_PATH
14
+ @legacy_path = legacy_path || default_legacy_path
15
+ @path = path || default_path
22
16
 
23
17
  initialize_path!
24
18
  migrate!
@@ -49,6 +43,14 @@ module TransmissionRSS
49
43
 
50
44
  private
51
45
 
46
+ def default_legacy_path
47
+ File.join(Etc.getpwuid.dir, '.config/transmission/seen-torrents.conf')
48
+ end
49
+
50
+ def default_path
51
+ File.join(Etc.getpwuid.dir, '.config/transmission/seen')
52
+ end
53
+
52
54
  def digest(s)
53
55
  Digest::SHA256.hexdigest(s)
54
56
  end
@@ -1,3 +1,3 @@
1
1
  module TransmissionRSS
2
- VERSION = '1.0.0.alpha1'
2
+ VERSION = '1.0.0.alpha2'
3
3
  end
@@ -2,6 +2,11 @@
2
2
  # Indent consistently with spaces!
3
3
  # Format documentation on http://www.yaml.org/.
4
4
  #
5
+ # WARNING:
6
+ # If you want to override a nested option like `log.target` you also have to
7
+ # explicitly specify the others like `log.level`. (True for categories
8
+ # `server`, `login`, `log`, `privileges`, and `client`.)
9
+ #
5
10
 
6
11
  # List of feeds to watch.
7
12
 
@@ -48,9 +53,14 @@ feeds:
48
53
  # username: transmission
49
54
  # password: transmission
50
55
 
51
- # Where to log. Default is stderr.
56
+ # Where to log. Default target is stderr, level debug. Target can be IO symbol
57
+ # (e.g. ":stderr", ":stdout") or file path (e.g.
58
+ # "/var/log/transmission-rss.log"). Level can be "error", "warn", "info",
59
+ # "debug".
52
60
 
53
- #log_target: /var/log/transmissiond-rss.log
61
+ #log:
62
+ # target: :stderr
63
+ # level: debug
54
64
 
55
65
  # Drop privileges. If omitted, privileges are not dropped.
56
66
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: transmission-rss
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.alpha1
4
+ version: 1.0.0.alpha2
5
5
  platform: ruby
6
6
  authors:
7
7
  - henning mueller
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-07 00:00:00.000000000 Z
11
+ date: 2018-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: open_uri_redirections
@@ -16,20 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.1'
19
+ version: '0.2'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 0.1.4
22
+ version: 0.2.1
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: '0.1'
29
+ version: '0.2'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 0.1.4
32
+ version: 0.2.1
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: rb-inotify
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -39,7 +39,7 @@ dependencies:
39
39
  version: '0.9'
40
40
  - - ">="
41
41
  - !ruby/object:Gem::Version
42
- version: 0.9.7
42
+ version: 0.9.10
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
@@ -49,7 +49,7 @@ dependencies:
49
49
  version: '0.9'
50
50
  - - ">="
51
51
  - !ruby/object:Gem::Version
52
- version: 0.9.7
52
+ version: 0.9.10
53
53
  description: |-
54
54
  transmission-rss is basically a workaround for
55
55
  transmission's lack of the ability to monitor RSS feeds and
@@ -86,7 +86,7 @@ require_paths:
86
86
  - lib
87
87
  required_ruby_version: !ruby/object:Gem::Requirement
88
88
  requirements:
89
- - - "~>"
89
+ - - ">="
90
90
  - !ruby/object:Gem::Version
91
91
  version: '2.1'
92
92
  required_rubygems_version: !ruby/object:Gem::Requirement
@@ -96,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
96
96
  version: 1.3.1
97
97
  requirements: []
98
98
  rubyforge_project:
99
- rubygems_version: 2.6.13
99
+ rubygems_version: 2.7.6
100
100
  signing_key:
101
101
  specification_version: 4
102
102
  summary: Adds torrents from rss feeds to transmission web frontend.