@@ -43,66 +43,80 @@ def _partition_patterns(patterns):
4343 ]
4444 return includes , excludes
4545
46- _deprecated_attrs = {
47- "dependency_mode" : attr .string (values = ["direct" , "plus-one" , "transitive" ]),
48- "strict_deps_mode" : attr .string (values = ["off" , "warn" , "error" , "default" ]),
49- "unused_dependency_checker_mode" : attr .string (values = ["off" , "warn" , "error" ]),
50- "compiler_deps_mode" : attr .string (values = ["off" , "warn" , "error" ]),
51- "dependency_tracking_method" : attr .string (values = ["ast-plus" , "ast" , "high-level" , "default" ]),
46+ _config_attrs = {
47+ "dependency_mode" : attr .string (
48+ default = "direct" ,
49+ values = ["direct" , "plus-one" , "transitive" ],
50+ ),
51+ "strict_deps_mode" : attr .string (
52+ default = "default" ,
53+ values = ["off" , "warn" , "error" , "default" ],
54+ ),
55+ "unused_dependency_checker_mode" : attr .string (
56+ default = "off" ,
57+ values = ["off" , "warn" , "error" ],
58+ ),
59+ "compiler_deps_mode" : attr .string (
60+ default = "off" ,
61+ values = ["off" , "warn" , "error" ],
62+ ),
63+ "dependency_tracking_method" : attr .string (
64+ default = "default" ,
65+ values = ["ast-plus" , "ast" , "high-level" , "default" ],
66+ ),
5267 "dependency_tracking_strict_deps_patterns" : attr .string_list (
5368 doc = "List of target prefixes included for strict deps analysis. Exclude patterns with '-'" ,
69+ default = ["" ],
5470 ),
5571 "dependency_tracking_unused_deps_patterns" : attr .string_list (
5672 doc = "List of target prefixes included for unused deps analysis. Exclude patterns with '-'" ,
73+ default = ["" ],
5774 ),
5875 "enable_diagnostics_report" : attr .bool (
5976 doc = "Enable the output of structured diagnostics through the BEP" ,
6077 ),
6178 "enable_stats_file" : attr .bool (
79+ default = True ,
6280 doc = "Enable writing of statsfile" ,
6381 ),
6482 "enable_semanticdb" : attr .bool (
83+ default = False ,
6584 doc = "Enable SemanticDb" ,
6685 ),
67- "semanticdb_bundle_in_jar" : attr .bool (
68- doc = "Option to bundle the semanticdb files inside the output jar file" ,
69- ),
86+ "semanticdb_bundle_in_jar" : attr .bool (default = False , doc = "Option to bundle the semanticdb files inside the output jar file" ),
7087 "use_argument_file_in_runner" : attr .bool (
88+ default = False ,
7189 doc = "Changes java binaries scripts (including tests) to use argument files and not classpath jars to improve performance, requires java > 8" ,
7290 ),
7391}
7492
75- def _attr_to_flag (name ):
76- return "//scala/settings:%s" % name
77-
78- _flag_attrs = {
79- "_" + k : attr .label (default = _attr_to_flag (k ))
80- for k in _deprecated_attrs .keys ()
93+ _config_flags = {
94+ "_" + k : attr .label (default = "//scala/settings:%s" % k )
95+ for k in _config_attrs .keys ()
8196}
8297
83- def _resolve_flags (ctx ):
84- def compute (name ):
85- attr = getattr (ctx .attr , name )
86- return attr if attr else getattr (ctx .attr , "_" + name )[BuildSettingInfo ].value
87-
88- return struct (** {k : compute (k ) for k in _deprecated_attrs .keys ()})
98+ def _config (ctx ):
99+ if ctx .attr ._scala_toolchain_flags [BuildSettingInfo ].value :
100+ return struct (** {k : getattr (ctx .attr , "_" + k )[BuildSettingInfo ].value for k in _config_attrs .keys ()})
101+ else :
102+ return struct (** {k : getattr (ctx .attr , k ) for k in _config_attrs .keys ()})
89103
90104def _scala_toolchain_impl (ctx ):
91- flags = _resolve_flags (ctx )
105+ config = _config (ctx )
92106
93- dependency_mode = flags .dependency_mode
107+ dependency_mode = config .dependency_mode
94108
95109 strict_deps_mode = _compute_strict_deps_mode (
96- flags .strict_deps_mode ,
110+ config .strict_deps_mode ,
97111 dependency_mode ,
98112 )
99113
100- compiler_deps_mode = flags .compiler_deps_mode
114+ compiler_deps_mode = config .compiler_deps_mode
101115
102- unused_dependency_checker_mode = flags .unused_dependency_checker_mode
116+ unused_dependency_checker_mode = config .unused_dependency_checker_mode
103117 dependency_tracking_method = _compute_dependency_tracking_method (
104118 dependency_mode ,
105- flags .dependency_tracking_method ,
119+ config .dependency_tracking_method ,
106120 )
107121
108122 # Final quality checks to possibly detect buggy code above
@@ -121,10 +135,10 @@ def _scala_toolchain_impl(ctx):
121135 if "ast-plus" == dependency_tracking_method and not ENABLE_COMPILER_DEPENDENCY_TRACKING :
122136 fail ("To use 'ast-plus' dependency tracking, you must set 'enable_compiler_dependency_tracking' to True in scala_config" )
123137
124- all_strict_deps_patterns = flags .dependency_tracking_strict_deps_patterns
138+ all_strict_deps_patterns = config .dependency_tracking_strict_deps_patterns
125139 strict_deps_includes , strict_deps_excludes = _partition_patterns (all_strict_deps_patterns )
126140
127- all_unused_deps_patterns = flags .dependency_tracking_unused_deps_patterns
141+ all_unused_deps_patterns = config .dependency_tracking_unused_deps_patterns
128142 unused_deps_includes , unused_deps_excludes = _partition_patterns (all_unused_deps_patterns )
129143
130144 toolchain = platform_common .ToolchainInfo (
@@ -141,12 +155,12 @@ def _scala_toolchain_impl(ctx):
141155 unused_deps_exclude_patterns = unused_deps_excludes ,
142156 scalac_jvm_flags = ctx .attr .scalac_jvm_flags ,
143157 scala_test_jvm_flags = ctx .attr .scala_test_jvm_flags ,
144- enable_diagnostics_report = flags .enable_diagnostics_report ,
158+ enable_diagnostics_report = config .enable_diagnostics_report ,
145159 jacocorunner = ctx .attr .jacocorunner ,
146- enable_stats_file = flags .enable_stats_file ,
147- enable_semanticdb = flags .enable_semanticdb ,
148- semanticdb_bundle_in_jar = flags .semanticdb_bundle_in_jar ,
149- use_argument_file_in_runner = flags .use_argument_file_in_runner ,
160+ enable_stats_file = config .enable_stats_file ,
161+ enable_semanticdb = config .enable_semanticdb ,
162+ semanticdb_bundle_in_jar = config .semanticdb_bundle_in_jar ,
163+ use_argument_file_in_runner = config .use_argument_file_in_runner ,
150164 scala_version = ctx .attr ._scala_version [BuildSettingInfo ].value ,
151165 )
152166 return [toolchain ]
@@ -166,8 +180,8 @@ def _default_dep_providers():
166180scala_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