{
  "name": "bazel",
  "description": "Bazel the build system!",
  "subcommands": [
    {
      "name": "run",
      "description": "Runs the specified target",
      "args": [
        {
          "name": "BUILD file"
        }
      ]
    },
    {
      "name": "test",
      "description": "Builds and runs the specified test targets",
      "args": [
        {
          "name": "BUILD file"
        }
      ]
    },
    {
      "name": "build",
      "description": "Builds the specified targets",
      "args": [
        {
          "name": "BUILD file"
        }
      ]
    }
  ],
  "options": [
    {
      "names": [
        "--autodetect_server_javabase"
      ],
      "description": "Back to the local JDK for running the bazel server and instead exits"
    },
    {
      "names": [
        "--noautodetect_server_javabase"
      ],
      "description": "Does not fall back to the local JDK for running the bazel server and instead exits"
    },
    {
      "names": [
        "--batch"
      ],
      "description": "Run as just a client process without a server"
    },
    {
      "names": [
        "--nobatch"
      ],
      "description": "Run with a server"
    },
    {
      "names": [
        "--batch_cpu_scheduling"
      ],
      "description": "Only on Linux; use 'batch' CPU scheduling for Bazel"
    },
    {
      "names": [
        "--nobatch_cpu_scheduling"
      ],
      "description": "Only on Linux; Bazel does not perform a system call"
    },
    {
      "names": [
        "--bazelrc"
      ],
      "description": "The location of the user .bazelrc file containing default values of Bazel options",
      "takes_arg": true,
      "arg": {
        "name": "bazelrc path",
        "template": "filepaths"
      }
    },
    {
      "names": [
        "--block_for_lock"
      ],
      "description": "Wait for a running command to complete"
    },
    {
      "names": [
        "--noblock_for_lock"
      ],
      "description": "Bazel does not wait for a running command to complete, but instead exits immediately"
    },
    {
      "names": [
        "--client_debug"
      ],
      "description": "Log debug information from the client to stderr. Changing this option will not cause the server to restart"
    },
    {
      "names": [
        "--noclient_debug"
      ],
      "description": "Don't log debug information from the client to stderr"
    },
    {
      "names": [
        "--connect_timeout_secs"
      ],
      "description": "The amount of time the client waits for each attempt to connect to the server",
      "takes_arg": true,
      "arg": {
        "name": "time"
      }
    },
    {
      "names": [
        "--expand_configs_in_place"
      ],
      "description": "Changed the expansion of --config flags to be done in-place"
    },
    {
      "names": [
        "--noexpand_configs_in_place"
      ],
      "description": "--config flags in a fixed point expansion between normal rc options and command-line specified options"
    },
    {
      "names": [
        "--failure_detail_out"
      ],
      "description": "Specifies a location to write a failure_detail protobuf message if the server experiences a failure and cannot report it via gRPC, as normal. Otherwise, the location will be ${OUTPUT_BASE}/failure_det",
      "takes_arg": true,
      "arg": {
        "name": "path",
        "template": "filepaths"
      }
    },
    {
      "names": [
        "--home_rc"
      ],
      "description": "Look for the home bazelrc file at $HOME/.bazelrc"
    },
    {
      "names": [
        "--nohome_rc"
      ],
      "description": "Don't look for the home bazelrc file at $HOME/.bazelrc"
    },
    {
      "names": [
        "--idle_server_tasks"
      ],
      "description": "Run System.gc() when the server is idle"
    },
    {
      "names": [
        "--noidle_server_tasks"
      ],
      "description": "Don't run System.gc() when the server is idle"
    },
    {
      "names": [
        "--ignore_all_rc_files"
      ],
      "description": "Disables all rc files, regardless of the values of other rc-modifying flags, even if these flags come later in the list of startup options"
    },
    {
      "names": [
        "--noignore_all_rc_files"
      ],
      "description": "Enables all rc files"
    },
    {
      "names": [
        "--io_nice_level"
      ],
      "description": "Only on Linux; set a level from 0-7 for best-effort IO scheduling using the sys_ioprio_set system call. 0 is highest priority, 7 is lowest",
      "takes_arg": true,
      "arg": {
        "name": "io-level",
        "suggestions": [
          "0",
          "1",
          "2",
          "3",
          "4",
          "5",
          "6",
          "7"
        ]
      }
    },
    {
      "names": [
        "--local_startup_timeout_secs"
      ],
      "description": "The maximum amount of time the client waits to connect to the server",
      "takes_arg": true,
      "arg": {
        "name": "seconds"
      }
    },
    {
      "names": [
        "--macos_qos_class"
      ],
      "description": "Sets the QoS service class of the bazel server when running on macOS",
      "takes_arg": true,
      "arg": {
        "name": "QoS service class"
      }
    },
    {
      "names": [
        "--max_idle_secs"
      ],
      "description": "The number of seconds the build server will wait idling before shutting down",
      "takes_arg": true,
      "arg": {
        "name": "seconds"
      }
    },
    {
      "names": [
        "--output_base"
      ],
      "description": "Specifies the output location to which all build output will be written",
      "takes_arg": true,
      "arg": {
        "name": "Path",
        "template": "filepaths"
      }
    },
    {
      "names": [
        "--output_base_root"
      ],
      "description": "The user-specific directory beneath which all build outputs are written",
      "takes_arg": true,
      "arg": {
        "name": "Path",
        "template": "filepaths"
      }
    },
    {
      "names": [
        "--preemptible"
      ],
      "description": "If true, the command can be preempted if another command is started"
    },
    {
      "names": [
        "--nopreemptible"
      ],
      "description": "If true, the command can be preempted if another command is started"
    },
    {
      "names": [
        "--server_jvm_out"
      ],
      "description": "The location to write the server's JVM's output",
      "takes_arg": true,
      "arg": {
        "name": "Path",
        "template": "filepaths"
      }
    },
    {
      "names": [
        "--shutdown_on_low_sys_mem"
      ],
      "description": "Linux only. If max_idle_secs is set and the build server has been idle for a while, shut down the server when the system is low on free RAM"
    },
    {
      "names": [
        "--noshutdown_on_low_sys_mem"
      ],
      "description": "Linux only. Don't shut down the server when the system is low on free RAM"
    },
    {
      "names": [
        "--system_rc"
      ],
      "description": "Look for the system-wide bazelrc"
    },
    {
      "names": [
        "--nosystem_rc"
      ],
      "description": "Don't look for the system-wide bazelrc"
    },
    {
      "names": [
        "--unlimit_coredumps"
      ],
      "description": "Raises the soft coredump limit to the hard limit to make coredumps of the server (including the JVM) and the client possible under common conditions"
    },
    {
      "names": [
        "--nounlimit_coredumps"
      ],
      "description": "Don't raise the soft coredump limit to the hard limit to make coredumps of the server (including the JVM) and the client possible under common conditions"
    },
    {
      "names": [
        "--watchfs"
      ],
      "description": "Use the operating system's file watch service for local changes instead of scanning every file for a change"
    },
    {
      "names": [
        "--nowatchfs"
      ],
      "description": "Scan every file for a change"
    },
    {
      "names": [
        "--windows_enable_symlinks"
      ],
      "description": "Real symbolic links will be created on Windows instead of file copying"
    },
    {
      "names": [
        "--nowindows_enable_symlinks"
      ],
      "description": "Real symbolic links will be created via file copying"
    },
    {
      "names": [
        "--workspace_rc"
      ],
      "description": "Look for the workspace bazelrc file at $workspace/.bazelrc"
    },
    {
      "names": [
        "--noworkspace_rc"
      ],
      "description": "Don't look for the workspace bazelrc file at $workspace/.bazelrc"
    }
  ]
}
