bin/svndigest_copy_cacheParameter.cc

Code
Comments
Other
Rev Date Author Line
1294 14 Nov 10 peter 1 // $Id$
1294 14 Nov 10 peter 2
1294 14 Nov 10 peter 3 /*
1635 30 Mar 23 peter 4   Copyright (C) 2010 Peter Johansson
1294 14 Nov 10 peter 5
1294 14 Nov 10 peter 6   This file is part of svndigest, http://dev.thep.lu.se/svndigest
1294 14 Nov 10 peter 7
1294 14 Nov 10 peter 8   svndigest is free software; you can redistribute it and/or modify it
1294 14 Nov 10 peter 9   under the terms of the GNU General Public License as published by
1294 14 Nov 10 peter 10   the Free Software Foundation; either version 3 of the License, or
1294 14 Nov 10 peter 11   (at your option) any later version.
1294 14 Nov 10 peter 12
1294 14 Nov 10 peter 13   svndigest is distributed in the hope that it will be useful, but
1294 14 Nov 10 peter 14   WITHOUT ANY WARRANTY; without even the implied warranty of
1294 14 Nov 10 peter 15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1294 14 Nov 10 peter 16   General Public License for more details.
1294 14 Nov 10 peter 17
1294 14 Nov 10 peter 18   You should have received a copy of the GNU General Public License
1294 14 Nov 10 peter 19   along with svndigest. If not, see <http://www.gnu.org/licenses/>.
1294 14 Nov 10 peter 20 */
1294 14 Nov 10 peter 21
1294 14 Nov 10 peter 22 #include <config.h>  // this header file is created by configure
1294 14 Nov 10 peter 23
1294 14 Nov 10 peter 24 #include "svndigest_copy_cacheParameter.h"
1294 14 Nov 10 peter 25
1294 14 Nov 10 peter 26 #include "lib/utility.h"
1294 14 Nov 10 peter 27
1675 26 Aug 23 peter 28 #include <yat/utility/utility.h>
1675 26 Aug 23 peter 29
1294 14 Nov 10 peter 30 #include <string>
1294 14 Nov 10 peter 31
1294 14 Nov 10 peter 32 namespace theplu {
1294 14 Nov 10 peter 33 namespace svndigest {
1294 14 Nov 10 peter 34
1294 14 Nov 10 peter 35   svndigest_copy_cacheParameter::svndigest_copy_cacheParameter(void)
1513 23 Sep 12 peter 36     : AbstractParameter(),
1294 14 Nov 10 peter 37       target_(cmd_, "t,target", "svn wc cache is copied to")
1294 14 Nov 10 peter 38   {
1294 14 Nov 10 peter 39   }
1294 14 Nov 10 peter 40
1294 14 Nov 10 peter 41
1294 14 Nov 10 peter 42   svndigest_copy_cacheParameter::~svndigest_copy_cacheParameter(void)
1294 14 Nov 10 peter 43   {
1294 14 Nov 10 peter 44   }
1294 14 Nov 10 peter 45
1294 14 Nov 10 peter 46
1294 14 Nov 10 peter 47   void svndigest_copy_cacheParameter::analyse1(void)
1294 14 Nov 10 peter 48   {
1294 14 Nov 10 peter 49     analyse_root(root_.value());
1513 23 Sep 12 peter 50     // check target
1294 14 Nov 10 peter 51     check_existence(target_.value());
1294 14 Nov 10 peter 52     check_readable(target_.value());
1294 14 Nov 10 peter 53     check_is_dir(target_.value());
1294 14 Nov 10 peter 54     std::string save_wd = pwd();
1675 26 Aug 23 peter 55     yat::utility::chdir(target_.value());
1294 14 Nov 10 peter 56     target_.value(pwd());
1675 26 Aug 23 peter 57     yat::utility::chdir(save_wd);
1294 14 Nov 10 peter 58     // FIXME: should check inodeno to handle symlinks
1294 14 Nov 10 peter 59     if (root()==target()) {
1294 14 Nov 10 peter 60       std::stringstream ss;
1513 23 Sep 12 peter 61       ss << cmd_.program_name() << ": '" << root() << "' and '"
1294 14 Nov 10 peter 62          << target() << "' are identical (no copy)\n";
1294 14 Nov 10 peter 63       throw yat::utility::cmd_error(ss.str());
1294 14 Nov 10 peter 64     }
1294 14 Nov 10 peter 65   }
1294 14 Nov 10 peter 66
1294 14 Nov 10 peter 67
1294 14 Nov 10 peter 68   void svndigest_copy_cacheParameter::init1(void)
1294 14 Nov 10 peter 69   {
1294 14 Nov 10 peter 70     target_.print_arg("=TARGET");
1294 14 Nov 10 peter 71     root_.description("svn wc cache is copied from");
1513 23 Sep 12 peter 72     help_.synopsis() =
1294 14 Nov 10 peter 73       "Copy svndigest cache from one working copy to another.\n";
1294 14 Nov 10 peter 74     version_.program_name("svndigest-copy-cache");
1294 14 Nov 10 peter 75   }
1294 14 Nov 10 peter 76
1294 14 Nov 10 peter 77
1294 14 Nov 10 peter 78   void svndigest_copy_cacheParameter::set_default1(void)
1294 14 Nov 10 peter 79   {
1294 14 Nov 10 peter 80     if (!target_.present())
1294 14 Nov 10 peter 81       target_.value(".");
1294 14 Nov 10 peter 82   }
1294 14 Nov 10 peter 83
1294 14 Nov 10 peter 84   std::string svndigest_copy_cacheParameter::target(void) const
1294 14 Nov 10 peter 85   {
1294 14 Nov 10 peter 86     return target_.value();
1294 14 Nov 10 peter 87   }
1294 14 Nov 10 peter 88
1294 14 Nov 10 peter 89 }} // of namespace svndigest and namespace theplu