# Copyright (C) 2020 The Google Bazel Common Authors. # # 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. """A macro to configure Dagger deps within a workspace""" load("//:build_defs.bzl", "POM_VERSION") _DAGGER_VERSION = POM_VERSION _HILT_VERSION = POM_VERSION DAGGER_ARTIFACTS = [ "com.google.dagger:dagger:" + _DAGGER_VERSION, "com.google.dagger:dagger-compiler:" + _DAGGER_VERSION, "com.google.dagger:dagger-producers:" + _DAGGER_VERSION, "com.google.dagger:dagger-spi:" + _DAGGER_VERSION, ] DAGGER_ANDROID_ARTIFACTS = [ "com.google.dagger:dagger-android-processor:" + _DAGGER_VERSION, "com.google.dagger:dagger-android-support:" + _DAGGER_VERSION, "com.google.dagger:dagger-android:" + _DAGGER_VERSION, ] HILT_ANDROID_ARTIFACTS = [ "androidx.test:core:1.1.0", # Export for ApplicationProvider "javax.annotation:jsr250-api:1.0", # Export for @Generated "androidx.annotation:annotation:1.1.0", # Export for @CallSuper/@Nullable "com.google.dagger:dagger:" + _DAGGER_VERSION, "com.google.dagger:dagger-compiler:" + _DAGGER_VERSION, "com.google.dagger:hilt-android:" + _HILT_VERSION, "com.google.dagger:hilt-android-testing:" + _HILT_VERSION, "com.google.dagger:hilt-android-compiler:" + _HILT_VERSION, ] DAGGER_REPOSITORIES = [ "https://maven.google.com", "https://repo1.maven.org/maven2", ] DAGGER_ANDROID_REPOSITORIES = DAGGER_REPOSITORIES HILT_ANDROID_REPOSITORIES = DAGGER_REPOSITORIES # https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#unnamed-macro # buildifier: disable=unnamed-macro def dagger_rules(repo_name = "@maven"): """Defines the Dagger targets with proper exported dependencies and plugins. The targets will be of the form ":". Args: repo_name: The name of the dependency repository (default is "@maven"). """ native.java_library( name = "dagger", exported_plugins = [":dagger-compiler"], visibility = ["//visibility:public"], exports = [ "%s//:com_google_dagger_dagger" % repo_name, "%s//:javax_inject_javax_inject" % repo_name, ], ) native.java_plugin( name = "dagger-compiler", generates_api = 1, processor_class = "dagger.internal.codegen.ComponentProcessor", deps = [ "%s//:com_google_dagger_dagger_compiler" % repo_name, ], ) native.java_library( name = "dagger-producers", visibility = ["//visibility:public"], exports = [ ":dagger", "%s//:com_google_dagger_dagger_producers" % repo_name, ], ) native.java_library( name = "dagger-spi", visibility = ["//visibility:public"], exports = [ "%s//:com_google_dagger_dagger_spi" % repo_name, ], ) # https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#unnamed-macro # buildifier: disable=unnamed-macro def dagger_android_rules(repo_name = "@maven"): """Defines the Dagger Android targets with proper exported dependencies and plugins. The targets will be of the form ":". Args: repo_name: The name of the dependency repository (default is "@maven"). """ # https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#native-android # buildifier: disable=native-android native.android_library( name = "dagger-android", exported_plugins = [":dagger-android-processor"], visibility = ["//visibility:public"], exports = [ "%s//:com_google_dagger_dagger_android" % repo_name, ], ) # https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#native-android # buildifier: disable=native-android native.android_library( name = "dagger-android-support", exported_plugins = [":dagger-android-processor"], visibility = ["//visibility:public"], exports = [ ":dagger-android", "%s//:com_google_dagger_dagger_android_support" % repo_name, ], ) native.java_plugin( name = "dagger-android-processor", generates_api = 1, processor_class = "dagger.android.processor.AndroidProcessor", deps = [ "%s//:com_google_dagger_dagger_android_processor" % repo_name, ], ) # https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#unnamed-macro # buildifier: disable=unnamed-macro def hilt_android_rules(repo_name = "@maven"): """Defines the Hilt Android targets with proper exported dependencies and plugins. The targets will be of the form ":". Args: repo_name: The name of the dependency repository (default is "@maven"). """ # https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#native-android # buildifier: disable=native-android native.android_library( name = "hilt-android", exported_plugins = [ ":hilt_dagger_compiler", ":hilt_android_entry_point_processor", ":hilt_aggregated_deps_processor", ":hilt_alias_of_processor", ":hilt_define_component_processor", ":hilt_generates_root_input_processor", ":hilt_originating_element_processor", ":hilt_root_processor", ":hilt_view_model_processor", ], visibility = ["//visibility:public"], exports = [ "%s//:com_google_dagger_dagger" % repo_name, # For Dagger APIs "%s//:javax_inject_javax_inject" % repo_name, # For @Inject "%s//:androidx_annotation_annotation" % repo_name, # For @CallSuper "%s//:com_google_dagger_hilt_android" % repo_name, "%s//:javax_annotation_jsr250_api" % repo_name, # For @Generated ], ) # This target is same as dagger-compiler, but we're redefining it here # so that users don't have to call dagger_rules() first. native.java_plugin( name = "hilt_dagger_compiler", generates_api = 1, processor_class = "dagger.internal.codegen.ComponentProcessor", deps = [ "%s//:com_google_dagger_dagger_compiler" % repo_name, ], ) native.java_plugin( name = "hilt_android_entry_point_processor", generates_api = 1, processor_class = "dagger.hilt.android.processor.internal.androidentrypoint.AndroidEntryPointProcessor", deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name], ) native.java_plugin( name = "hilt_aggregated_deps_processor", generates_api = 1, processor_class = "dagger.hilt.processor.internal.aggregateddeps.AggregatedDepsProcessor", deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name], ) native.java_plugin( name = "hilt_alias_of_processor", generates_api = 1, processor_class = "dagger.hilt.processor.internal.aliasof.AliasOfProcessor", deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name], ) native.java_plugin( name = "hilt_define_component_processor", generates_api = 1, processor_class = "dagger.hilt.processor.internal.definecomponent.DefineComponentProcessor", deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name], ) native.java_plugin( name = "hilt_generates_root_input_processor", generates_api = 1, processor_class = "dagger.hilt.processor.internal.generatesrootinput.GeneratesRootInputProcessor", deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name], ) native.java_plugin( name = "hilt_originating_element_processor", generates_api = 1, processor_class = "dagger.hilt.processor.internal.originatingelement.OriginatingElementProcessor", deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name], ) native.java_plugin( name = "hilt_root_processor", generates_api = 1, processor_class = "dagger.hilt.processor.internal.root.RootProcessor", deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name], ) native.java_plugin( name = "hilt_view_model_processor", generates_api = 1, processor_class = "dagger.hilt.android.processor.internal.viewmodel.ViewModelProcessor", deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name], ) # https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#native-android # buildifier: disable=native-android native.android_library( name = "hilt-android-testing", testonly = 1, exported_plugins = [ ":hilt_bind_value_processor", ":hilt_custom_test_application_processor", ":hilt_testroot_processor", ":hilt_uninstall_modules_processor", ], visibility = ["//visibility:public"], exports = [ ":hilt-android", "%s//:androidx_test_core" % repo_name, # For ApplicationProvider "%s//:com_google_dagger_hilt_android_testing" % repo_name, ], ) native.java_plugin( name = "hilt_bind_value_processor", generates_api = 1, processor_class = "dagger.hilt.android.processor.internal.bindvalue.BindValueProcessor", deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name], ) native.java_plugin( name = "hilt_custom_test_application_processor", generates_api = 1, processor_class = "dagger.hilt.android.processor.internal.customtestapplication.CustomTestApplicationProcessor", deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name], ) native.java_plugin( name = "hilt_testroot_processor", generates_api = 1, processor_class = "dagger.hilt.android.processor.internal.testroot.TestRootProcessor", deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name], ) native.java_plugin( name = "hilt_uninstall_modules_processor", generates_api = 1, processor_class = "dagger.hilt.android.processor.internal.uninstallmodules.UninstallModulesProcessor", deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name], )