package Ġscanner Ċ Ċ import Ġkotlinx . cli . Arg Parser Ċ import Ġkotlinx . cli . Arg Type Ċ import Ġkotlinx . cli . multiple Ċ import Ġscanner . config . di Ċ import Ġscanner . domain . CLI Options Ċ import Ġscanner . domain . Repository Ċ import Ġscanner . service . Orche strator Ċ Ċ suspend Ġfun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠ Ġval Ġparser Ġ= ĠArg Parser (" scanner ") ĊĠ Ġval Ġscanner Ġby Ġparser . argument ( ĊĠĠĠ Ġtype Ġ= ĠArg Type . Choice ( Repository . values (). map ( Repository :: alias ), Ġ{ Ġit Ġ}), ĊĠĠĠ Ġdescription Ġ= Ġ" Repository Ġalias Ġto Ġscan Ġfor " ĊĠ Ġ) ĊĊĠ Ġval Ġfrom Ġby Ġparser . option ( ĊĠĠĠ Ġtype Ġ= ĠArg Type . Choice ((' a ' .. ' z '). toList (), Ġ{ Ġit [ 0 ] Ġ}), ĊĠĠĠ Ġshort Name Ġ= Ġ" f ", ĊĠĠĠ Ġdescription Ġ= Ġ" Repository Ġroot Ġpage Ġfilter Ġstart " ĊĠ Ġ) ĊĠ Ġval Ġto Ġby Ġparser . option ( ĊĠĠĠ Ġtype Ġ= ĠArg Type . Choice ((' a ' .. ' z '). toList (), Ġ{ Ġit [ 0 ] Ġ}), ĊĠĠĠ Ġshort Name Ġ= Ġ" t ", ĊĠĠĠ Ġdescription Ġ= Ġ" Repository Ġroot Ġpage Ġfilter Ġend " ĊĠ Ġ) ĊĠ Ġval Ġinclude Ġby Ġparser ĊĠĠĠ Ġ. option ( ĊĠĠĠĠĠ Ġtype Ġ= ĠArg Type . String , ĊĠĠĠĠĠ Ġshort Name Ġ= Ġ" i ", ĊĠĠĠĠĠ Ġdescription Ġ= Ġ" Repository Ġroot Ġpage Ġfilter Ġto Ġinclude " ĊĠĠĠ Ġ) ĊĠĠĠ Ġ. multiple () ĊĠ Ġval Ġexclude Ġby Ġparser ĊĠĠĠ Ġ. option ( ĊĠĠĠĠĠ Ġtype Ġ= ĠArg Type . String , ĊĠĠĠĠĠ Ġshort Name Ġ= Ġ" e ", ĊĠĠĠĠĠ Ġdescription Ġ= Ġ" Repository Ġroot Ġpage Ġfilter Ġto Ġexclude " ĊĠĠĠ Ġ) ĊĠĠĠ Ġ. multiple () ĊĠ Ġval Ġdelay Ġby Ġparser . option ( ĊĠĠĠ Ġtype Ġ= ĠArg Type . Int , Ġshort Name Ġ= Ġ" d ", Ġdescription Ġ= Ġ" Worker Ġprocessing Ġdelay Ġin Ġmilliseconds " ĊĠ Ġ) ĊĠ Ġval Ġworkers Ġby Ġparser . option ( ĊĠĠĠ Ġtype Ġ= ĠArg Type . Int , Ġshort Name Ġ= Ġ" w ", Ġdescription Ġ= Ġ" Concurrent Ġworker Ġcount " ĊĠ Ġ) ĊĠ Ġparser . parse ( args ) ĊĠ Ġval Ġcli Options Ġ= ĊĠĠĠ ĠCLI Options ( ĊĠĠĠĠĠ Ġscanner Ġ= Ġscanner , ĊĠĠĠĠĠ Ġinclude Ġ= Ġinclude . toSet (). take If Ġ{ Ġit . isNotEmpty () Ġ}, ĊĠĠĠĠĠ Ġfrom Ġ= Ġfrom , ĊĠĠĠĠĠ Ġto Ġ= Ġto , ĊĠĠĠĠĠ Ġexclude Ġ= Ġexclude . toSet (). take If Ġ{ Ġit . isNotEmpty () Ġ}, ĊĠĠĠĠĠ Ġdelay MS Ġ= Ġdelay ?. to Long (), ĊĠĠĠĠĠ Ġworkers Ġ= Ġworkers ĊĠĠĠ Ġ) ĊĊĠ ĠO rche strator ( di ). run ( scanner , Ġcli Options ) Ċ } Ċ