package Ġcom . v imeo . model generator Ċ Ċ import Ġcom . v imeo . model generator . tasks . Generate Models Task Ċ import Ġorg . gradle . api . Plugin Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . Task Ċ Ċ class ĠGenerate Models Plugin Ġ: ĠPlugin < Project > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġapply ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġextension Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . extensions . create ( EXTENSION _ NAME , ĠGenerate Models Extension :: class . java , Ġproject ) ĊĊĠĠĠĠĠĠĠ Ġproject . plugin Manager . with Plugin ( K OT LIN _ ANDROID ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Task ( project , Ġextension ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . after Evaluate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . tasks . find ByName ( PRE _ BUILD )?. depends On ( project . tasks . find ByName ( GENER ATE _ MODE LS )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġproject . plugin Manager . with Plugin ( K OT LIN _ JVM ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Task ( project , Ġextension ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġk apt Generate Stub s Kotlin Ġis Ġused Ġas Ġthe Ġset Ġup Ġtask Ġinstead Ġof Ġbuild ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġbecause Ġk apt Ġcode Ġgeneration Ġhappens Ġbefore Ġbuild Ġis Ġcalled Ġand ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwe Ġneed Ġto Ġgenerate Ġthe Ġmodels Ġprior Ġto Ġk apt Ġso Ġthe ĠM oshi Ġadapters ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcan Ġalso Ġbe Ġgenerated . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġk apt Task : ĠTask ? Ġ= Ġproject . tasks . find ByName ( K AP T _ GENER ATE _ ST UB S ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen Ġgenerating Ġto Ġa Ġmodule Ġthat Ġdoesn 't Ġuse Ġk apt Ġthis Ġtask Ġwill Ġbe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġin Ġthat Ġcase Ġcompile Kotlin Ġis Ġthe Ġear liest Ġtask Ġrun Ġwhen Ġthe Ġmodule Ġis Ġbeing ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġbuilt Ġso Ġwe Ġcan Ġattach Ġgenerate Models Ġto Ġthat Ġinstead . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( k apt Task Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk apt Task . depends On ( GENER ATE _ MODE LS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . tasks . find ByName ( COMPILE _ K OT LIN )?. depends On ( GENER ATE _ MODE LS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġregister Task ( ĊĠĠĠĠĠĠĠ Ġproject : ĠProject , ĊĠĠĠĠĠĠĠ Ġextension : ĠGenerate Models Extension ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġproject . tasks . register ( GENER ATE _ MODE LS , ĠGenerate Models Task :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . type To Generate Ġ= Ġextension . type Generated !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . input Model Path Ġ= Ġextension . input Path !! ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠK AP T _ GENER ATE _ ST UB S Ġ= Ġ" k apt Generate Stub s Kotlin " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCOMPI LE _ K OT LIN Ġ= Ġ" compile Kotlin " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠPRE _ BUILD Ġ= Ġ" pre Build " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠEXT ENSION _ NAME Ġ= Ġ" generated " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠK OT LIN _ JVM Ġ= Ġ" org . jetbrains . kotlin . jvm " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠK OT LIN _ ANDROID Ġ= Ġ" kotlin - android " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠGENER ATE _ MODE LS Ġ= Ġ" generate Models " ĊĠĠĠ Ġ} Ċ } Ċ