Skip to content

Commit 06fc1a7

Browse files
committed
Clean up argument parser
1 parent 7105ff6 commit 06fc1a7

File tree

1 file changed

+30
-13
lines changed

1 file changed

+30
-13
lines changed

devserver/main.cc

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,20 @@
99

1010
using bazel::tools::cpp::runfiles::Runfiles;
1111

12+
#define DEBUG true
13+
#define DEBUG_LOG(msg) \
14+
if (DEBUG) std::cout << msg << std::endl;
15+
1216
constexpr char kWorkspaceName[] = "rules_devserver";
1317
constexpr int kDefaultPort = 8080;
1418
constexpr char kHost[] = "localhost";
1519

16-
#define DEBUG true
17-
#define DEBUG_LOG(msg) \
18-
if (DEBUG) std::cout << msg << std::endl;
20+
struct Arguments {
21+
int32_t port;
22+
std::string static_file;
23+
std::string workspace_name;
24+
std::string package_name;
25+
};
1926

2027
std::string GetFileContents(const std::string &path) {
2128
std::ifstream ifs(path);
@@ -24,15 +31,8 @@ std::string GetFileContents(const std::string &path) {
2431
return content;
2532
}
2633

27-
int main(int argc, char **argv) {
28-
httplib::Server svr;
29-
34+
Arguments ParseArguments(int argc, char **argv) {
3035
std::string workspace_name = kWorkspaceName;
31-
32-
std::string runfiles_error;
33-
std::unique_ptr<Runfiles> runfiles(
34-
Runfiles::Create(argv[0], BAZEL_CURRENT_REPOSITORY, &runfiles_error));
35-
3636
args::ArgumentParser parser("This is a test program.",
3737
"This goes after the options.");
3838
args::ValueFlag<int32_t> port(parser, "port", "Server port", {"port"},
@@ -66,11 +66,28 @@ int main(int argc, char **argv) {
6666
DEBUG_LOG("package_name: " << args::get(package_name));
6767
}
6868

69+
return Arguments{args::get(port), args::get(static_file), workspace_name,
70+
args::get(package_name)};
71+
}
72+
73+
int main(int argc, char **argv) {
74+
httplib::Server svr;
75+
76+
std::string runfiles_error;
77+
std::unique_ptr<Runfiles> runfiles(
78+
Runfiles::Create(argv[0], BAZEL_CURRENT_REPOSITORY, &runfiles_error));
79+
80+
const Arguments args = ParseArguments(argc, argv);
81+
const int32_t port = args.port;
82+
const std::string package_name = args.package_name;
83+
const std::string static_file = args.static_file;
84+
const std::string workspace_name = args.workspace_name;
85+
6986
const std::string workspace_root = runfiles->Rlocation(workspace_name + "/");
7087
DEBUG_LOG("workspace_root: " << workspace_root << "\n\n");
7188

7289
const std::string static_file_path =
73-
workspace_root + args::get(package_name) + "/" + args::get(static_file);
90+
workspace_root + package_name + "/" + static_file;
7491
DEBUG_LOG("static_file_path: " << static_file_path);
7592

7693
std::string static_file_contents;
@@ -100,5 +117,5 @@ int main(int argc, char **argv) {
100117
res.set_content(devserver_loader_contents, "text/javascript");
101118
});
102119

103-
svr.listen(kHost, args::get(port));
120+
svr.listen(kHost, port);
104121
}

0 commit comments

Comments
 (0)