Line data Source code
1 : /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 : Copyright (c) 2012-2020 The plumed team 3 : (see the PEOPLE file at the root of the distribution for a list of names) 4 : 5 : See http://www.plumed.org for more information. 6 : 7 : This file is part of plumed, version 2. 8 : 9 : plumed is free software: you can redistribute it and/or modify 10 : it under the terms of the GNU Lesser General Public License as published by 11 : the Free Software Foundation, either version 3 of the License, or 12 : (at your option) any later version. 13 : 14 : plumed is distributed in the hope that it will be useful, 15 : but WITHOUT ANY WARRANTY; without even the implied warranty of 16 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 : GNU Lesser General Public License for more details. 18 : 19 : You should have received a copy of the GNU Lesser General Public License 20 : along with plumed. If not, see <http://www.gnu.org/licenses/>. 21 : +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ 22 : #include "CLTool.h" 23 : #include "CLToolRegister.h" 24 : #include "tools/Tools.h" 25 : #include "config/Config.h" 26 : #include "core/ActionRegister.h" 27 : #include <cstdio> 28 : #include <string> 29 : #include <vector> 30 : #include <iostream> 31 : 32 : using namespace std; 33 : 34 : namespace PLMD { 35 : namespace cltools { 36 : 37 : //+PLUMEDOC TOOLS manual 38 : /* 39 : manual is a tool that you can use to construct the manual page for 40 : a particular action 41 : 42 : The manual constructed by this action is in html. In all probability you will never need to use this 43 : tool. However, it is used within the scripts that generate the html manual for PLUMED. If you need to use this 44 : tool outside those scripts the input is specified using the following command line arguments. 45 : 46 : \par Examples 47 : 48 : The following generates the html manual for the action DISTANCE. 49 : \verbatim 50 : plumed manual --action DISTANCE 51 : \endverbatim 52 : 53 : 54 : */ 55 : //+ENDPLUMEDOC 56 : 57 254 : class Manual: 58 : public CLTool 59 : { 60 : public: 61 : static void registerKeywords( Keywords& keys ); 62 : explicit Manual(const CLToolOptions& co ); 63 : int main(FILE* in, FILE*out,Communicator& pc); 64 0 : string description()const { 65 0 : return "print out a description of the keywords for an action in html"; 66 : } 67 : }; 68 : 69 7864 : PLUMED_REGISTER_CLTOOL(Manual,"manual") 70 : 71 1839 : void Manual::registerKeywords( Keywords& keys ) { 72 1839 : CLTool::registerKeywords( keys ); 73 7356 : keys.add("compulsory","--action","print the manual for this particular action"); 74 5517 : keys.addFlag("--vim",false,"print the keywords in vim syntax"); 75 5517 : keys.addFlag("--spelling",false,"print a list of the keywords and component names for the spell checker"); 76 1839 : } 77 : 78 254 : Manual::Manual(const CLToolOptions& co ): 79 254 : CLTool(co) 80 : { 81 254 : inputdata=commandline; 82 254 : } 83 : 84 254 : int Manual::main(FILE* in, FILE*out,Communicator& pc) { 85 : 86 : std::string action; 87 508 : if( !parse("--action",action) ) return 1; 88 254 : std::cerr<<"LIST OF DOCUMENTED ACTIONS:\n"; 89 254 : std::cerr<<actionRegister()<<"\n"; 90 254 : std::cerr<<"LIST OF DOCUMENTED COMMAND LINE TOOLS:\n"; 91 254 : std::cerr<<cltoolRegister()<<"\n\n"; 92 508 : bool vimout; parseFlag("--vim",vimout); 93 508 : bool spellout; parseFlag("--spelling",spellout); 94 254 : if( vimout && spellout ) error("can only use one of --vim and --spelling at a time"); 95 254 : if( !actionRegister().printManual(action,vimout,spellout) && !cltoolRegister().printManual(action,spellout) ) { 96 1 : fprintf(stderr,"specified action is not registered\n"); 97 : return 1; 98 : } 99 : 100 : return 0; 101 : } 102 : 103 : } // End of namespace 104 5517 : }