/* ĊĠĠ ĠCopyright Ġ 2 0 1 7 - 2 0 1 9 ĠChar les ĠK orn . ĊĊĠĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); ĊĠĠ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . ĊĠĠ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat ĊĊĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 ĊĊĠĠ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware ĊĠĠ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , ĊĠĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . ĊĠĠ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand ĊĠĠ Ġlimitations Ġunder Ġthe ĠLicense . Ċ */ Ċ Ċ package Ġb ate ct . docker . build Ċ Ċ import Ġjava . nio . file . Files Ċ import Ġjava . nio . file . Path Ċ import Ġjava . util . stream . Collectors Ċ Ċ data Ġclass ĠDocker Image BuildContext ( val Ġentries : ĠSet < Docker Image BuildContext Entry >) Ċ data Ġclass ĠDocker Image BuildContext Entry ( val Ġlocal Path : ĠPath , Ġval Ġcontext Path : ĠString ) Ċ Ċ class ĠDocker Image BuildContext Factory ( private Ġval Ġignore Parser : ĠDocker Ignore Parser ) Ġ{ ĊĠĠĠ Ġfun Ġcreate From Directory ( context Directory : ĠPath ): ĠDocker Image BuildContext Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġignore List Ġ= Ġignore Parser . parse ( context Directory . resolve (". docker ignore ")) ĊĊĠĠĠĠĠĠĠ ĠFiles . walk ( context Directory ). use Ġ{ Ġstream Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfiles Ġ= Ġstream ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit Ġ!= Ġcontext Directory Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġignore List . should Include In Context ( it . toString ()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠDocker Image BuildContext Entry ( it , Ġcontext Directory . rel ativ ize ( it ). toString ()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. collect ( Collectors . toSet ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠDocker Image BuildContext ( files ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ