Line data Source code
1 : /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 : Copyright (c) 2012-2023 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 <iostream> 30 : 31 : namespace PLMD { 32 : namespace cltools { 33 : 34 : //+PLUMEDOC TOOLS manual 35 : /* 36 : manual is a tool that you can use to construct the manual page for 37 : a particular action 38 : 39 : The manual constructed by this action is in html. In all probability you will never need to use this 40 : tool. However, it is used within the scripts that generate the html manual for PLUMED. If you need to use this 41 : tool outside those scripts the input is specified using the following command line arguments. 42 : 43 : \par Examples 44 : 45 : The following generates the html manual for the action DISTANCE. 46 : \verbatim 47 : plumed manual --action DISTANCE 48 : \endverbatim 49 : 50 : 51 : */ 52 : //+ENDPLUMEDOC 53 : 54 : class Manual: 55 : public CLTool 56 : { 57 : public: 58 : static void registerKeywords( Keywords& keys ); 59 : explicit Manual(const CLToolOptions& co ); 60 : int main(FILE* in, FILE*out,Communicator& pc) override; 61 4 : std::string description()const override { 62 4 : return "print out a description of the keywords for an action in html"; 63 : } 64 : }; 65 : 66 10711 : PLUMED_REGISTER_CLTOOL(Manual,"manual") 67 : 68 3473 : void Manual::registerKeywords( Keywords& keys ) { 69 3473 : CLTool::registerKeywords( keys ); 70 6946 : keys.add("compulsory","--action","print the manual for this particular action"); 71 6946 : keys.addFlag("--vim",false,"print the keywords in vim syntax"); 72 6946 : keys.addFlag("--spelling",false,"print a list of the keywords and component names for the spell checker"); 73 3473 : } 74 : 75 292 : Manual::Manual(const CLToolOptions& co ): 76 292 : CLTool(co) 77 : { 78 292 : inputdata=commandline; 79 292 : } 80 : 81 288 : int Manual::main(FILE* in, FILE*out,Communicator& pc) { 82 : 83 : std::string action; 84 576 : if( !parse("--action",action) ) return 1; 85 288 : std::cerr<<"LIST OF DOCUMENTED ACTIONS:\n"; 86 288 : std::cerr<<actionRegister()<<"\n"; 87 288 : std::cerr<<"LIST OF DOCUMENTED COMMAND LINE TOOLS:\n"; 88 288 : std::cerr<<cltoolRegister()<<"\n\n"; 89 288 : bool vimout; parseFlag("--vim",vimout); 90 288 : bool spellout; parseFlag("--spelling",spellout); 91 288 : if( vimout && spellout ) error("can only use one of --vim and --spelling at a time"); 92 288 : if( !actionRegister().printManual(action,vimout,spellout) && !cltoolRegister().printManual(action,spellout) ) { 93 1 : std::fprintf(stderr,"specified action is not registered\n"); 94 : return 1; 95 : } 96 : 97 : return 0; 98 : } 99 : 100 : } // End of namespace 101 : }