package Ġru . po cket byte . kotlin _ mpp . plugin . publish Ċ Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . Task Ċ import Ġorg . gradle . api . plugins . Extension Aware Ċ import Ġorg . gradle . api . publish . Publishing Extension Ċ import Ġru . po cket byte . kotlin . gradle . plugin . mpp _ publish . upper First Char Ċ Ċ object ĠPublish ing Ġ{ ĊĠĠĠ Ġconst Ġval ĠROOT _ TARGET Ġ= Ġ" Kotlin Multi platform " ĊĠĠĠ Ġconst Ġval ĠGROUP Ġ= Ġ" publishing " ĊĊĠĠĠ Ġinternal Ġval ĠApple Only Targets Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" macos X 6 4 ", Ġ" ios X 6 4 ", Ġ" ios Arm 6 4 ", Ġ" ios Arm 3 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" watch os Arm 3 2 ", Ġ" watch os Arm 6 4 ", Ġ" watch os X 8 6 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" tv os Arm 6 4 ", Ġ" tv os X 6 4 " ĊĠĠĠ Ġ) ĊĠĠĠ Ġinternal Ġval ĠM ips Only Targets Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" linux M ips 3 2 ", Ġ" linux Mip sel 3 2 " ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġinternal Ġval ĠWindows Only Targets Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" mingw X 6 4 ", Ġ" mingw X 8 6 " ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġinternal Ġconst Ġval ĠApple Platform Name Ġ= Ġ" Apple " ĊĠĠĠ Ġinternal Ġconst Ġval ĠM ips Platform Name Ġ= Ġ" M ips " ĊĠĠĠ Ġinternal Ġconst Ġval ĠWindows Platform Name Ġ= Ġ" Windows " Ċ } Ċ Ċ fun ĠProject . publishing Task ( target Name : ĠString , Ġrepo Name : ĠString ?): ĠTask ? Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( repo Name Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġproject . tasks . find ByName ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" publish ${ target Name . upper First Char ()} Publication To ${ repo Name . upper First Char ()} Repository ") ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġproject . tasks . find ByName ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" publish ${ target Name . upper First Char ()} Publication To Maven Local ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠProject . visit Publishing Tasks ( target Name : ĠString , Ġaction : Ġ( task : ĠTask , Ġrepo Name : ĠString ?) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġpublishing . repositories . forEach Ġ{ Ġrepo Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġrepo Name Ġ= Ġrepo . name . upper First Char () ĊĊĠĠĠĠĠĠĠ Ġpublishing Task ( target Name , Ġrepo Name )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction ( it , Ġrepo Name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublishing Task ( target Name , Ġnull )?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġaction ( it , Ġnull ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠProject . register Platform Dependent Publishing Tasks () Ġ{ ĊĠĠĠ Ġpublishing . repositories . forEach Ġ{ Ġrepo Ġ-> ĊĠĠĠĠĠĠĠ Ġregister Platform Dependent Publishing Tasks ( repo . name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġregister Platform Dependent Publishing Tasks ( null ) Ċ } Ċ Ċ fun ĠProject . register Platform Dependent Publishing Tasks ( repo Name : ĠString ?) Ġ{ ĊĠĠĠ Ġregister Platform Dependent Tasks ( Publishing . Apple Platform Name , Ġrepo Name , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPublish ing . Apple Only Targets ) ĊĠĠĠ Ġregister Platform Dependent Tasks ( Publishing . M ips Platform Name , Ġrepo Name , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPublish ing . M ips Only Targets ) ĊĠĠĠ Ġregister Platform Dependent Tasks ( Publishing . Windows Platform Name , Ġrepo Name , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPublish ing . Windows Only Targets ) Ċ } Ċ Ċ private Ġfun ĠProject . register Platform Dependent Tasks ( ĊĠĠĠĠĠĠĠ Ġplatform : ĠString , Ġrepo Name : ĠString ?, Ġtargets : ĠArray < String >) Ġ{ ĊĊĠĠĠ Ġval Ġpublishing Tasks Ġ= Ġtargets . map NotNull Ġ{ ĊĠĠĠĠĠĠĠ Ġpublishing Task ( it , Ġrepo Name ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( publishing Tasks . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtask Name Ġ= Ġif Ġ( repo Name Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" publish All ${ platform . upper First Char ()} To ${ repo Name . upper First Char ()} Repository " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" publish All ${ platform . upper First Char ()} To Maven Local " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtasks . register ( task Name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= ĠPublish ing . GROUP ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdepends On (* publishing Tasks . to Typed Array ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval ĠProject . publishing : ĠPublish ing Extension Ġget () Ġ= ĊĠĠĠ Ġ( this Ġas ĠExtension Aware ). extensions . get ByName (" publishing ") Ġas ĠPublish ing Extension Ċ