<html devsite>
<head>
  <meta name="project_path" value="/_project.yaml">
  <meta name="book_path" value="/versions/6.3.0/_book.yaml">
</head>
<body>

<h1 class="page-title" id="modules.FilesToRunProvider">FilesToRunProvider</h1>

<!-- {% raw %} -->



<h2>Members</h2>
<ul>
    <li>
    <a href="#executable">executable</a>
  </li>
      <li>
    <a href="#runfiles_manifest">runfiles_manifest</a>
  </li>
  </ul>

      <h2 id="executable">executable</h2>
        <p><pre class="rule-signature"><a class="anchor" href="File.html">File</a> FilesToRunProvider.executable</pre></p>

    The main executable or None if it does not exist.

         May return <code>None</code>.

        <h2 id="runfiles_manifest">runfiles_manifest</h2>
        <p><pre class="rule-signature"><a class="anchor" href="File.html">File</a> FilesToRunProvider.runfiles_manifest</pre></p>

    The runfiles manifest or None if it does not exist.

         May return <code>None</code>.


</body>
</html>

<!-- {% endraw %} -->
