#!/usr/bin/env python3

import argparse
from datetime import datetime
import os
import subprocess
import sys


langs_dirs = {'fa'}
khorshidi_months = [
   'فروردین', 'اردیبهشت', 'خرداد',
   'تیر', 'مرداد', 'شهریور',
   'مهر', 'آبان', 'آذر',
   'دی', 'بهمن', 'اسفند',
]
miladi_months = [
   'ژانویه', 'فوریه', 'مارس',
   'آوریل', 'مه', 'ژوئن',
   'ژوئیه', 'اوت', 'سپتامبر',
   'اکتبر', 'نوامبر', 'دسامبر',
]

def main() -> int:
   parser = argparse.ArgumentParser()
   parser.add_argument('filename')
   args = parser.parse_args()
   MD = os.getenv('MD', 'lowdown')
   MD_opts = os.getenv('MD_opts', '')
   cur_dir = os.path.split(os.getcwd())[-1]
   try:
       with open(args.filename, 'r') as file:
           for line in file:
               space_index = 0
               try:
                   space_index = line.index(' ')
               except ValueError as e:
                   print(f'error: line does not contain a space character: {line}')
                   continue
               date = line[:space_index]
               is_en = False
               while date.startswith('../'):
                   date = date[3:]
                   is_en = True
               date = date[:10]
               if cur_dir in langs_dirs:
                   year = date[:4]
                   month_index = int(date[5:7]) - 1
                   if not date.startswith('2'): # shamsi (good enough for my uses)
                       month = khorshidi_months[month_index]
                   else:
                       month = miladi_months[month_index]
                   short_date = f'{month} {year}'
                   short_date = (short_date.translate(
                       str.maketrans('0123456789',
                                     '۰۱۲۳۴۵۶۷۸۹')))
               else:
                   short_date = (datetime
                                 .strptime(date, '%Y/%m/%d')
                                 .strftime('%b %Y'))
               title = line[space_index:].strip()
               title_md = (subprocess
                           .run([MD] + MD_opts.split(), input=title,
                                text=True, capture_output=True)
                           .stdout
                           .rstrip())
               if title_md.startswith('<p>'):
                   title_md = title_md[3:]
               if title_md.endswith('</p>'):
                   title_md = title_md[:-4]
               print(f'<tr><td>{short_date}</td>')
               if cur_dir in langs_dirs and is_en:
                   print(f'<td><a href="{line[:space_index]}" hreflang="en">{title_md}</a></td></tr>\n')
               else:
                   print(f'<td><a href="{line[:space_index]}">{title_md}</a></td></tr>\n')
   except FileNotFoundError as e:
       print(f'error: could not find file {args.filename}')
       return 1
   return 0

if __name__ == '__main__':
   sys.exit(main())