text: # pylint: disable=g-bad-file-header
  # Copyright 2017 The Bazel Authors. All rights reserved.
  #
  # 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.
  """Contains Skylark rules used to build the embedded_tools.zip."""
  
  def _embedded_tools(ctx):
      # The list of arguments we pass to the script.
      args_file = ctx.actions.declare_file(ctx.label.name + ".params")
      ctx.file_action(output = args_file, content = "\n".join([f.path for f in ctx.files.srcs]))
  
      # Action to call the script.
      ctx.action(
          inputs = ctx.files.srcs,
          outputs = [ctx.outputs.out],
          arguments = [ctx.outputs.out.path, args_file.path],
          progress_message = "Creating embedded tools: %s" % ctx.outputs.out.short_path,
          executable = ctx.executable.tool,
      )
  
  embedded_tools = rule(
      implementation = _embedded_tools,
      attrs = {
          "srcs": attr.label_list(allow_files = True),
          "out": attr.output(mandatory = True),
          "tool": attr.label(
              executable = True,
              cfg = "host",
              allow_files = True,
              default = Label("//src:create_embedded_tools_sh"),
          ),
      },
  )
  
  def _srcsfile(ctx):
      ctx.actions.write(
          output = ctx.outputs.out,
          content = "\n".join([f.path for f in ctx.files.srcs]),
      )
  
  srcsfile = rule(
      implementation = _srcsfile,
      attrs = {
          "srcs": attr.label_list(allow_files = True),
          "out": attr.output(mandatory = True),
      },
  )
  