From 2256adae26d8d45fbc9c83b6d69f2f0d3c1484b2 Mon Sep 17 00:00:00 2001 From: Alexander Olofsson Date: Tue, 10 Dec 2024 09:18:13 +0100 Subject: [PATCH] Improve story handling on CLI --- lib/fic_tracker/cli/story.rb | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/lib/fic_tracker/cli/story.rb b/lib/fic_tracker/cli/story.rb index d2ae1fb..4d85572 100644 --- a/lib/fic_tracker/cli/story.rb +++ b/lib/fic_tracker/cli/story.rb @@ -57,19 +57,48 @@ class FicTracker::Cli::Story < Thor end end + desc 'update STORY...', 'Force-update the listed stories' + def update(*stories) + setup! + + stories.each do |story| + puts "Updating #{story} ..." + bend = FicTracker::Backends.find_backend story + if bend.nil? + puts " Can't update, no available backends." + next + end + + bend = FicTracker::Backends.get(bend) + slug = story + slug = bend.parse_slug(story) if bend.respond_to? :parse_slug + + story = FicTracker::Models::Story.find(backend_name: bend.name, slug:) + unless story + puts " Not tracking, skipping." + next + end + + before = story.etag + story.refresh_metadata! + story.refresh_content! + render_story! story if story.etag != before + end + end + desc 'del STORY...', 'Remove stories from tracker' def del(*stories) setup! stories.each do |story| if story.include? '/' - backend, slug = story.split '/' - backend = nil if backend == '*' + backend_name, slug = story.split '/' + backend_name = nil if backend_name == '*' else slug = story end search = { - backend:, + backend_name:, slug: }.compact found = FicTracker::Models::Story.where(**search)