xref: /aosp_15_r20/external/bazelbuild-rules_java/java/java_utils.bzl (revision abe8e1b943c923005d847f1e3cf6637de4ed1a1f)
1*abe8e1b9SSadaf Ebrahimi"""Utility methods for interacting with the java rules"""
2*abe8e1b9SSadaf Ebrahimi
3*abe8e1b9SSadaf Ebrahimidef _tokenize_javacopts(ctx, opts):
4*abe8e1b9SSadaf Ebrahimi    """Tokenizes a list or depset of options to a list.
5*abe8e1b9SSadaf Ebrahimi
6*abe8e1b9SSadaf Ebrahimi    Iff opts is a depset, we reverse the flattened list to ensure right-most
7*abe8e1b9SSadaf Ebrahimi    duplicates are preserved in their correct position.
8*abe8e1b9SSadaf Ebrahimi
9*abe8e1b9SSadaf Ebrahimi    Args:
10*abe8e1b9SSadaf Ebrahimi        ctx: (RuleContext) the rule context
11*abe8e1b9SSadaf Ebrahimi        opts: (depset[str]|[str]) the javac options to tokenize
12*abe8e1b9SSadaf Ebrahimi    Returns:
13*abe8e1b9SSadaf Ebrahimi        [str] list of tokenized options
14*abe8e1b9SSadaf Ebrahimi    """
15*abe8e1b9SSadaf Ebrahimi    if hasattr(opts, "to_list"):
16*abe8e1b9SSadaf Ebrahimi        opts = reversed(opts.to_list())
17*abe8e1b9SSadaf Ebrahimi    return [
18*abe8e1b9SSadaf Ebrahimi        token
19*abe8e1b9SSadaf Ebrahimi        for opt in opts
20*abe8e1b9SSadaf Ebrahimi        for token in ctx.tokenize(opt)
21*abe8e1b9SSadaf Ebrahimi    ]
22*abe8e1b9SSadaf Ebrahimi
23*abe8e1b9SSadaf Ebrahimiutils = struct(
24*abe8e1b9SSadaf Ebrahimi    tokenize_javacopts = _tokenize_javacopts,
25*abe8e1b9SSadaf Ebrahimi)
26