Line data Source code
1 : /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 : Copyright (c) 2012-2019 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 plumed's html manual. 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 224 : 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 6676 : PLUMED_REGISTER_CLTOOL(Manual,"manual")
70 :
71 1613 : void Manual::registerKeywords( Keywords& keys ) {
72 1613 : CLTool::registerKeywords( keys );
73 6452 : keys.add("compulsory","--action","print the manual for this particular action");
74 4839 : keys.addFlag("--vim",false,"print the keywords in vim syntax");
75 1613 : }
76 :
77 224 : Manual::Manual(const CLToolOptions& co ):
78 224 : CLTool(co)
79 : {
80 224 : inputdata=commandline;
81 224 : }
82 :
83 224 : int Manual::main(FILE* in, FILE*out,Communicator& pc) {
84 :
85 : std::string action;
86 448 : if( !parse("--action",action) ) return 1;
87 224 : std::cerr<<"LIST OF DOCUMENTED ACTIONS:\n";
88 224 : std::cerr<<actionRegister()<<"\n";
89 224 : std::cerr<<"LIST OF DOCUMENTED COMMAND LINE TOOLS:\n";
90 224 : std::cerr<<cltoolRegister()<<"\n\n";
91 448 : bool vimout; parseFlag("--vim",vimout);
92 224 : if( !actionRegister().printManual(action,vimout) && !cltoolRegister().printManual(action) ) {
93 1 : fprintf(stderr,"specified action is not registered\n");
94 : return 1;
95 : }
96 :
97 : return 0;
98 : }
99 :
100 : } // End of namespace
101 4839 : }
|