diff options
-rw-r--r-- | src/main.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/main.cpp b/src/main.cpp index 7f7a68be..6319e174 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -128,6 +128,7 @@ struct ProgramParams const char *crate_path = "."; ::AST::Crate::Type crate_type = ::AST::Crate::Type::Unknown; + ::std::string crate_name; ::std::set< ::std::string> features; @@ -215,7 +216,12 @@ int main(int argc, char *argv[]) crate_type = ::AST::Crate::Type::Executable; } crate.m_crate_type = crate_type; - auto crate_name = crate.m_crate_name; + + auto crate_name = params.crate_name; + if( crate_name == "" ) + { + crate_name = crate.m_crate_name; + } if( crate_name == "" ) { auto s = params.infile.find_last_of('/'); if( s == ::std::string::npos ) @@ -243,8 +249,8 @@ int main(int argc, char *argv[]) break; } } - crate.m_crate_name = crate_name; } + crate.m_crate_name = crate_name; if( params.outfile == "" ) { switch( crate.m_crate_type ) @@ -549,6 +555,14 @@ ProgramParams::ProgramParams(int argc, char *argv[]) if( this->output_dir.back() != '/' ) this->output_dir += '/'; } + else if( strcmp(arg, "--crate-name") == 0 ) { + if( i == argc - 1 ) { + ::std::cerr << "Flag --crate-name requires an argument" << ::std::endl; + exit(1); + } + const char* name_str = argv[++i]; + this->crate_name = name_str; + } else if( strcmp(arg, "--crate-type") == 0 ) { if( i == argc - 1 ) { ::std::cerr << "Flag --crate-type requires an argument" << ::std::endl; |