| /* |
| * Copyright 2014-present Facebook, Inc. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); you may |
| * not use this file except in compliance with the License. You may obtain |
| * a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| * License for the specific language governing permissions and limitations |
| * under the License. |
| */ |
| |
| package com.facebook.buck.thrift; |
| |
| import com.facebook.buck.model.BuildTarget; |
| import com.facebook.buck.model.Flavor; |
| import com.facebook.buck.rules.BuildRule; |
| import com.facebook.buck.rules.BuildRuleParams; |
| import com.facebook.buck.rules.BuildRuleResolver; |
| import com.google.common.collect.ImmutableMap; |
| import com.google.common.collect.ImmutableSet; |
| import com.google.common.collect.ImmutableSortedSet; |
| |
| /** |
| * Interface used to implement thrift support for a language. {@link ThriftLibraryDescription} |
| * objects will use these for the various languages it supports. |
| */ |
| public interface ThriftLanguageSpecificEnhancer { |
| |
| /** |
| * @return the language name to pass to thrift's "--gen" option. |
| */ |
| String getLanguage(); |
| |
| /** |
| * @return the flavor used to reference this language via the target graph. |
| */ |
| Flavor getFlavor(); |
| |
| /** |
| * @param sources objects representing the thrift sources that are being compiled for |
| * this language, and the {@link ThriftCompiler} rules that do the compiling. |
| * @param deps the language specific dependencies. |
| * @return a {@link BuildRule} which performs the language specific build. |
| */ |
| BuildRule createBuildRule( |
| BuildRuleParams params, |
| BuildRuleResolver resolver, |
| ThriftConstructorArg args, |
| ImmutableMap<String, ThriftSource> sources, |
| ImmutableSortedSet<BuildRule> deps); |
| |
| /** |
| * @return the names of extra dependencies implicitly required for this language. |
| */ |
| ImmutableSet<BuildTarget> getImplicitDepsForTargetFromConstructorArg( |
| BuildTarget target, |
| ThriftConstructorArg constructorArg); |
| |
| /** |
| * @return the language specific options to pass to the thrift compiler. |
| */ |
| ImmutableSet<String> getOptions(BuildTarget target, ThriftConstructorArg arg); |
| |
| } |