package jetbrains.mps.internal.make.cfg; /*Generated by MPS */ import jetbrains.mps.make.script.PropertyPoolInitializer; import jetbrains.mps.generator.GenerationOptions; import jetbrains.mps.make.MakeSession; import jetbrains.mps.make.script.IPropertiesPool; import jetbrains.mps.baseLanguage.tuples.runtime.Tuples; import jetbrains.mps.make.facet.ITarget; /** * Single facility that knows which properties of Generate facet to initialize. * Now takes all the values from MakeSession, but may get additional methods to set * values explicitly (e.g. cleanMake for those longing for rebuild only). * Perhaps, this it should be MakeSession's responsibility to set properties. */ public final class GenerateFacetInitializer implements PropertyPoolInitializer { private Boolean myCleanMake; private GenerationOptions.OptionsBuilder myGenOptions; public GenerateFacetInitializer() { myCleanMake = null; } /** * * @deprecated Use cons without arguments, make session is available in all targets now */ @Deprecated public GenerateFacetInitializer(MakeSession makeSession) { myCleanMake = makeSession.isCleanMake(); } /** * Override clean make argument from MakeSession. * FIXME Theres's only 1 use, in BuildMakeService, likely we can get rid of it, and always use value from MakeSession * * @param cleanMake true to force complete generation * @return <code>this</code> for convenience */ public GenerateFacetInitializer cleanMake(boolean cleanMake) { myCleanMake = cleanMake; return this; } public GenerateFacetInitializer setGenerationOptions(GenerationOptions.OptionsBuilder optionsBuilder) { myGenOptions = optionsBuilder; return this; } @Override public void populate(IPropertiesPool ppool) { Tuples._2<MakeSession, Boolean> vars = (Tuples._2<MakeSession, Boolean>) ppool.properties(new ITarget.Name("jetbrains.mps.lang.core.Generate.checkParameters"), Object.class); if (vars != null && myCleanMake != null) { vars._1(myCleanMake); } if (myGenOptions != null) { Tuples._2<Boolean, GenerationOptions.OptionsBuilder> params = (Tuples._2<Boolean, GenerationOptions.OptionsBuilder>) ppool.properties(new ITarget.Name("jetbrains.mps.lang.core.Generate.configure"), Object.class); if (params != null) { params._1(myGenOptions); } } } }