/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 9 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠProgramming ĠLanguage Ġcontributors . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . gradle . targets . js . npm Ċ Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . jetbrains . kotlin . gradle . targets . js . nodejs . node Js Ċ import Ġjava . nio . file . Files Ċ Ċ /** Ċ Ġ* ĠHandles Ġsimple Ġcase , Ġwhen Ġthere Ġare Ġno Ġnpm Ġde pen encies Ġrequired , Ġbut Ġsome Ġtasks Ġste el Ġneeds Ċ Ġ* Ġnode _ modules Ġwith Ġsymlink ed Ġpackages Ġand Ġpackages _ imported Ċ Ġ*/ Ċ class ĠN pm Simple Link er ( root Project : ĠProject ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġroot Project Node Modules Ġ= Ġroot Project . node Js . root . root Package Dir . resolve ( N pm Project . NODE _ MODULES ) ĊĊĠĠĠ Ġfun Ġlink ( projects : ĠCollection < N pm Project Package >) Ġ{ ĊĠĠĠĠĠĠĠ Ġroot Project Node Modules . list Files ()?. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġit . to Path () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . is Symbolic Link ( path ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . delete ( path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġit . delete Re cursively () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġroot Project Node Modules . mkdir s () ĊĊĠĠĠĠĠĠĠ Ġ// Ġpackages ĊĠĠĠĠĠĠĠ Ġprojects . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . create Symbolic Link ( getNode Module Path ( it . npm Project . name ), Ġit . npm Project . dir . canonical File . to Path ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġpackages _ imported ĊĠĠĠĠĠĠĠ Ġprojects . flatMap To ( mutable Set Of ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . gradle Dependencies . external Modules . map Ġ{ Ġgradle Node Module Ġ-> Ġgradle Node Module Ġ} ĊĠĠĠĠĠĠĠ Ġ}. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . create Symbolic Link ( getNode Module Path ( it . name ), Ġit . path . canonical File . to Path ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetNode Module Path ( name : ĠString ) Ġ= ĊĠĠĠĠĠĠĠ Ġroot Project Node Modules . resolve ( name ). canonical File . to Path () Ċ }