X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcli%2Fbuildercli.h;fp=source%2Fcli%2Fbuildercli.h;h=f4b2ad723d13006ffecdce81d6ce2c491e591be6;hb=c8e829c219c65ff8e93b6c7b66212ff0876441c5;hp=0000000000000000000000000000000000000000;hpb=e2c9c3fffcc61a0c102ccf6a7924e2de709092ad;p=builder.git diff --git a/source/cli/buildercli.h b/source/cli/buildercli.h new file mode 100644 index 0000000..f4b2ad7 --- /dev/null +++ b/source/cli/buildercli.h @@ -0,0 +1,49 @@ +#ifndef BUILDERCLI_H_ +#define BUILDERCLI_H_ + +#include +#include + +class Analyzer; + +/** +Provides a command-line interface for Builder. +*/ +class BuilderCLI: public Msp::RegisteredApplication +{ +private: + std::vector cmdline_targets; + Config::InputOptions cmdline_options; + Msp::FS::Path cwd; + + Builder builder; + Logger logger; + Analyzer *analyzer = 0; + bool build = false; + unsigned clean = 0; + bool dry_run = false; + bool help = false; + std::string helpmsg; + bool show_progress = false; + std::string build_file = "Build"; + unsigned jobs = 1; + std::vector what_if; + bool conf_all = false; + bool conf_only = false; + bool build_all = false; + bool create_makefile = false; + +public: + BuilderCLI(int, char **); + ~BuilderCLI(); + + int main() override; + +private: + bool prepare_build(); + Target *resolve_target(const std::string &); + + void package_help(); +}; + +#endif