package Ġorg . jetbrains . tiny gop l ugin . configuration Ċ Ċ import Ġcom . intellij . conversion . impl . Conversion Context Impl Ċ import Ġcom . intellij . openapi . components . Persistent State Component Ċ import Ġcom . intellij . openapi . components . Service Ċ import Ġcom . intellij . openapi . components . State Ċ import Ġcom . intellij . openapi . components . Storage Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . util . xml b . Xml Serializer Util Ċ import Ġjava . nio . file . Path Ċ Ċ interface ĠProject Configuration Ġ{ ĊĠĠĠ Ġvar Ġgc : ĠG arbage Collector ĊĠĠĠ Ġvar Ġscheduler : ĠScheduler ĊĠĠĠ Ġvar Ġtarget Platform : ĠString ĊĠĠĠ Ġvar Ġgo Tags : ĠString ĊĠĠĠ Ġvar Ġgo Arch : ĠString ĊĠĠĠ Ġvar Ġgo OS : ĠString ĊĠĠĠ Ġvar Ġuser Targets : ĠList < String > Ċ } Ċ Ċ data Ġclass ĠProject Configuration State ( ĊĠĠĠ Ġoverride Ġvar Ġgc : ĠG arbage Collector Ġ= ĠG arbage Collector . AUTO _ DETECT , ĊĠĠĠ Ġoverride Ġvar Ġscheduler : ĠScheduler Ġ= ĠScheduler . AUTO _ DETECT , ĊĠĠĠ Ġoverride Ġvar Ġtarget Platform : ĠString Ġ= Ġ"", ĊĠĠĠ Ġoverride Ġvar Ġgo Tags : ĠString Ġ= Ġ"", ĊĠĠĠ Ġoverride Ġvar Ġgo Arch : ĠString Ġ= Ġ"", ĊĠĠĠ Ġoverride Ġvar Ġgo OS : ĠString Ġ= Ġ"", ĊĠĠĠ Ġoverride Ġvar Ġuser Targets : ĠList < String > Ġ= Ġempty List (), Ċ ) Ġ: ĠProject Configuration Ċ Ċ @ State ( name Ġ= Ġ" Tiny Go Plugin ", Ġstorage s Ġ= Ġ[ Storage (" tiny go Settings . xml ") ]) Ċ @ Service ( Service . Level . PROJECT ) Ċ internal Ġclass ĠProject Configuration Impl ( val Ġproject : ĠProject ) Ġ: ĊĠĠĠ ĠPersistent State Component < Project Configuration State > Ġ{ ĊĠĠĠ Ġvar Ġmy State Ġ= ĠProject Configuration State () ĊĠĠĠ Ġprivate Ġval Ġcontext : ĠConversion Context Impl ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbase Dir Ġ= Ġproject . basePath Ġ?: Ġproject . project FilePath Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġcontext Ġ= ĠConversion Context Impl ( Path . of ( base Dir )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload State ( state : ĠProject Configuration State ) Ġ{ ĊĠĠĠĠĠĠĠ ĠXml Serializer Util . copy Bean ( state , Ġmy State ) ĊĠĠĠĠĠĠĠ Ġmy State . target Platform Ġ= Ġcontext . expand Path ( my State . target Platform ) ĊĠĠĠĠĠĠĠ Ġmy State . user Targets Ġ= Ġmy State . user Targets . filter Ġ{ Ġit . isNotBlank () Ġ}. map ( context :: collapse Path ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetState (): ĠProject Configuration State Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġcollapse Ġpaths ĊĠĠĠĠĠĠĠ Ġreturn Ġmy State . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Platform Ġ= Ġcontext . collapse Path ( my State . target Platform ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Targets Ġ= Ġmy State . user Targets . map ( context :: collapse Path ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ