99
1010using bazel::tools::cpp::runfiles::Runfiles;
1111
12+ #define DEBUG true
13+ #define DEBUG_LOG (msg ) \
14+ if (DEBUG) std::cout << msg << std::endl;
15+
1216constexpr char kWorkspaceName [] = " rules_devserver" ;
1317constexpr int kDefaultPort = 8080 ;
1418constexpr 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
2027std::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