/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 . Ċ Ġ* ĠMark us ĠKe pp eler Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġcom . github . m ke p Dev . dependency Track B om Publish Ċ Ċ import Ġorg . gradle . api . logging . Logging Ċ import Ġjava . io . File Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠThe Ġgradle Ġplugin Ġextension Ġto Ġset Ġthe Ġproperties Ċ Ġ*/ Ċ open Ġclass ĠDependency Track B om Publish Extension Ġ@ Inject Ġconstructor ( build Dir : ĠFile ) Ġ{ ĊĊĠĠĠ Ġvar Ġhost : ĠString Ġ= Ġ"" ĊĠĠĠ Ġvar Ġrealm Ġ= Ġ" api / v 1 / bom " ĊĠĠĠ Ġvar ĠapiKey : ĠString Ġ= Ġ"" ĊĠĠĠ Ġvar Ġproject Uuid : ĠString Ġ= Ġ"" ĊĠĠĠ Ġvar Ġb om File : ĠFile Ġ= ĠFile ( build Dir , Ġ" reports / bom . xml ") Ċ // ĠĠĠ Ġvar Ġuse Internal Cy clone Dx : ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChecks Ġwhether Ġall Ġproperties Ġar Ġset Ġcorrectly . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠisValid (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( host . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error ("' host ' Ġis Ġnot Ġset . ĠSet Ġthe Ġhostname Ġof Ġthe Ġdependency - track Ġserver . ĠSyntax : Ġ' host [: port ]' Ġe . g . Ġlocalhost : 8 0 8 0 . ĠPort Ġ 8 0 Ġis Ġdefault ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( apiKey . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error ("' apiKey ' Ġis Ġnot Ġset . ĠSet Ġthe Ġ' apiKey ' Ġto Ġaccess Ġthe Ġdependency - track Ġserver .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( realm . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" Wrong Ġvalue Ġfor Ġthe Ġ' realm ' Ġproperty .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( project Uuid . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error ("' project Uuid ' Ġis Ġnot Ġset . ĠThis Ġis Ġthe Ġuuid Ġof Ġthe Ġassociated Ġdependency - track Ġproject . Ġ\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" This Ġcan Ġbe Ġfound Ġin Ġthe Ġaddress Ġbar Ġof Ġyour Ġbrowser Ġif Ġyou Ġhave Ġopen Ġthe Ġproject .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! bom File . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" B om Ġfile Ġ'${ bom File . absolute Path }' Ġnot Ġfound .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Dependency Track B om Publish Extension ( host ='$ host ', \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġrealm ='$ realm ', \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠapiKey ='$ apiKey ', \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġproject Uuid ='$ project Uuid ', \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġb om File =$ bom File ,\ n " Ġ+ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġuse Internal Cy clone Dx =$ use Internal Cy clone Dx " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ")" ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLogging . getLogger ( Dependency Track B om Publish Extension :: class . java ) ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEXT ENSION _ IDENTIFIER Ġ= Ġ" d track Publish B om " ĊĠĠĠ Ġ} Ċ }