/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 2 2 Ġ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 . generators . gradle . dsl Ċ Ċ import Ġorg . jetbrains . kotlin . gradle . plugin . mpp . Bit code Embedding Mode Ċ import Ġorg . jetbrains . kotlin . gradle . plugin . mpp . Native Build Type Ċ import Ġorg . jetbrains . kotlin . kon an . target . Kon an Target Ċ import Ġjava . io . File Ċ import Ġjava . util .* Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġgenerate Abstract Kotlin Artifacts Extension Implementation () Ċ } Ċ Ċ private Ġfun Ġgenerate Abstract Kotlin Artifacts Extension Implementation () Ġ{ ĊĠĠĠ Ġval ĠclassName Ġ= ĠtypeName (" org . jetbrains . kotlin . gradle . targets . native . tasks . artifact . Kotlin Artifacts Extension Impl ") ĊĊĠĠĠ Ġval Ġimports Ġ= Ġ""" ĊĠĠĠĠĠĠĠ Ġimport Ġorg . gradle . api . Project ĊĠĠĠĠĠĠĠ Ġimport Ġorg . jetbrains . kotlin . gradle . dsl . Kotlin Artifact ĊĠĠĠĠĠĠĠ Ġimport Ġorg . jetbrains . kotlin . gradle . dsl . Kotlin Artifact Config ĊĠĠĠĠĠĠĠ Ġimport Ġorg . jetbrains . kotlin . gradle . dsl . Kotlin Artifacts Extension ĊĠĠĠĠĠĠĠ Ġimport Ġorg . jetbrains . kotlin . gradle . plugin . mpp . Bit code Embedding Mode ĊĠĠĠĠĠĠĠ Ġimport Ġorg . jetbrains . kotlin . gradle . plugin . mpp . Native Build Type ĊĠĠĠĠĠĠĠ Ġimport Ġorg . jetbrains . kotlin . kon an . target . Kon an Target ĊĠĠĠĠĠĠĠ Ġimport Ġjavax . inject . Inject ĊĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠ Ġval Ġgenerated Code Warning Ġ= Ġ"// ĠDO ĠNOT ĠEDIT ĠMAN U ALLY ! ĠGenerated Ġby Ġ${ object Ġ{} . java Class . enc lo sing Class . name }" ĊĊĠĠĠ Ġval Ġoverrides Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ Ġ" override Ġval Ġartifact Configs Ġ= Ġproject . objects . domain Object Set ( Kotlin Artifact Config :: class . java )", ĊĠĠĠĠĠĠĠ Ġ" override Ġval Ġartifacts Ġ= Ġproject . objects . named Domain Object Set ( Kotlin Artifact :: class . java )", ĊĠĠĠĠĠĠĠ Ġ" override Ġval ĠNative Ġ= Ġproject . objects . newInstance ( Kotlin Native Artifact DS LI mpl :: class . java , Ġproject )" ĊĠĠĠ Ġ). join ToString ("\ n "). indent ed ( 4 ) ĊĊĠĠĠ Ġval Ġbuild Type Constants Ġ= ĠNative Build Type . values (). join ToString ("\ n ") Ġ{ ĊĠĠĠĠĠĠĠ Ġ" val Ġ${ it . name } Ġ= ĠNative Build Type .${ it . name }" ĊĠĠĠ Ġ}. indent ed ( 4 ) ĊĊĠĠĠ Ġval Ġbit code Mode Constants Ġ= ĠBit code Embedding Mode . values (). join ToString ( ĊĠĠĠĠĠĠĠ Ġseparator Ġ= Ġ"\ n ", ĊĠĠĠĠĠĠĠ Ġprefix Ġ= Ġ" class ĠBit code Embedding Mode Dsl Ġ{\ n ", ĊĠĠĠĠĠĠĠ Ġpostfix Ġ= Ġ"\ n }" ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ" val Ġ${ it . name } Ġ= ĠBit code Embedding Mode .${ it . name }". indent ed ( 4 ) ĊĠĠĠ Ġ}. indent ed ( 4 ) ĊĊĠĠĠ Ġval Ġbit code Mode Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ Ġ"@ Jvm Field ", ĊĠĠĠĠĠĠĠ Ġ" val ĠEmbed Bit code Mode Ġ= ĠBit code Embedding Mode Dsl ()" ĊĠĠĠ Ġ). join ToString ("\ n "). indent ed ( 4 ) ĊĊĠĠĠ Ġval Ġkon an Target Constants Ġ= ĠKon an Target . pre defined Targets . values . join ToString ("\ n ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname Parts Ġ= Ġit . name . split ("_ ") ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġname Parts . drop ( 1 ). join ToString ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseparator Ġ= Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprefix Ġ= Ġname Parts . first (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransform Ġ= ĠString :: capitalize US ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ" val Ġ$ name Ġ= ĠKon an Target .${ it . name . uppercase ( Locale . US )}" ĊĠĠĠ Ġ}. indent ed ( 4 ) ĊĊĠĠĠ Ġval Ġcode Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ Ġ" package Ġ${ className . packageName () }", ĊĠĠĠĠĠĠĠ Ġimports , ĊĠĠĠĠĠĠĠ Ġgenerated Code Warning , ĊĠĠĠĠĠĠĠ Ġ" abstract Ġclass Ġ${ className . short Name ()} Ġ@ Inject Ġconstructor ( project : ĠProject ) Ġ: ĠKotlin Artifacts Extension Ġ{ ", ĊĠĠĠĠĠĠĠ Ġoverrides , ĊĠĠĠĠĠĠĠ Ġbuild Type Constants , ĊĠĠĠĠĠĠĠ Ġbit code Mode Constants , ĊĠĠĠĠĠĠĠ Ġbit code Mode , ĊĠĠĠĠĠĠĠ Ġkon an Target Constants , ĊĠĠĠĠĠĠĠ Ġ" }" ĊĠĠĠ Ġ). join ToString ( separator Ġ= Ġ"\ n \ n ") ĊĊĠĠĠ Ġval Ġtarget File Ġ= ĠFile ("$ output Source Root /${ className . fq Name . replace (".", Ġ"/") }. kt ") ĊĠĠĠ Ġtarget File . write Text ( code ) Ċ }