source: trunk/lib/OptionVersion.cc @ 1340

Last change on this file since 1340 was 1340, checked in by Peter Johansson, 11 years ago

restore the 'r' prefix for revision number in --version output

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 2.8 KB
Line 
1// $Id: OptionVersion.cc 1340 2011-02-13 01:46:55Z peter $
2
3/*
4  Copyright (C) 2008, 2009, 2010 Peter Johansson
5
6  This file is part of svndigest, http://dev.thep.lu.se/svndigest
7
8  svndigest is free software; you can redistribute it and/or
9  modify it under the terms of the GNU General Public License as
10  published by the Free Software Foundation; either version 3 of the
11  License, or (at your option) any later version.
12
13  svndigest is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  General Public License for more details.
17
18  You should have received a copy of the GNU General Public License
19  along with svndigest. If not, see <http://www.gnu.org/licenses/>.
20*/
21
22#include <config.h>
23
24#include "OptionVersion.h"
25#include "subversion_revision.h"
26#include "utility.h"
27
28#include "yat/ColumnStream.h"
29#include "yat/CommandLine.h"
30
31#include <subversion-1/svn_version.h>
32
33#include <apr_version.h>
34
35#include <cstdlib>
36#include <iostream>
37#include <sstream>
38#include <string>
39
40namespace theplu {
41namespace svndigest {
42
43  OptionVersion::OptionVersion(yat::utility::CommandLine& cmd, std::string flag, 
44                               std::string desc, OptionSwitch* const verbose)
45    : yat::utility::OptionSwitch(cmd, flag, desc, false), verbose_(verbose)
46  {
47  }
48
49
50  void OptionVersion::do_parse2(std::vector<std::string>::iterator first, 
51                                std::vector<std::string>::iterator last)
52  {
53    yat::utility::ColumnStream cs(std::cout, 1);
54    cs.width(0)=79;
55    cs << prog_name_ << " " << PACKAGE_VERSION;
56    bool no_verbose = verbose_ && verbose_->present() && !verbose_->value();
57    bool verbose = verbose_ && verbose_->present() && verbose_->value();
58    if (!no_verbose) {
59      cs << " (";
60      if (DEV_BUILD)
61        cs << "r" << svn_revision() << " ";
62      cs << "compiled " << compilation_time() << ", " << compilation_date() 
63         << ")";
64    } 
65    cs << "\n\nCopyright (C) " << RELEASE_YEAR
66       << " Jari H\u00E4kkinen and Peter Johansson.\n"
67       << "License GPLv3+: GNU GPL version 3 or later "
68       << "<http://gnu.org/licenses/gpl.html>\n"
69       << "This is free software: you are free to change and redistribute it.\n"
70       << "There is NO WARRANTY, to the extent permitted by law.\n";
71    if (verbose) {
72      cs << "\n"
73         << "Compiled with libsvn_subr " << SVN_VER_NUM
74         << "; using libsvn_subr ";
75      const svn_version_t* svn_ver = svn_subr_version();
76      cs << svn_ver->major << '.' << svn_ver->minor << '.' << svn_ver->patch;
77      cs << "\n"
78         << "Compiled with libapr " << APR_VERSION_STRING
79         << "; using libapr ";
80      cs << apr_version_string();
81      cs << "\n";
82      cs << extra_;
83    }
84    exit(EXIT_SUCCESS);
85  }
86
87
88  void OptionVersion::extra(const std::string& str)
89  {
90    extra_ = str;
91  }
92
93
94  void OptionVersion::program_name(const std::string& str)
95  {
96    prog_name_ = str;
97  }
98
99}} // of namespace svndigest and theplu
Note: See TracBrowser for help on using the repository browser.