diff options
author | Mike Dirolf <mike@10gen.com> | 2009-09-01 16:27:08 -0400 |
---|---|---|
committer | Mike Dirolf <mike@10gen.com> | 2009-09-01 16:27:08 -0400 |
commit | 71f76d998c2068a0bba2704c23fd085b4a6636bc (patch) | |
tree | 3543be5713ecc564d90d349843b294bc441139f7 | |
parent | 0bbc36fae38cfb77b2de3ced4615e91bc7d564ae (diff) | |
download | mongo-71f76d998c2068a0bba2704c23fd085b4a6636bc.tar.gz |
add hidden_options to Tool.cpp - better help message for mongofiles
-rw-r--r-- | tools/Tool.cpp | 13 | ||||
-rw-r--r-- | tools/Tool.h | 4 | ||||
-rw-r--r-- | tools/files.cpp | 12 |
3 files changed, 23 insertions, 6 deletions
diff --git a/tools/Tool.cpp b/tools/Tool.cpp index a70c427bd4d..851488cbfb4 100644 --- a/tools/Tool.cpp +++ b/tools/Tool.cpp @@ -16,7 +16,7 @@ namespace po = boost::program_options; mongo::Tool::Tool( string name , string defaultDB , string defaultCollection ) : _name( name ) , _db( defaultDB ) , _coll( defaultCollection ) , _conn(0), _paired(false) { - _options = new po::options_description( name + " options" ); + _options = new po::options_description( "options" ); _options->add_options() ("help","produce help message") ("host,h",po::value<string>(), "mongo host to connect to" ) @@ -28,10 +28,12 @@ mongo::Tool::Tool( string name , string defaultDB , string defaultCollection ) : ("verbose,v", "be more verbose (include multiple times for more verbosity e.g. -vvvvv)") ; + _hidden_options = new po::options_description( name + " hidden options" ); } mongo::Tool::~Tool(){ delete( _options ); + delete( _hidden_options ); if ( _conn ) delete _conn; } @@ -40,16 +42,21 @@ void mongo::Tool::printExtraHelp( ostream & out ){ } void mongo::Tool::printHelp(ostream &out) { - _options->print(out); printExtraHelp(out); + _options->print(out); } int mongo::Tool::main( int argc , char ** argv ){ boost::filesystem::path::default_name_check( boost::filesystem::no_check ); + _name = argv[0]; + try { + po::options_description all_options("all options"); + all_options.add(*_options).add(*_hidden_options); + po::store( po::command_line_parser( argc , argv ). - options( *_options ). + options(all_options). positional( _positonalOptions ).run() , _params ); po::notify( _params ); diff --git a/tools/Tool.h b/tools/Tool.h index 7ba4027ee08..a398ed5a6d8 100644 --- a/tools/Tool.h +++ b/tools/Tool.h @@ -27,6 +27,9 @@ namespace mongo { boost::program_options::options_description_easy_init add_options(){ return _options->add_options(); } + boost::program_options::options_description_easy_init add_hidden_options(){ + return _hidden_options->add_options(); + } void addPositionArg( const char * name , int pos ){ _positonalOptions.add( name , pos ); } @@ -74,6 +77,7 @@ namespace mongo { bool _paired; boost::program_options::options_description * _options; + boost::program_options::options_description * _hidden_options; boost::program_options::positional_options_description _positonalOptions; boost::program_options::variables_map _params; diff --git a/tools/files.cpp b/tools/files.cpp index 705ea2977c2..6a81cece337 100644 --- a/tools/files.cpp +++ b/tools/files.cpp @@ -34,7 +34,7 @@ namespace po = boost::program_options; class Files : public Tool { public: Files() : Tool( "files" ){ - add_options() + add_hidden_options() ( "command" , po::value<string>() , "command (list|search|put|get)" ) ( "file" , po::value<string>() , "filename for get|put" ) ; @@ -43,8 +43,14 @@ public: } virtual void printExtraHelp( ostream & out ){ - out << "\t list - list all files. takes an optional filename. the file has to start with the filename" << endl; - out << "\t search - search all files for something that contains the string" << endl; + out << "usage: " << _name << " [options] command [filename]" << endl; + out << "command:" << endl; + out << " one of (list|search|put|get)" << endl; + out << " list - list all files. takes an optional filename. " << endl; + out << " listed files must start with the filename." << endl; + out << " search - search all files for something that contains the string" << endl; + out << " put - add a file" << endl; + out << " get - get a file" << endl; } void display( GridFS * grid , BSONObj obj ){ |