package jetbrains.mps.make.dependencies; /*Generated by MPS */ import jetbrains.mps.make.resources.IResource; import org.jetbrains.mps.openapi.language.SLanguage; import jetbrains.mps.smodel.language.LanguageRegistry; import jetbrains.mps.make.script.IScript; import org.jetbrains.annotations.NotNull; import jetbrains.mps.internal.collections.runtime.ListSequence; import java.util.ArrayList; import jetbrains.mps.make.script.ScriptBuilder; import jetbrains.mps.smodel.language.LanguageRuntime; import jetbrains.mps.smodel.runtime.MakeAspectDescriptor; import jetbrains.mps.make.facet.IFacet; import jetbrains.mps.internal.collections.runtime.Sequence; import java.util.Collections; import jetbrains.mps.internal.collections.runtime.ISelector; import jetbrains.mps.make.facet.FacetRegistry; import jetbrains.mps.make.facet.ITarget; public class Cluster { private final Iterable<IResource> myResources; private final Iterable<SLanguage> myUsedLang; private final LanguageRegistry myLanguageRegistry; private IScript myScript; /*package*/ Cluster(@NotNull Iterable<? extends IResource> resources, @NotNull Iterable<SLanguage> usedLang, @NotNull LanguageRegistry languageRegistry) { myResources = ListSequence.fromListWithValues(new ArrayList<IResource>(), resources); myUsedLang = usedLang; myLanguageRegistry = languageRegistry; } public Iterable<SLanguage> allUsedLangNamespaces() { return myUsedLang; } public Iterable<IResource> getResources() { return myResources; } public ScriptBuilder createScriptBuilder() { ScriptBuilder scb = new ScriptBuilder(); for (SLanguage ns : allUsedLangNamespaces()) { LanguageRuntime lr = myLanguageRegistry.getLanguage(ns); MakeAspectDescriptor aspect = (lr == null ? null : lr.getAspect(MakeAspectDescriptor.class)); Iterable<IFacet> fcts = (aspect == null ? Sequence.fromIterable(Collections.<IFacet>emptyList()) : aspect.getManifest().facets()); scb.withFacetNames(Sequence.fromIterable(fcts).select(new ISelector<IFacet, IFacet.Name>() { public IFacet.Name select(IFacet fct) { return fct.getName(); } })); scb.withFacetNames(Sequence.fromIterable(FacetRegistry.getInstance().getFacetsForLanguage(ns.getQualifiedName())).select(new ISelector<IFacet, IFacet.Name>() { public IFacet.Name select(IFacet fct) { return fct.getName(); } })); } return scb.withFinalTarget(new ITarget.Name("jetbrains.mps.make.facets.Make.make")); } public void setScript(IScript script) { myScript = script; } public IScript getScript() { return myScript; } }