package Ġcom . ember js . cli Ċ Ċ import Ġcom . intellij . execution . configurations . General CommandLine Ċ import Ġcom . intellij . javascript . nodejs . interpreter . Node Js Interpreter Ref Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġorg . apache . commons . lang . System Utils Ċ import Ġjava . io . BufferedReader Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ class ĠEmber Cli ( val Ġproject : ĠProject , Ġvar arg Ġval Ġparameters : ĠString ) Ġ{ ĊĊĠĠĠ Ġvar Ġwork Directory : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġnode Interpreter : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġenv : ĠMap < String , ĠString >? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġfun Ġnode CommandLine (): ĠGeneral CommandLine Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinterpreter Ref Ġ= ĠNode Js Interpreter Ref . create ( node Interpreter ) ĊĠĠĠĠĠĠĠ Ġval Ġinterpreter Ġ= Ġinterpreter Ref . resolve ( project ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠGeneral CommandLine ( interpreter ?. reference Name ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . add Parameter ("$ work Directory / node _ modules /. bin / ember ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġem ber Bin CommandLine (): ĠGeneral CommandLine Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsuffix Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem Utils . IS _ OS _ WINDOWS Ġ-> Ġ". cmd " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcommand Ġ= Ġ"$ work Directory / node _ modules /. bin / ember $ suffix " ĊĊĠĠĠĠĠĠĠ Ġreturn ĠGeneral CommandLine ( command ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcommand Line (): ĠGeneral CommandLine Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcommand Line Ġ= Ġwhen Ġ( node Interpreter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Ġ-> Ġnode CommandLine () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġem ber Bin CommandLine () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcommand Line . also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( env Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . with Environment ( env ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . add Parameters (* parameters ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . with Work Directory ( work Directory ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrun (): ĠBufferedReader Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprocess Ġ= Ġcommand Line (). create Process () ĊĊĠĠĠĠĠĠĠ ĠYes Thread ( process ). start () ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! process . waitFor ( 3 0 , ĠTimeUnit . SECONDS )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprocess . destroy () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠException (" Process Ġtimed Ġout . ĠPlease Ġtry Ġagain Ġon Ġthe Ġcommand Ġline .") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġexit Value Ġ= Ġprocess . exit Value () ĊĠĠĠĠĠĠĠ Ġif Ġ( exit Value Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠException (" Process Ġdid Ġnot Ġexit Ġproperly Ġ( code Ġ= Ġ$ exit Value ). ĠPlease Ġtry Ġagain Ġon Ġthe Ġcommand Ġline .") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġprocess . inputStream . buffered Reader () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠBL UE PRINT S Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" accept ance - test " Ġto Ġ" Accept ance ĠTest ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" adapter " Ġto Ġ" Adapter ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" adapter - test " Ġto Ġ" Adapter ĠTest ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" component " Ġto Ġ" Component ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" component - test " Ġto Ġ" Component ĠTest ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" controller " Ġto Ġ" Controller ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" controller - test " Ġto Ġ" Controller ĠTest ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" helper " Ġto Ġ" Helper ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" helper - test " Ġto Ġ" Helper ĠTest ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" initializer " Ġto Ġ" Initializer ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" initializer - test " Ġto Ġ" Initializer ĠTest ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" mixin " Ġto Ġ" Mixin ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" mixin - test " Ġto Ġ" Mixin ĠTest ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" model " Ġto Ġ" Model ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" model - test " Ġto Ġ" Model ĠTest ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" route " Ġto Ġ" Route ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" route - test " Ġto Ġ" Route ĠTest ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" serializer " Ġto Ġ" Serializer ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" serializer - test " Ġto Ġ" Serializer ĠTest ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" service " Ġto Ġ" Service ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" service - test " Ġto Ġ" Service ĠTest ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" template " Ġto Ġ" Template ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" test - helper " Ġto Ġ" Test ĠHelper ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" transform " Ġto Ġ" Transform ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" transform - test " Ġto Ġ" Transform ĠTest ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" view " Ġto Ġ" View ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" view - test " Ġto Ġ" View ĠTest " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ