Remove unnecessary sorts, keep oldest-first for sync only
Assisted-by: Claude Opus 4.6 via pi
change krwzksskvunzyuvvoorsnvzvmmrwmmmp
commit e0bd3b46e44ece4317de39c56c205f244fd221d9
author Alpha Chen <alpha@kejadlen.dev>
date
parent rxrkroxu
diff --git a/Rakefile b/Rakefile
index 11286b8..5849145 100644
--- a/Rakefile
+++ b/Rakefile
@@ -23,30 +23,22 @@ file HRN_FEED => CACHE_DIR do
   File.write(HRN_FEED, response.body)
 end
 
-def episodes
-  @episodes ||= CookingIssues::Feed.parse(HRN_FEED)
-end
-
-def define_episode_tasks
-  episodes.sort_by(&:number).each do |ep|
-    audio = File.join(AUDIO_DIR, "#{ep.slug}.mp3")
-    transcript = File.join(TRANSCRIPTS_DIR, "#{ep.slug}.json")
+Rake::Task[HRN_FEED].invoke
 
-    file audio => AUDIO_DIR do
-      puts "Downloading #{ep.slug}..."
-      CookingIssues::Download.fetch(ep.audio_url, audio)
-    end
+EPISODES = CookingIssues::Feed.parse(HRN_FEED)
 
-    file transcript => [audio, TRANSCRIPTS_DIR] do
-      puts "Transcribing #{ep.number}. #{ep.title}..."
-      puts "  TODO: sous_chef #{audio} #{transcript}"
-    end
+EPISODES.each do |ep|
+  audio = File.join(AUDIO_DIR, "#{ep.slug}.mp3")
+  file audio => AUDIO_DIR do
+    puts "Downloading #{ep.slug}..."
+    CookingIssues::Download.fetch(ep.audio_url, audio)
   end
-end
 
-# Parse the feed and register file tasks once it exists.
-task setup: HRN_FEED do
-  define_episode_tasks
+  transcript = File.join(TRANSCRIPTS_DIR, "#{ep.slug}.json")
+  file transcript => [audio, TRANSCRIPTS_DIR] do
+    puts "Transcribing #{ep.number}. #{ep.title}..."
+    puts "  TODO: sous_chef #{audio} #{transcript}"
+  end
 end
 
 # --- Tasks ---
@@ -54,26 +46,26 @@ end
 task default: :sync
 
 desc "Download and transcribe all episodes"
-task sync: :setup do
-  episodes.sort_by(&:number).each do |ep|
+task :sync do
+  EPISODES.sort_by(&:number).each do |ep|
     transcript = File.join(TRANSCRIPTS_DIR, "#{ep.slug}.json")
     Rake::Task[transcript].invoke
   end
 end
 
 desc "List all episodes from the feed"
-task episodes: :setup do
-  episodes.sort_by(&:number).each do |ep|
+task :episodes do
+  EPISODES.each do |ep|
     status = File.exist?(File.join(TRANSCRIPTS_DIR, "#{ep.slug}.json")) ? "✓" : " "
     puts "[#{status}] #{ep.slug}  #{ep.title}"
   end
 end
 
 desc "Transcribe an episode by number (e.g., rake transcribe[42])"
-task :transcribe, [:number] => :setup do |_t, args|
+task :transcribe, [:number] do |_t, args|
   abort "Usage: rake transcribe[NUMBER]" unless args[:number]
 
-  ep = episodes.find { |e| e.number == args[:number].to_i }
+  ep = EPISODES.find { |e| e.number == args[:number].to_i }
   abort "Episode #{args[:number]} not found in feed." unless ep
 
   transcript = File.join(TRANSCRIPTS_DIR, "#{ep.slug}.json")
@@ -81,10 +73,10 @@ task :transcribe, [:number] => :setup do |_t, args|
 end
 
 desc "Re-transcribe an episode (e.g., rake retranscribe[42])"
-task :retranscribe, [:number] => :setup do |_t, args|
+task :retranscribe, [:number] do |_t, args|
   abort "Usage: rake retranscribe[NUMBER]" unless args[:number]
 
-  ep = episodes.find { |e| e.number == args[:number].to_i }
+  ep = EPISODES.find { |e| e.number == args[:number].to_i }
   abort "Episode #{args[:number]} not found in feed." unless ep
 
   transcript = File.join(TRANSCRIPTS_DIR, "#{ep.slug}.json")