/ ******** ***** Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 - 2 0 2 0 , ĠThe ĠUniversity Ġof ĠCalifornia Ġat ĠBer keley . ĊĊ Ġ* ĠRedistribution Ġand Ġuse Ġin Ġsource Ġand Ġbinary Ġforms , Ġwith Ġor Ġwithout Ġmodification , Ċ Ġ* Ġare Ġpermitted Ġprovided Ġthat Ġthe Ġfollowing Ġconditions Ġare Ġmet : ĊĊ Ġ* Ġ 1 . ĠRedistributions Ġof Ġsource Ġcode Ġmust Ġretain Ġthe Ġabove Ġcopyright Ġnotice , Ċ Ġ* ĠĠĠ Ġthis Ġlist Ġof Ġconditions Ġand Ġthe Ġfollowing Ġdisclaimer . ĊĊ Ġ* Ġ 2 . ĠRedistributions Ġin Ġbinary Ġform Ġmust Ġreproduce Ġthe Ġabove Ġcopyright Ġnotice , Ċ Ġ* ĠĠĠ Ġthis Ġlist Ġof Ġconditions Ġand Ġthe Ġfollowing Ġdisclaimer Ġin Ġthe Ġdocumentation Ċ Ġ* ĠĠĠ Ġand / or Ġother Ġmaterials Ġprovided Ġwith Ġthe Ġdistribution . ĊĊ Ġ* ĠTHIS ĠSOFTWARE ĠIS ĠPROVIDED ĠBY ĠTHE ĠCOPYRIGHT ĠHOLDERS ĠAND ĠCONTRIBUTORS Ġ" AS ĠIS " ĠAND Ċ Ġ* ĠANY ĠEXPRESS ĠOR ĠIMPLIED ĠWARRANTIES , ĠINCLUDING , ĠBUT ĠNOT ĠLIMITED ĠTO , ĠTHE ĠIMPLIED Ċ Ġ* ĠWARRANTIES ĠOF ĠMERCHANTABILITY ĠAND ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠARE Ċ Ġ* ĠDISCLAIMED . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE ĠCOPYRIGHT ĠHOLDER ĠOR ĠCONTRIBUTORS ĠBE ĠLIABLE ĠFOR Ċ Ġ* ĠANY ĠDIRECT , ĠINDIRECT , ĠINCIDENTAL , ĠSPECIAL , ĠEXEMPLARY , ĠOR ĠCONSEQUENTIAL ĠDAMAGES Ċ Ġ* Ġ( INCLUDING , ĠBUT ĠNOT ĠLIMITED ĠTO , ĠPROCUREMENT ĠOF ĠSUBSTITUTE ĠGOODS ĠOR ĠSERVICES ; Ċ Ġ* ĠLOSS ĠOF ĠUSE , ĠDATA , ĠOR ĠPROFITS ; ĠOR ĠBUSINESS ĠINTERRUPTION ) ĠHOWEVER ĠCAUSED ĠAND ĠON Ċ Ġ* ĠANY ĠTHEORY ĠOF ĠLIABILITY , ĠWHETHER ĠIN ĠCONTRACT , ĠSTRICT ĠLIABILITY , ĠOR ĠTORT Ċ Ġ* Ġ( INCLUDING ĠNEGLIGENCE ĠOR ĠOTHERWISE ) ĠARISING ĠIN ĠANY ĠWAY ĠOUT ĠOF ĠTHE ĠUSE ĠOF ĠTHIS Ċ Ġ* ĠSOFTWARE , ĠEVEN ĠIF ĠADVISED ĠOF ĠTHE ĠPOSSIBILITY ĠOF ĠSUCH ĠDAMAGE . Ċ Ġ********* ******/ Ċ Ċ package Ġorg . lf lang . generator . ts Ċ Ċ import Ġorg . lf lang . generator . Prepend Operator Ċ import Ġjava . nio . file . Path Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠP reamble Ġgenerator Ġfor Ġimports Ġin ĠTypeScript Ġtarget . Ċ Ġ* Ċ Ġ* Ġ Ġ@ author { Mat t ĠWe ber Ġ< mat t . we ber @ ber keley . edu >} Ċ Ġ* Ġ Ġ@ author { Ed ward ĠA . ĠLee Ġ< e al @ ber keley . edu >} Ċ Ġ* Ġ Ġ@ author { M arten ĠLo h stro h Ġ< mart en @ ber keley . edu >} Ċ Ġ* Ġ Ġ@ author Ġ{ Christ ian ĠMen ard Ġ< ch rist ian . men ard @ tu - d res den . de >} Ċ Ġ* Ġ Ġ@ author Ġ{ Ho ke un ĠKim Ġ< ho ke unk im @ ber keley . edu >} Ċ Ġ*/ Ċ Ċ class ĠTS Import P reamble Generator ( ĊĠĠĠ Ġprivate Ġval ĠfilePath : ĠPath , ĊĠĠĠ Ġprivate Ġval Ġproto Files : ĠMutable List < String > Ċ ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠDefault Ġimports Ġfor Ġimporting Ġall Ġthe Ġcore Ġclasses Ġand Ġhelper Ġclasses ĊĠĠĠĠĠĠĠĠ Ġ* Ġfor ĠCLI Ġargument Ġhandling . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDEFAULT _ IMPORT S Ġ= Ġ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġcommand Line Args Ġfrom Ġ' command - line - args ' ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġcommand Line Usage Ġfrom Ġ' command - line - usage ' ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġ{ Args Ġas Ġ__ Args , ĠPresent , ĠParameter Ġas Ġ__ Parameter , ĠState Ġas Ġ__ State , ĠVariable Ġas Ġ__ Variable , ĠRead , ĠT riggers Ġas Ġ__ Triggers , ĠRead Write , ĠWrite , ĠAction Ġas Ġ__ Action , ĠStartup Ġas Ġ__ Startup , ĠS ched , ĠTimer Ġas Ġ__ Timer , ĠRe actor Ġas Ġ__ Reactor , ĠPort Ġas Ġ__ Port , ĠOut Port Ġas Ġ__ Out Port , ĠIn Port Ġas Ġ__ In Port , ĠApp Ġas Ġ__ App } Ġfrom Ġ'./ core / reactor ' ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġ{ Reaction Ġas Ġ__ Reaction } Ġfrom Ġ'./ core / reaction ' ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġ{ F ederated App Ġas Ġ__ F ederated App } Ġfrom Ġ'./ core / fed eration ' ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġ{ TimeUnit , ĠTime Value , ĠTag Ġas Ġ__ Tag , ĠOrigin Ġas Ġ__ Origin } Ġfrom Ġ'./ core / time ' ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġ{ Log } Ġfrom Ġ'./ core / util ' ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġ{ Processed CommandLine Args Ġas Ġ__ Processed CommandLine Args , ĠCommandLine Option Defs Ġas Ġ__ CommandLine Option Defs , ĠCommandLine Usage Defs Ġas Ġ__ CommandLine Usage Defs , ĠCommandLine Option Spec Ġas Ġ__ CommandLine Option Spec , Ġunit Based Time Value CLA Type Ġas Ġ__ unit Based Time Value CLA Type , Ġboolean CLA Type Ġas Ġ__ boolean CLA Type } Ġfrom Ġ'./ core / cli ' ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| """ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Default Imports (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwith ( Prepend Operator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| // ĠCode Ġgenerated Ġby Ġthe ĠL ing ua ĠFr an ca Ġcompiler Ġfrom : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| // Ġfile :/ ${ filePath . toString ()} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ$ DEFAULT _ IMPORT S ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Proto P reamble (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproto File Imports Ġ= ĠString Join er ("\ n ") ĊĠĠĠĠĠĠĠ Ġfor Ġ( file Ġin Ġproto Files ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġname Ġ= Ġfile ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRemove Ġany Ġextension Ġthe Ġfile Ġname Ġmay Ġhave . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdot Ġ= Ġname . lastIndexOf ('.') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dot Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname . substring ( 0 , Ġdot ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproto File Imports . add (""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġ* Ġas Ġ${ name } Ġfrom Ġ"./ ${ name }_ pb " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Margin ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġwith ( Prepend Operator ) Ġ{ """ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| // ĠImports Ġfor Ġprotocol Ġbuffers ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ${ proto File Imports } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgenerate P reamble (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġgenerate Default Imports () Ġ+ Ġgenerate Proto P reamble () ĊĠĠĠ Ġ} Ċ }