// ĠCopyright Ġ 2 0 0 0 - 2 0 2 0 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ package Ġorg . jetbrains . intellij . build . images Ċ Ċ import Ġcom . intellij . openapi . application . Path Manager Ċ import Ġcom . intellij . util . concurrency . App Executor Util Ċ import Ġcom . intellij . util . concurrency . App Scheduled ExecutorService Ċ import Ġorg . jetbrains . intellij . build . images . sync . j ps Project Ċ import Ġorg . jetbrains . j ps . model . module . J ps Module Ċ import Ġjava . io . File Ċ import Ġjava . nio . file . Path Ċ import Ġjava . nio . file . Paths Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠ Ġtry Ġ{ ĊĠĠĠ Ġgenerate Icons Classes ( args . first OrNull ()?. let Ġ{ ĠPaths . get ( it ) Ġ}) ĊĠ Ġ} ĊĠ Ġfinally Ġ{ ĊĠĠĠ Ġshutdown App Scheduled ExecutorService () ĊĠ Ġ} Ċ } Ċ Ċ internal Ġabstract Ġclass ĠIcons Classes Ġ{ ĊĠ Ġopen Ġval Ġhome Path : ĠString Ġget () Ġ= ĠPath Manager . get Home Path () ĊĠ Ġopen Ġval Ġmodules : ĠList < J ps Module > Ġget () Ġ= Ġj ps Project ( home Path ). modules ĊĠ Ġopen Ġfun Ġgenerator ( home : ĠFile , Ġmodules : ĠList < J ps Module >) Ġ= ĠIcons ClassGenerator ( home , Ġmodules ) Ċ } Ċ Ċ private Ġclass ĠInt ellij Icons Classes Ġ: ĠIcons Classes () Ġ{ ĊĠ Ġoverride Ġval Ġmodules : ĠList < J ps Module > ĊĠĠĠ Ġget () Ġ= Ġsuper . modules . filter Not Ġ{ ĊĠĠĠĠĠ Ġ// ĠTODO : Ġuse Ġicon - robots . txt ĊĠĠĠĠĠ Ġit . name . startsWith (" fleet ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġfun Ġgenerate Icons Classes ( db File : ĠPath ?, Ġconfig : ĠIcons Classes Ġ= ĠInt ellij Icons Classes ()) Ġ{ ĊĠ Ġval Ġhome Ġ= ĠFile ( config . home Path ) ĊĊĠ Ġval Ġmodules Ġ= Ġconfig . modules ĊĊĠ Ġif Ġ( System . getenv (" GENER ATE _ ICON S ") Ġ!= Ġ" false ") Ġ{ ĊĠĠĠ Ġval Ġgenerator Ġ= Ġconfig . generator ( home , Ġmodules ) ĊĠĠĠ Ġmodules . parallel Stream (). forEach ( generator :: process Module ) ĊĠĠĠ Ġgenerator . print Stats () ĊĠ Ġ} ĊĊĠ Ġif Ġ( System . getenv (" OPTIMI ZE _ ICON S ") Ġ!= Ġ" false ") Ġ{ ĊĠĠĠ Ġval Ġoptimizer Ġ= ĠImage Size Optimizer ( home ) ĊĠĠĠ Ġmodules . parallel Stream (). forEach ( optimizer :: optimize Icons ) ĊĠĠĠ Ġoptimizer . print Stats () ĊĠ Ġ} ĊĊĠ Ġif Ġ( db File Ġ!= Ġnull ) Ġ{ ĊĠĠĠ Ġval Ġpre Compiler Ġ= ĠImage Svg Pre Compiler () ĊĠĠĠ Ġpre Compiler . pre Compile Icons ( modules , Ġdb File ) ĊĠ Ġ} ĊĊĠ Ġval Ġchecker Ġ= ĠImage San ity Checker ( home ) ĊĠ Ġmodules . forEach ( checker :: check ) ĊĠ Ġchecker . print Warnings () ĊĊĠ Ġprintln () ĊĠ Ġprintln (" Done ") Ċ } Ċ Ċ /** Ċ Ġ* ĠInitialized Ġin Ġ[ com . intellij . util . SVG Loader ] Ċ Ġ*/ Ċ internal Ġfun Ġshutdown App Scheduled ExecutorService () Ġ{ ĊĠ Ġtry Ġ{ ĊĠĠĠ Ġ( App Executor Util . getApp Scheduled ExecutorService () Ġas ĠApp Scheduled ExecutorService ) ĊĠĠĠĠĠ Ġ. shutdown App Scheduled ExecutorService () ĊĠ Ġ} ĊĠ Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠ ĠSystem . err . println (" Failed Ġduring Ġexecutor Ġservice Ġshutdown :") ĊĠĠĠ Ġe . printStackTrace ( System . err ) ĊĠ Ġ} Ċ }