miniflux_sanity 0.2.0 → 0.2.1

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: 149a24463fe7a16de39019765556ba6941be7b8f28cdaa15e2b61d58fad615c1
4
- data.tar.gz: 9ae5702b2ba514182cf251bf0d7d85009f67dcaa9e6c28d4663e1ffd71576f6d
3
+ metadata.gz: 24b4e6944c19140cb9d85c4a51ac6b60882c7ed5b4768bba220121bd986ac1cb
4
+ data.tar.gz: 3640ca287dd6a50314b766a77c0738ec79245ee5753f2e906501b33623b25168
5
5
  SHA512:
6
- metadata.gz: f370a53532981d532297ec0e0117dbcbf024cffa89dd7889113a4819554759d95f12c1288b07a1b7244953e720d31fe1b0296c7db351fa3b21649eae111d7cbf
7
- data.tar.gz: c17d8a779f36a12a3677cdedf7de6df09b0473a4eebbb7cbf2f1c18d9a4a690d0043db7caa1bb2403479488037c8a1b1bc5c72e2ffb9219c03a0712b5303a675
6
+ metadata.gz: '028d766d3c96ba1f98d742168e9d7fe73cc2c0ac27fb933d0e9a59a74ab9d51477085a91c5e42614f4c3edfc63add41a8482df6887d5a7ca3f4506e5a0b47ef2'
7
+ data.tar.gz: 216ca906079de0dc2254f01a7152d5b4362e3d50a758c135ed5b437e40b07723f739d873a387faf97e2aa7420deb0ca9f75462abfd2787d1ec53b2b1ef0e514f
data/README.md CHANGED
@@ -1,20 +1,18 @@
1
1
  # miniflux-sanity
2
2
 
3
- A Ruby command-line utility to mark older entries as read on your Miniflux app. Defaults to items older than 30 days. Switch to ~1 day to wake up to a fresh feed every day.
3
+ ![Download counter for the RubyGem](https://img.shields.io/gem/dtv/miniflux_sanity)
4
4
 
5
- ![A screenshot from my Terminal showcasing the utility in action](./assets/miniflux-sanity_cli.png)
5
+ 👩‍💻 A Ruby command-line utility to mark older entries as read on your Miniflux app. Defaults to items older than a conservative 30 days.
6
6
 
7
- __Before:__
7
+ 🚀 Switch to 1 day and run daily to wake up to a fresh feed.
8
8
 
9
- ![A screenshot from my Miniflux app showing 5031 unread items](./assets/miniflux-sanity_before.png)
9
+ Please star the project if you like it or use it -- and want to send some internet support. 🥰
10
10
 
11
- __After:__
12
-
13
- ![A screenshot from my Miniflux app showing 516 unread items](./assets/miniflux-sanity_after.png)
11
+ ![A screenshot from my Terminal showcasing the utility in action](./assets/miniflux-sanity_cli_v0.2.0.png)
14
12
 
15
13
  ## Motivation
16
14
 
17
- If I haven't read something in the preceding month, it's unlikely I ever will. Miniflux doesn't offer an _archive_ option so we mark entries as read instead. All it really does is offer me a saner overview of "unread" items at the top.
15
+ If I haven't read something in the preceding week, it's unlikely I ever will. Miniflux doesn't offer an _archive_ option so we mark entries as read instead. All it really does is offer me a saner overview of "unread" items at the top.
18
16
 
19
17
  As is usually the case for me, I wanted to build something meaningful as I pick up Ruby again. This was a small use-case that was a good first challenge to tackle.
20
18
 
@@ -24,15 +22,24 @@ The code is admittedly not perfect. I welcome any constructive criticism or feed
24
22
 
25
23
  - Uses token authentication
26
24
  - Supports cloud and self-hosted Miniflux apps
27
- - Configure number of days before which to mark items as read
25
+ - Configurable number of days before which to mark items as read
28
26
  - Resumes marking as read if interrupted
29
27
 
28
+ ~Note: A common concern might be if this muddies your actual read history. Thanks to the way Miniflux works, this surprisingly does not meddle with _your_ history. It only marks items as read. That is it!~ This was untrue, my apologies!
29
+
30
+ ## Usage
31
+
32
+ You must have Ruby available on your system/shell.
33
+
34
+ Install by running `gem install miniflux_sanity`.
35
+
36
+ All command line options can be viewed by running `miniflux_sanity --help`.
37
+
30
38
  ## To-do
31
39
 
32
- - [ ] Publish as a RubyGem for easier usage (see the [feature/rubygem](https://github.com/hirusi/miniflux-sanity/tree/feature/rubygem) branch)
33
40
  - [ ] Unit testing
34
41
  - [ ] Resume fetching if command crashes in between
35
- - [ ] If an item is starred _and_ unread, don't mark it as read.
42
+ - [ ] Optionally, if an item is starred _and_ unread, don't mark it as read.
36
43
  - This could lend itself to a nice workflow where my "to-read" can be starred while scanning through items.
37
44
 
38
45
  ## Goals
@@ -43,22 +50,22 @@ The code is admittedly not perfect. I welcome any constructive criticism or feed
43
50
  - Work with Ruby's `File` API
44
51
  - Interact with an API using an HTTP library
45
52
 
46
- ## Usage
47
-
48
- You must have Ruby available on your system/shell.
49
-
50
- Install by running `gem install miniflux_sanity`. All command line options can be viewed by running `miniflux_sanity --help`.
51
-
52
53
  ## Development
53
54
 
54
55
  The Ruby version is specified in `.ruby-version`. `rbenv` is able to read and set the correct local version in your shell.
55
56
 
56
57
  - `git clone git@github.com:hirusi/miniflux-sanity.git`
57
58
  - `cd miniflux-sanity`
58
- - `cp .env.template .env`
59
- - Update the `.env` file as required.
60
- - You'll need a token from your Miniflux app under `Settings > API Keys -> Create a new API key`
61
59
  - Install the dependencies: `bundle`
62
- - Run the utility: `bundle exec ruby main.rb`
60
+ - After making desired changes, install locally without publishing to RubyGems: `bundle exec rake install`
61
+ - I don't know a better workflow at the moment, sorry. 🤷‍♀️
62
+ - Run the utility: `miniflux_sanity`
63
+ - You'll need a token from your Miniflux app under `Settings > API Keys -> Create a new API key`
63
64
 
64
65
  If you have a Docker setup to contribute using Alpine OS as its base, I'd be very happy to merge your PR.
66
+
67
+ ## Publishing
68
+
69
+ - Test changes locally with an install: `bundle exec rake install`
70
+ - Update version in gemspec, commit
71
+ - Publish when happy: `bundle exec rake release`
@@ -18,7 +18,7 @@ class MinifluxSanity
18
18
  if @@cache_client.last_fetched.nil?
19
19
  false
20
20
  else
21
- Date.parse(@@cache_client.last_fetched) == Date.today
21
+ Date.parse(@@cache_client.last_fetched.to_s) == Date.today
22
22
  end
23
23
  end
24
24
 
@@ -33,6 +33,7 @@ class MinifluxSanity
33
33
  def fetch_entries
34
34
  if self.last_fetched_today?
35
35
  puts "Last run was today, skipping fetch."
36
+ exit
36
37
  else
37
38
  puts "Now collecting all unread entries before the specified date."
38
39
  end
@@ -42,7 +43,7 @@ class MinifluxSanity
42
43
  size = 0
43
44
  limit = 250
44
45
  count = limit
45
- until count < limit or self.last_fetched_today? do
46
+ until count < limit do
46
47
 
47
48
  entries = @@miniflux_client.get_entries before: @@config.cutoff_timestamp, offset: size, limit: limit
48
49
 
@@ -51,14 +52,8 @@ class MinifluxSanity
51
52
  exit true
52
53
  end
53
54
 
54
- entries.filter do |entry|
55
- # Just for some extra resilience, we make sure to check the published_at date before we filter it. This would be helpful where the Miniflux API itself has a bug with its before filter, for example.
56
- unless is_older_than_cutoff? published_at: entry["published_at"]
57
- true
58
- else
59
- false
60
- end
61
- end
55
+ # TODO This *should* be a bang-style method based on how Ruby is written. It should modify the entries list itself. Probably if we modeled an Entry and Entries... we could add this as a method on the Entries Model.
56
+ entries = self.filter_before_cutoff entries: entries
62
57
 
63
58
  count = entries.count
64
59
  size = size + count
@@ -74,6 +69,11 @@ class MinifluxSanity
74
69
  end
75
70
  end
76
71
 
72
+ def filter_before_cutoff(entries:)
73
+ # Just for some extra resilience, we make sure to check the published_at date before we filter it. This would be helpful where the Miniflux API itself has a bug with its before filter, for example.
74
+ entries.filter { |entry| is_older_than_cutoff? published_at: entry["published_at"] }
75
+ end
76
+
77
77
  def mark_entries_as_read
78
78
  start = 0
79
79
  interval = 10
@@ -1,8 +1,8 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'miniflux_sanity'
3
- s.version = '0.2.0'
3
+ s.version = '0.2.1'
4
4
  s.required_ruby_version = Gem::Requirement.new(">= 2.7.1")
5
- s.date = '2020-09-11'
5
+ s.date = '2020-09-23'
6
6
  s.summary = "Mark items older than specified time as read in Miniflux."
7
7
  s.description = "Command line utility to mark items older than specified time as read in Miniflux."
8
8
  s.authors = ["hirusi"]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: miniflux_sanity
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - hirusi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-11 00:00:00.000000000 Z
11
+ date: 2020-09-23 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Command line utility to mark items older than specified time as read
14
14
  in Miniflux.
@@ -29,7 +29,8 @@ files:
29
29
  - Rakefile
30
30
  - assets/miniflux-sanity_after.png
31
31
  - assets/miniflux-sanity_before.png
32
- - assets/miniflux-sanity_cli.png
32
+ - assets/miniflux-sanity_cli_v0.1.0.png
33
+ - assets/miniflux-sanity_cli_v0.2.0.png
33
34
  - bin/miniflux_sanity
34
35
  - lib/config.rb
35
36
  - lib/hash.rb