78 {
79 absl::SetProgramUsageMessage(
80 absl::StrCat(
"Sample usage:\n",
argv[0],
81 " --working_dir=<directory> --data_dir=<directory>"));
82
83 std::vector<char*>
args = absl::ParseCommandLine(argc,
argv);
84 absl::SetGlobalVLogLevel(absl::GetFlag(FLAGS_v));
85 absl::InitializeLog();
86 absl::SetStderrThreshold(absl::LogSeverity::kInfo);
87
88 std::optional<std::string> working_dir = absl::GetFlag(FLAGS_working_dir);
89 std::optional<std::string>
input = absl::GetFlag(FLAGS_input);
90 std::optional<std::string> data_dir = absl::GetFlag(FLAGS_data_dir);
91 std::optional<std::string> licenses_path = absl::GetFlag(FLAGS_licenses_path);
92 std::optional<std::string> include_filter =
93 absl::GetFlag(FLAGS_include_filter);
94 if (working_dir.has_value() && data_dir.has_value() &&
95 licenses_path.has_value()) {
96 std::ofstream licenses;
97 licenses.open(licenses_path.value());
98 if (licenses.bad()) {
99 std::cerr << "Unable to write to '" << licenses_path.value() << "'.";
100 return 1;
101 }
104 absl::GetFlag(FLAGS_treat_unmatched_comments_as_errors);
106 if (
input.has_value()) {
107 if (include_filter.has_value()) {
108 std::cerr << "`--input_filter` not supported with `--input`"
109 << std::endl;
110 }
111 fs::path full_path = fs::canonical(
input.value());
113 licenses, data_dir.value(), flags);
114 } else {
115 if (include_filter.has_value()) {
116 return Run(working_dir.value(), licenses, data_dir.value(),
117 include_filter.value(), flags);
118 } else {
120 data_dir.value(), flags);
121 }
122 }
123 }
124
125 if (!working_dir.has_value()) {
126 std::cerr << "Expected --working_dir flag." << std::endl;
127 }
128
129 if (!licenses_path.has_value()) {
130 std::cerr << "Expected --licenses_path flag." << std::endl;
131 }
132
133 if (!data_dir.has_value()) {
134 std::cerr << "Expected --data_dir flag." << std::endl;
135 }
136
137 return 1;
138}
static int FileRun(std::string_view working_dir, std::string_view full_path, std::ostream &licenses, std::string_view data_dir, const Flags &flags)
Run on a single file.
static std::vector< absl::Status > Run(std::string_view working_dir, std::ostream &licenses, const Data &data)
G_BEGIN_DECLS G_MODULE_EXPORT FlValue * args
bool treat_unmatched_comments_as_errors
std::optional< std::string > root_package_name