@@ -500,7 +500,7 @@ def __init__(self, posel=None, sandi=None, lokasi_kuki=None):
500500
501501 :param posel: Alamat posel yang terdaftar di KBBI Daring
502502 :type email: str
503- :param sandi: Kata sandi untuk akun dengan alamat surel yang diberikan
503+ :param sandi: Kata sandi untuk akun dengan alamat posel yang diberikan
504504 :type sandi: str
505505 :param lokasi_kuki: Lokasi kuki yang akan dimuat/disimpan
506506 :type lokasi_kuki: str atau PathLike
@@ -511,10 +511,7 @@ def __init__(self, posel=None, sandi=None, lokasi_kuki=None):
511511 try :
512512 self .ambil_kuki ()
513513 except FileNotFoundError as e :
514- raise GagalAutentikasi (
515- "Posel dan sandi tidak diberikan, "
516- f"tetapi kuki tidak ditemukan di { self .lokasi_kuki } "
517- ) from e
514+ raise KukiTidakDitemukan (self .lokasi_kuki ) from e
518515 else :
519516 token = self ._ambil_token ()
520517 self ._autentikasi (posel , sandi , token )
@@ -588,12 +585,24 @@ class GagalAutentikasi(Galat):
588585 """Galat ketika gagal melakukan autentikasi dengan KBBI."""
589586
590587 def __init__ (self , pesan = None ):
591- if pesan is None :
592- pesan = (
593- "Gagal melakukan autentikasi dengan alamat posel dan sandi "
594- "yang diberikan."
588+ super ().__init__ (
589+ pesan
590+ or "Gagal melakukan autentikasi dengan alamat posel dan sandi "
591+ "yang diberikan."
592+ )
593+
594+
595+ class KukiTidakDitemukan (GagalAutentikasi ):
596+ """Galat ketika lokasi kuki yang diberikan tidak ditemukan."""
597+
598+ def __init__ (self , lokasi_kuki , posel_sandi = True ):
599+ if posel_sandi :
600+ super ().__init__ (
601+ f"Posel dan sandi tidak diberikan, "
602+ f"tetapi kuki tidak ditemukan pada { lokasi_kuki } "
595603 )
596- super ().__init__ (pesan )
604+ else :
605+ super ().__init__ (f"Kuki tidak ditemukan pada { lokasi_kuki } !" )
597606
598607
599608def _parse_args_autentikasi (args ):
@@ -618,13 +627,19 @@ def _parse_args_autentikasi(args):
618627 help = "kata sandi akun KBBI Daring dengan posel yang diberikan" ,
619628 nargs = "?" ,
620629 )
630+ parser .add_argument (
631+ "--lokasi-kuki" ,
632+ "-l" ,
633+ help = "lokasi menuju berkas kuki yang akan disimpan" ,
634+ metavar = "LOKASI" ,
635+ )
621636 parser .add_argument (
622637 "-h" ,
623638 "-b" ,
624639 "--help" ,
625640 "--bantuan" ,
626- action = "help " ,
627- default = argparse . SUPPRESS ,
641+ action = "store_true " ,
642+ dest = "bantuan" ,
628643 help = "tampilkan pesan bantuan ini dan keluar" ,
629644 )
630645 parser .add_argument (
@@ -633,15 +648,14 @@ def _parse_args_autentikasi(args):
633648 help = "bersihkan kuki yang tersimpan" ,
634649 action = "store_true" ,
635650 )
636- return parser .parse_args (args )
651+ return parser .parse_args (args ), parser
637652
638653
639- def _bersihkan_kuki ():
640- lokasi_kuki = AutentikasiKBBI .lokasi_kuki
654+ def _bersihkan_kuki (lokasi_kuki ):
641655 try :
642656 lokasi_kuki .unlink ()
643657 except FileNotFoundError :
644- print (f"Kuki tidak ditemukan pada { lokasi_kuki } !" )
658+ print (KukiTidakDitemukan ( lokasi_kuki , posel_sandi = False ) )
645659 return 1
646660 else :
647661 print (f"Kuki { lokasi_kuki } berhasil dihapus." )
@@ -652,15 +666,21 @@ def autentikasi(argv=None):
652666 """Program CLI untuk autentikasi."""
653667 if argv is None :
654668 argv = sys .argv [1 :]
655- if argv == []:
656- argv = ["-h" ]
657- args = _parse_args_autentikasi (argv )
669+ args , parser = _parse_args_autentikasi (argv )
670+ lokasi_kuki = AutentikasiKBBI .lokasi_kuki
671+ if args .lokasi_kuki :
672+ lokasi_kuki = Path (args .lokasi_kuki )
658673 if args .posel is None and args .sandi is None :
659674 if args .bersihkan :
660- return _bersihkan_kuki ()
675+ return _bersihkan_kuki (lokasi_kuki )
676+ args .bantuan = True
677+ if args .bantuan :
678+ parser .print_help ()
661679 return 0
662680 try :
663- auth = AutentikasiKBBI (args .posel , args .sandi )
681+ auth = AutentikasiKBBI (
682+ args .posel , args .sandi , lokasi_kuki = args .lokasi_kuki
683+ )
664684 except Galat as e :
665685 print (e )
666686 return 1
@@ -671,6 +691,10 @@ def autentikasi(argv=None):
671691 f"{ auth .lokasi_kuki } .\n "
672692 "Kuki akan otomatis digunakan pada penggunaan KBBI berikutnya."
673693 )
694+ if args .lokasi_kuki :
695+ print (
696+ "Gunakan opsi --lokasi-kuki yang sama ketika menggunakan KBBI."
697+ )
674698 return 0
675699
676700
@@ -728,6 +752,12 @@ def _parse_args_utama(args):
728752 type = int ,
729753 metavar = "N" ,
730754 )
755+ parser .add_argument (
756+ "--lokasi-kuki" ,
757+ "-l" ,
758+ help = "lokasi menuju berkas kuki yang akan digunakan untuk autentikasi" ,
759+ metavar = "L" ,
760+ )
731761 return parser .parse_args (args )
732762
733763
@@ -746,8 +776,14 @@ def main(argv=None):
746776 argv = sys .argv [1 :]
747777 args = _parse_args_utama (argv )
748778 auth = None
749- if AutentikasiKBBI .lokasi_kuki .exists ():
750- auth = AutentikasiKBBI ()
779+ lokasi_kuki = AutentikasiKBBI .lokasi_kuki
780+ if args .lokasi_kuki :
781+ lokasi_kuki = Path (args .lokasi_kuki )
782+ if lokasi_kuki .exists ():
783+ auth = AutentikasiKBBI (lokasi_kuki = lokasi_kuki )
784+ elif args .lokasi_kuki :
785+ print (KukiTidakDitemukan (lokasi_kuki , posel_sandi = False ))
786+ return 1
751787 try :
752788 laman = KBBI (args .laman , auth )
753789 except Galat as e :
0 commit comments