lib/OptionVersion.cc

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