blob: 5f238b0a46da73ad760ce345a675fb73679abaa1 [file] [log] [blame]
// Copyright 2015 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <regex.h>
#include <stdio.h>
#include <stdlib.h>
#include <base/files/file_path.h>
#include <base/files/file_util.h>
#include <base/logging.h>
#include <brillo/flag_helper.h>
#include "debugd/src/constants.h"
namespace {
const char kUsageMessage[] =
"\n"
"Configures Chrome remote debugging on port 9222."
"\n";
bool IsConfigured() {
return base::PathExists(
base::FilePath(debugd::kDevFeaturesChromeRemoteDebuggingFlagPath));
}
bool ConfigureChromeRemoteDebugging() {
bool result = true;
if (IsConfigured()) {
VLOG(1) << "Chrome remote debugging is already on.";
} else {
// This is basically touching a new empty file. It's only checked for
// existence. The content is not used.
int bytes_written = base::WriteFile(
base::FilePath(debugd::kDevFeaturesChromeRemoteDebuggingFlagPath), "",
0);
if (bytes_written < 0) {
PLOG(WARNING) << "Failed to write Chrome remote debugging marker file.";
result = false;
}
}
return result;
}
} // namespace
int main(int argc, char** argv) {
DEFINE_bool(q, false,
"Query whether Chrome remote debugging has been configured");
brillo::FlagHelper::Init(argc, argv, kUsageMessage);
if (FLAGS_q) {
return IsConfigured() ? EXIT_SUCCESS : EXIT_FAILURE;
}
return ConfigureChromeRemoteDebugging() ? EXIT_SUCCESS : EXIT_FAILURE;
}