objectlistcommand.cpp
pkinewcacommand.cpp pkinewcertcommand.cpp pkisigncsrcommand.cpp pkirequestcommand.cpp pkisavecertcommand.cpp pkiticketcommand.cpp
pkiutility.cpp
- repositorycommitcommand.cpp repositoryobjectcommand.cpp repositoryutility.cpp
+ repositoryclearchangescommand.cpp repositorycommitcommand.cpp repositoryobjectcommand.cpp repositoryutility.cpp
variablegetcommand.cpp variablelistcommand.cpp variableutility.cpp
)
--- /dev/null
+/******************************************************************************
+ * Icinga 2 *
+ * Copyright (C) 2012-2014 Icinga Development Team (http://www.icinga.org) *
+ * *
+ * This program is free software; you can redistribute it and/or *
+ * modify it under the terms of the GNU General Public License *
+ * as published by the Free Software Foundation; either version 2 *
+ * of the License, or (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the Free Software Foundation *
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ******************************************************************************/
+
+#include "cli/repositoryclearchangescommand.hpp"
+#include "cli/repositoryutility.hpp"
+#include "base/logger.hpp"
+#include "base/application.hpp"
+#include "base/utility.hpp"
+#include <fstream>
+#include <iostream>
+
+using namespace icinga;
+namespace po = boost::program_options;
+
+REGISTER_CLICOMMAND("repository/clear-changes", RepositoryClearChangesCommand);
+
+String RepositoryClearChangesCommand::GetDescription(void) const
+{
+ return "Clear uncommitted Icinga 2 repository changes";
+}
+
+String RepositoryClearChangesCommand::GetShortDescription(void) const
+{
+ return "clear uncommitted repository changes";
+}
+
+ImpersonationLevel RepositoryClearChangesCommand::GetImpersonationLevel(void) const
+{
+ return ImpersonateRoot;
+}
+
+/**
+ * The entry point for the "repository clear-changes" CLI command.
+ *
+ * @returns An exit status.
+ */
+int RepositoryClearChangesCommand::Run(const boost::program_options::variables_map& vm, const std::vector<std::string>& ap) const
+{
+ if (!Utility::PathExists(RepositoryUtility::GetRepositoryChangeLogPath())) {
+ std::cout << "Repository Changelog path '" << RepositoryUtility::GetRepositoryChangeLogPath() << "' does not exist. Add objects first!\n";
+ return 1;
+ }
+
+ std::cout << "Clearing all remaining changes\n";
+ RepositoryUtility::ClearChangeLog();
+
+ return 0;
+}
--- /dev/null
+/******************************************************************************
+ * Icinga 2 *
+ * Copyright (C) 2012-2014 Icinga Development Team (http://www.icinga.org) *
+ * *
+ * This program is free software; you can redistribute it and/or *
+ * modify it under the terms of the GNU General Public License *
+ * as published by the Free Software Foundation; either version 2 *
+ * of the License, or (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the Free Software Foundation *
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ******************************************************************************/
+
+#ifndef REPOSITORYCLEARCHANGESCOMMAND_H
+#define REPOSITORYCLEARCHANGESCOMMAND_H
+
+#include "base/dictionary.hpp"
+#include "base/array.hpp"
+#include "cli/clicommand.hpp"
+#include <ostream>
+
+namespace icinga
+{
+
+/**
+ * The "repository clear-changes" command.
+ *
+ * @ingroup cli
+ */
+class RepositoryClearChangesCommand : public CLICommand
+{
+public:
+ DECLARE_PTR_TYPEDEFS(RepositoryClearChangesCommand);
+
+ virtual String GetDescription(void) const;
+ virtual String GetShortDescription(void) const;
+ virtual ImpersonationLevel GetImpersonationLevel(void) const;
+ virtual int Run(const boost::program_options::variables_map& vm, const std::vector<std::string>& ap) const;
+};
+
+}
+
+#endif /* REPOSITORYCLEARCHANGESCOMMAND_H */
boost::program_options::options_description& hiddenDesc) const
{
visibleDesc.add_options()
- ("simulate", "Simulate to-be-committed changes")
- ("clear", "Clear all to-be-committed changes");
+ ("simulate", "Simulate to-be-committed changes");
}
ImpersonationLevel RepositoryCommitCommand::GetImpersonationLevel(void) const
std::cout << "Simulation not yet implemented.\n";
//TODO
return 1;
- } else if (vm.count("clear")) {
- std::cout << "Clearing all remaining changes\n";
- RepositoryUtility::ClearChangeLog();
} else {
RepositoryUtility::PrintChangeLog(std::cout);
std::cout << "\n";