@@ -40,66 +40,80 @@ def _partition_patterns(patterns):
4040 ]
4141 return includes , excludes
4242
43- _deprecated_attrs = {
44- "dependency_mode" : attr .string (values = ["direct" , "plus-one" , "transitive" ]),
45- "strict_deps_mode" : attr .string (values = ["off" , "warn" , "error" , "default" ]),
46- "unused_dependency_checker_mode" : attr .string (values = ["off" , "warn" , "error" ]),
47- "compiler_deps_mode" : attr .string (values = ["off" , "warn" , "error" ]),
48- "dependency_tracking_method" : attr .string (values = ["ast-plus" , "ast" , "high-level" , "default" ]),
43+ _config_attrs = {
44+ "dependency_mode" : attr .string (
45+ default = "direct" ,
46+ values = ["direct" , "plus-one" , "transitive" ],
47+ ),
48+ "strict_deps_mode" : attr .string (
49+ default = "default" ,
50+ values = ["off" , "warn" , "error" , "default" ],
51+ ),
52+ "unused_dependency_checker_mode" : attr .string (
53+ default = "off" ,
54+ values = ["off" , "warn" , "error" ],
55+ ),
56+ "compiler_deps_mode" : attr .string (
57+ default = "off" ,
58+ values = ["off" , "warn" , "error" ],
59+ ),
60+ "dependency_tracking_method" : attr .string (
61+ default = "default" ,
62+ values = ["ast-plus" , "ast" , "high-level" , "default" ],
63+ ),
4964 "dependency_tracking_strict_deps_patterns" : attr .string_list (
5065 doc = "List of target prefixes included for strict deps analysis. Exclude patterns with '-'" ,
66+ default = ["" ],
5167 ),
5268 "dependency_tracking_unused_deps_patterns" : attr .string_list (
5369 doc = "List of target prefixes included for unused deps analysis. Exclude patterns with '-'" ,
70+ default = ["" ],
5471 ),
5572 "enable_diagnostics_report" : attr .bool (
5673 doc = "Enable the output of structured diagnostics through the BEP" ,
5774 ),
5875 "enable_stats_file" : attr .bool (
76+ default = True ,
5977 doc = "Enable writing of statsfile" ,
6078 ),
6179 "enable_semanticdb" : attr .bool (
80+ default = False ,
6281 doc = "Enable SemanticDb" ,
6382 ),
64- "semanticdb_bundle_in_jar" : attr .bool (
65- doc = "Option to bundle the semanticdb files inside the output jar file" ,
66- ),
83+ "semanticdb_bundle_in_jar" : attr .bool (default = False , doc = "Option to bundle the semanticdb files inside the output jar file" ),
6784 "use_argument_file_in_runner" : attr .bool (
85+ default = False ,
6886 doc = "Changes java binaries scripts (including tests) to use argument files and not classpath jars to improve performance, requires java > 8" ,
6987 ),
7088}
7189
72- def _attr_to_flag (name ):
73- return "//scala/settings:%s" % name
74-
75- _flag_attrs = {
76- "_" + k : attr .label (default = _attr_to_flag (k ))
77- for k in _deprecated_attrs .keys ()
90+ _config_flags = {
91+ "_" + k : attr .label (default = "//scala/settings:%s" % k )
92+ for k in _config_attrs .keys ()
7893}
7994
80- def _resolve_flags (ctx ):
81- def compute (name ):
82- attr = getattr (ctx .attr , name )
83- return attr if attr else getattr (ctx .attr , "_" + name )[BuildSettingInfo ].value
84-
85- return struct (** {k : compute (k ) for k in _deprecated_attrs .keys ()})
95+ def _config (ctx ):
96+ if ctx .attr ._scala_toolchain_flags [BuildSettingInfo ].value :
97+ return struct (** {k : getattr (ctx .attr , "_" + k )[BuildSettingInfo ].value for k in _config_attrs .keys ()})
98+ else :
99+ return struct (** {k : getattr (ctx .attr , k ) for k in _config_attrs .keys ()})
86100
87101def _scala_toolchain_impl (ctx ):
88- flags = _resolve_flags (ctx )
102+ config = _config (ctx )
89103
90- dependency_mode = flags .dependency_mode
104+ dependency_mode = config .dependency_mode
91105
92106 strict_deps_mode = _compute_strict_deps_mode (
93- flags .strict_deps_mode ,
107+ config .strict_deps_mode ,
94108 dependency_mode ,
95109 )
96110
97- compiler_deps_mode = flags .compiler_deps_mode
111+ compiler_deps_mode = config .compiler_deps_mode
98112
99- unused_dependency_checker_mode = flags .unused_dependency_checker_mode
113+ unused_dependency_checker_mode = config .unused_dependency_checker_mode
100114 dependency_tracking_method = _compute_dependency_tracking_method (
101115 dependency_mode ,
102- flags .dependency_tracking_method ,
116+ config .dependency_tracking_method ,
103117 )
104118
105119 # Final quality checks to possibly detect buggy code above
@@ -118,10 +132,10 @@ def _scala_toolchain_impl(ctx):
118132 if "ast-plus" == dependency_tracking_method and not ENABLE_COMPILER_DEPENDENCY_TRACKING :
119133 fail ("To use 'ast-plus' dependency tracking, you must set 'enable_compiler_dependency_tracking' to True in scala_config" )
120134
121- all_strict_deps_patterns = flags .dependency_tracking_strict_deps_patterns
135+ all_strict_deps_patterns = config .dependency_tracking_strict_deps_patterns
122136 strict_deps_includes , strict_deps_excludes = _partition_patterns (all_strict_deps_patterns )
123137
124- all_unused_deps_patterns = flags .dependency_tracking_unused_deps_patterns
138+ all_unused_deps_patterns = config .dependency_tracking_unused_deps_patterns
125139 unused_deps_includes , unused_deps_excludes = _partition_patterns (all_unused_deps_patterns )
126140
127141 toolchain = platform_common .ToolchainInfo (
@@ -138,12 +152,12 @@ def _scala_toolchain_impl(ctx):
138152 unused_deps_exclude_patterns = unused_deps_excludes ,
139153 scalac_jvm_flags = ctx .attr .scalac_jvm_flags ,
140154 scala_test_jvm_flags = ctx .attr .scala_test_jvm_flags ,
141- enable_diagnostics_report = flags .enable_diagnostics_report ,
155+ enable_diagnostics_report = config .enable_diagnostics_report ,
142156 jacocorunner = ctx .attr .jacocorunner ,
143- enable_stats_file = flags .enable_stats_file ,
144- enable_semanticdb = flags .enable_semanticdb ,
145- semanticdb_bundle_in_jar = flags .semanticdb_bundle_in_jar ,
146- use_argument_file_in_runner = flags .use_argument_file_in_runner ,
157+ enable_stats_file = config .enable_stats_file ,
158+ enable_semanticdb = config .enable_semanticdb ,
159+ semanticdb_bundle_in_jar = config .semanticdb_bundle_in_jar ,
160+ use_argument_file_in_runner = config .use_argument_file_in_runner ,
147161 scala_version = ctx .attr ._scala_version [BuildSettingInfo ].value ,
148162 )
149163 return [toolchain ]
@@ -166,8 +180,8 @@ def _default_dep_providers():
166180_scala_toolchain = rule (
167181 _scala_toolchain_impl ,
168182 attrs = _dicts .add (
169- _deprecated_attrs ,
170- _flag_attrs ,
183+ _config_attrs ,
184+ _config_flags ,
171185 {
172186 "dep_providers" : attr .label_list (
173187 default = _default_dep_providers (),
@@ -178,6 +192,7 @@ _scala_toolchain = rule(
178192 "scalac_jvm_flags" : attr .string_list (),
179193 "scala_test_jvm_flags" : attr .string_list (),
180194 "_scala_version" : attr .label (default = "@io_bazel_rules_scala_config//:scala_version" ),
195+ "_scala_toolchain_flags" : attr .label (default = "//scala/settings:scala_toolchain_flags" ),
181196 },
182197 ),
183198 fragments = ["java" ],
0 commit comments