11require_relative "../config/environment"
22require_relative "../app/services/email_ingestor"
3+ require_relative "../lib/import_options"
4+
5+ options = ImportOptions . parse!
36
47if ARGV . length != 2
5- puts "Usage: #{ $PROGRAM_NAME} /path/to/mbox <message-id>"
8+ puts "Usage: #{ $PROGRAM_NAME} [options] /path/to/mbox <message-id>"
69 exit 1
710end
811
@@ -21,14 +24,14 @@ def normalize_message_id(message)
2124 ''
2225end
2326
24- def process_message ( message , target_id )
27+ def process_message ( message , target_id , update_existing : )
2528 return false if message . empty?
2629
2730 message_id = normalize_message_id ( message )
2831 return false if message_id . empty?
2932 return false unless message_id == target_id
3033
31- msg = EmailIngestor . new . ingest_raw ( message , fallback_threading : true )
34+ msg = EmailIngestor . new . ingest_raw ( message , fallback_threading : true , update_existing : update_existing )
3235 if msg
3336 puts "Reimported #{ msg . message_id } "
3437 else
@@ -37,6 +40,7 @@ def process_message(message, target_id)
3740 true
3841end
3942
43+ update_existing = options [ :update_existing ]
4044found = false
4145message = ""
4246
@@ -47,7 +51,7 @@ def process_message(message, target_id)
4751 line = line . encode ( "utf-8" , :invalid => :replace )
4852
4953 if line . match ( /^From [^@]+@[a-z\d \- ]+(\. [a-z\d \- ]+)*\. [a-z]+/i )
50- if process_message ( message , target_id )
54+ if process_message ( message , target_id , update_existing : update_existing )
5155 found = true
5256 break
5357 end
@@ -59,7 +63,7 @@ def process_message(message, target_id)
5963end
6064
6165if !found
62- found = process_message ( message , target_id )
66+ found = process_message ( message , target_id , update_existing : update_existing )
6367end
6468
6569puts "Message not found in #{ mbox_path } " unless found
0 commit comments