source: trunk/bin/Parameter.cc @ 83

Last change on this file since 83 was 83, checked in by Jari Häkkinen, 16 years ago

Fixed ticket:21 version information is taken from configure.ac.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 3.0 KB
Line 
1// $Id: Parameter.cc 83 2006-03-13 20:45:26Z jari $
2
3#include "Parameter.h"
4#include <config.h> // this header file is created by configure
5
6#include <iostream>
7#include <stdexcept>
8#include <string>
9
10namespace theplu {
11namespace svnstat {
12
13  Parameter::Parameter(const int argc,const char *argv[])
14  {
15    defaults();
16    for (int i=1; i<argc; i++) {
17      bool ok=false;
18      std::string myargv(argv[i]);
19      if (myargv=="-f" || myargv=="--force"){
20          force_=true;
21          ok=true;
22      }
23      else if (myargv=="-h" || myargv=="--help"){
24        help();
25        exit(0);      // always exit after printing help
26      }
27      else if (myargv=="-r" || myargv=="--root"){
28        if (++i<argc){
29          root_= std::string(argv[i]);
30          ok=true;
31        }
32      }
33      else if (myargv=="-rev" || myargv=="--revisions") {
34          revisions_=true;
35          ok=true;
36      }
37      else if (myargv=="-t" || myargv=="--target"){
38        if (++i<argc){
39          targetdir_= std::string(argv[i]);
40          ok=true;
41        }
42      }
43      else if (myargv=="-v" || myargv=="--verbose"){
44          verbose_=true;
45          ok=true;
46      }
47      else if (myargv=="--version"){
48          version();
49          exit(0);
50      }
51
52      if (!ok)
53        throw std::runtime_error("svnstat: invalid option: " + myargv +
54                                 "\nType 'svnstat --help' for usage.");
55    }
56
57    analyse();
58  }
59
60
61  void Parameter::analyse(void)
62  {
63    // should check that root is a directory
64  }
65
66
67  void Parameter::defaults(void)
68  {
69    force_=false;
70    revisions_=false;
71    root_=".";
72    targetdir_="svnstat_output";
73    verbose_=false;
74  }
75
76
77  void Parameter::help(void)
78  {
79    std::cout << "\n"
80              << "usage: svnstat [options]\n"
81              << "\n"
82              << "svnstat traverses a directory structure (controlled by\n"
83              << "subversion) and calculates developer statistics entries.\n"
84              << "The top level directory of the directory structure to\n"
85              << "traverse is set with the -t option."
86              << "The result is written to a\n"
87              << "sub-directory, svnstat, that is created in the current\n"
88              << "working directory.\n"
89              << "\n"
90              << "Valid options:\n"
91              << "  -f [--force]   : remove target directory/file if it exists\n"
92              << "                   [no force]. NOTE recursive delete.\n"
93              << "  -h [--help]    : display this help and exit\n"
94              << "  -r [--root] arg : svn controlled directory to perform\n"
95              << "                    statistics calculation on [.]\n"
96              << "  -rev [--revisions]: Use revision numbers as time scale\n"
97              << "                      instead of dates [dates].\n"
98              << "  -t [--target] arg : output directory [svnstat_output]\n"
99              << "  -v [--verbose] : explain what is being done\n"
100              << "  --version      : print version information and exit\n"
101              << std::endl;
102  }
103
104
105  void Parameter::version(void)
106  {
107    using namespace std;
108    cout << PACKAGE_STRING
109         << "\nCopyright (C) 2006 Jari Häkkinen and Peter Johansson.\n\n"
110         << "This is free software; see the source for copying conditions.\n"
111         << "There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR\n"
112         << "A PARTICULAR PURPOSE." << endl;
113  }
114
115}} // of namespace wenni and namespace theplu
Note: See TracBrowser for help on using the repository browser.