1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "cloud_print/gcp20/prototype/gcp20_switches.h"
6
7#include "base/files/file_path.h"
8#include "base/path_service.h"
9
10namespace switches {
11
12const char kDisableConfirmation[] = "disable-confirmation";
13const char kDisableIpv4[] = "disable-ipv4";
14const char kDisableIpv6[] = "disable-ipv6";
15const char kDisableMethodCheck[] = "disable-method-check";
16const char kDisableXTocken[] = "disable-x-token";
17const char kDomainName[] = "domain-name";
18const char kExtendedResponce[] = "extended-response";
19const char kHelpShort[] = "h";
20const char kHelp[] = "help";
21const char kHttpPort[] = "http-port";
22const char kNoAnnouncement[] = "no-announcement";
23const char kServiceName[] = "service-name";
24const char kSimulatePrintingErrors[] = "simulate-printing-errors";
25const char kStatePath[] = "state-path";
26const char kTtl[] = "ttl";
27const char kUnicastRespond[] = "unicast-respond";
28
29const struct {
30  const char* const name;
31  const char* const description;
32  const char* const arg;
33} kHelpStrings[] = {
34  {kDisableConfirmation, "disables confirmation of registration", NULL},
35  {kDisableIpv4, "disables IPv4 support", NULL},
36  {kDisableIpv6, "disables IPv6 support", NULL},
37  {kDisableMethodCheck, "disables HTTP method checking (POST, GET)", NULL},
38  {kDisableXTocken, "disables checking of X-Privet-Token HTTP header", NULL},
39  {kNoAnnouncement, "disables DNS announcements", NULL},
40  {kExtendedResponce, "responds to PTR with additional records", NULL},
41  {kSimulatePrintingErrors, "simulates some errors for local printing", NULL},
42  {kUnicastRespond,
43       "DNS responses will be sent in unicast instead of multicast", NULL},
44  {kDomainName, "sets, should ends with '.local'", "DOMAIN"},
45  {kHttpPort, "sets port for HTTP server", "PORT"},
46  {kServiceName, "sets DNS service name", "SERVICE"},
47  {kStatePath, "sets path to file with registration state", "PATH"},
48  {kTtl, "sets TTL for DNS announcements", "TTL"},
49};
50
51void PrintUsage() {
52  base::FilePath exe;
53  PathService::Get(base::FILE_EXE, &exe);
54  printf("usage: %s [OPTION]...\n\n", exe.BaseName().MaybeAsASCII().c_str());
55  for (size_t i = 0; i < arraysize(kHelpStrings); ++i) {
56    std::string name = kHelpStrings[i].name;
57    if (kHelpStrings[i].arg) {
58      name += '=';
59      name += kHelpStrings[i].arg;
60    }
61    name.resize(27, ' ');
62    printf("  --%s%s\n", name.c_str(), kHelpStrings[i].description);
63  }
64  printf("\n  WARNING: mDNS probing is not implemented\n");
65}
66
67}  // namespace switches
68