| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <algorithm> | 5 #include <algorithm> |
| 6 #include <set> | 6 #include <set> |
| 7 | 7 |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "tools/gn/commands.h" | 9 #include "tools/gn/commands.h" |
| 10 #include "tools/gn/label_pattern.h" | 10 #include "tools/gn/label_pattern.h" |
| 11 #include "tools/gn/setup.h" | 11 #include "tools/gn/setup.h" |
| 12 #include "tools/gn/standard_out.h" | 12 #include "tools/gn/standard_out.h" |
| 13 #include "tools/gn/switches.h" | 13 #include "tools/gn/switches.h" |
| 14 #include "tools/gn/target.h" | 14 #include "tools/gn/target.h" |
| 15 | 15 |
| 16 namespace commands { | 16 namespace commands { |
| 17 | 17 |
| 18 const char kLs[] = "ls"; | 18 const char kLs[] = "ls"; |
| 19 const char kLs_HelpShort[] = | 19 const char kLs_HelpShort[] = |
| 20 "ls: List matching targets."; | 20 "ls: List matching targets."; |
| 21 const char kLs_Help[] = | 21 const char kLs_Help[] = |
| 22 "gn ls <out_dir> [<label_pattern>] [--all-toolchains] [--as=...]\n" | 22 R"(gn ls <out_dir> [<label_pattern>] [--all-toolchains] [--as=...] |
| 23 " [--type=...] [--testonly=...]\n" | 23 [--type=...] [--testonly=...] |
| 24 "\n" | 24 |
| 25 " Lists all targets matching the given pattern for the given build\n" | 25 Lists all targets matching the given pattern for the given build directory. |
| 26 " directory. By default, only targets in the default toolchain will\n" | 26 By default, only targets in the default toolchain will be matched unless a |
| 27 " be matched unless a toolchain is explicitly supplied.\n" | 27 toolchain is explicitly supplied. |
| 28 "\n" | 28 |
| 29 " If the label pattern is unspecified, list all targets. The label\n" | 29 If the label pattern is unspecified, list all targets. The label pattern is |
| 30 " pattern is not a general regular expression (see\n" | 30 not a general regular expression (see "gn help label_pattern"). If you need |
| 31 " \"gn help label_pattern\"). If you need more complex expressions,\n" | 31 more complex expressions, pipe the result through grep. |
| 32 " pipe the result through grep.\n" | 32 |
| 33 "\n" | 33 Options |
| 34 "Options\n" | 34 |
| 35 "\n" | 35 )" |
| 36 TARGET_PRINTING_MODE_COMMAND_LINE_HELP | 36 TARGET_PRINTING_MODE_COMMAND_LINE_HELP |
| 37 "\n" | 37 "\n" |
| 38 ALL_TOOLCHAINS_SWITCH_HELP | 38 ALL_TOOLCHAINS_SWITCH_HELP |
| 39 "\n" | 39 "\n" |
| 40 TARGET_TESTONLY_FILTER_COMMAND_LINE_HELP | 40 TARGET_TESTONLY_FILTER_COMMAND_LINE_HELP |
| 41 "\n" | 41 "\n" |
| 42 TARGET_TYPE_FILTER_COMMAND_LINE_HELP | 42 TARGET_TYPE_FILTER_COMMAND_LINE_HELP |
| 43 "\n" | 43 R"( |
| 44 "Examples\n" | 44 Examples |
| 45 "\n" | 45 |
| 46 " gn ls out/Debug\n" | 46 gn ls out/Debug |
| 47 " Lists all targets in the default toolchain.\n" | 47 Lists all targets in the default toolchain. |
| 48 "\n" | 48 |
| 49 " gn ls out/Debug \"//base/*\"\n" | 49 gn ls out/Debug "//base/*" |
| 50 " Lists all targets in the directory base and all subdirectories.\n" | 50 Lists all targets in the directory base and all subdirectories. |
| 51 "\n" | 51 |
| 52 " gn ls out/Debug \"//base:*\"\n" | 52 gn ls out/Debug "//base:*" |
| 53 " Lists all targets defined in //base/BUILD.gn.\n" | 53 Lists all targets defined in //base/BUILD.gn. |
| 54 "\n" | 54 |
| 55 " gn ls out/Debug //base --as=output\n" | 55 gn ls out/Debug //base --as=output |
| 56 " Lists the build output file for //base:base\n" | 56 Lists the build output file for //base:base |
| 57 "\n" | 57 |
| 58 " gn ls out/Debug --type=executable\n" | 58 gn ls out/Debug --type=executable |
| 59 " Lists all executables produced by the build.\n" | 59 Lists all executables produced by the build. |
| 60 "\n" | 60 |
| 61 " gn ls out/Debug \"//base/*\" --as=output | xargs ninja -C out/Debug\n" | 61 gn ls out/Debug "//base/*" --as=output | xargs ninja -C out/Debug |
| 62 " Builds all targets in //base and all subdirectories.\n" | 62 Builds all targets in //base and all subdirectories. |
| 63 "\n" | 63 |
| 64 " gn ls out/Debug //base --all-toolchains\n" | 64 gn ls out/Debug //base --all-toolchains |
| 65 " Lists all variants of the target //base:base (it may be referenced\n" | 65 Lists all variants of the target //base:base (it may be referenced |
| 66 " in multiple toolchains).\n"; | 66 in multiple toolchains). |
| 67 )"; |
| 67 | 68 |
| 68 int RunLs(const std::vector<std::string>& args) { | 69 int RunLs(const std::vector<std::string>& args) { |
| 69 if (args.size() == 0) { | 70 if (args.size() == 0) { |
| 70 Err(Location(), "You're holding it wrong.", | 71 Err(Location(), "You're holding it wrong.", |
| 71 "Usage: \"gn ls <build dir> [<label_pattern>]*\"").PrintToStdout(); | 72 "Usage: \"gn ls <build dir> [<label_pattern>]*\"").PrintToStdout(); |
| 72 return 1; | 73 return 1; |
| 73 } | 74 } |
| 74 | 75 |
| 75 Setup* setup = new Setup; | 76 Setup* setup = new Setup; |
| 76 setup->build_settings().set_check_for_bad_items(false); | 77 setup->build_settings().set_check_for_bad_items(false); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 103 for (auto* target : setup->builder().GetAllResolvedTargets()) { | 104 for (auto* target : setup->builder().GetAllResolvedTargets()) { |
| 104 if (target->settings()->is_default()) | 105 if (target->settings()->is_default()) |
| 105 matches.push_back(target); | 106 matches.push_back(target); |
| 106 } | 107 } |
| 107 } | 108 } |
| 108 FilterAndPrintTargets(false, &matches); | 109 FilterAndPrintTargets(false, &matches); |
| 109 return 0; | 110 return 0; |
| 110 } | 111 } |
| 111 | 112 |
| 112 } // namespace commands | 113 } // namespace commands |
| OLD | NEW |