aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2011-03-18 22:37:36 +0000
committerAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2011-03-18 22:48:57 +0000
commit48c9c785ecd6a96f056b9ecefb6df980967dda22 (patch)
treec327fb26ffe9e3720d7fa8e86eef8ced1f92207b
parent39773269d5a2eb4fe716d6ff82da20c8576ed6a3 (diff)
downloadpaludis-48c9c785ecd6a96f056b9ecefb6df980967dda22.tar.gz
paludis-48c9c785ecd6a96f056b9ecefb6df980967dda22.tar.xz
Move out suffixes
-rw-r--r--paludis/repositories/e/Makefile.am2
-rw-r--r--paludis/repositories/e/e_repository.cc46
-rw-r--r--paludis/repositories/e/file_suffixes.cc79
-rw-r--r--paludis/repositories/e/file_suffixes.hh52
4 files changed, 137 insertions, 42 deletions
diff --git a/paludis/repositories/e/Makefile.am b/paludis/repositories/e/Makefile.am
index 904ec0e..0997465 100644
--- a/paludis/repositories/e/Makefile.am
+++ b/paludis/repositories/e/Makefile.am
@@ -64,6 +64,7 @@ noinst_HEADERS = \
exndbam_repository.hh \
extra_distribution_data.hh \
fetch_visitor.hh \
+ file_suffixes.hh \
info_metadata_key.hh \
iuse.hh \
iuse-se.hh \
@@ -141,6 +142,7 @@ libpaludiserepository_la_SOURCES = \
exheres_profile.cc \
extra_distribution_data.cc \
fetch_visitor.cc \
+ file_suffixes.cc \
info_metadata_key.cc \
iuse.cc \
pretend_fetch_visitor.cc \
diff --git a/paludis/repositories/e/e_repository.cc b/paludis/repositories/e/e_repository.cc
index 0aec4df..6a3047c 100644
--- a/paludis/repositories/e/e_repository.cc
+++ b/paludis/repositories/e/e_repository.cc
@@ -44,6 +44,7 @@
#include <paludis/repositories/e/make_use.hh>
#include <paludis/repositories/e/a_finder.hh>
#include <paludis/repositories/e/repository_mask_store.hh>
+#include <paludis/repositories/e/file_suffixes.hh>
#include <paludis/about.hh>
#include <paludis/action.hh>
@@ -74,7 +75,6 @@
#include <paludis/util/fs_iterator.hh>
#include <paludis/util/hashes.hh>
#include <paludis/util/indirect_iterator-impl.hh>
-#include <paludis/util/singleton-impl.hh>
#include <paludis/util/is_file_with_extension.hh>
#include <paludis/util/iterator_funcs.hh>
#include <paludis/util/log.hh>
@@ -1686,44 +1686,6 @@ ERepository::sync_host_key() const
return _imp->sync_host_key;
}
-namespace
-{
- struct Suffixes :
- Singleton<Suffixes>
- {
- KeyValueConfigFile file;
-
- Suffixes() :
- file(FSPath(getenv_with_default("PALUDIS_SUFFIXES_FILE", DATADIR "/paludis/ebuild_entries_suffixes.conf")),
- { }, &KeyValueConfigFile::no_defaults, &KeyValueConfigFile::no_transformation)
- {
- }
-
- bool is_known_suffix(const std::string & s) const
- {
- return ! file.get("suffix_" + s + "_known").empty();
- }
-
- std::string guess_eapi(const std::string & s) const
- {
- return file.get("guess_eapi_" + s);
- }
-
- std::string manifest_key(const std::string & s) const
- {
- std::string result(file.get("manifest_key_" + s));
- if (result.empty())
- {
- Log::get_instance()->message("e.ebuild.unknown_manifest_key", ll_warning, lc_context)
- << "Don't know what the manifest key for files with suffix '" << s << "' is, guessing 'MISC'";
- return "MISC";
- }
- else
- return result;
- }
- };
-}
-
const std::shared_ptr<const ERepositoryID>
ERepository::make_id(const QualifiedPackageName & q, const FSPath & f) const
{
@@ -1972,7 +1934,7 @@ ERepository::is_package_file(const QualifiedPackageName & n, const FSPath & e) c
return false;
std::string suffix(e.basename().substr(p + 1));
- return Suffixes::get_instance()->is_known_suffix(suffix);
+ return FileSuffixes::get_instance()->is_known_suffix(suffix);
}
VersionSpec
@@ -1998,7 +1960,7 @@ ERepository::get_package_file_manifest_key(const FSPath & e, const QualifiedPack
return "EBUILD";
std::string suffix(e.basename().substr(p + 1));
- return Suffixes::get_instance()->manifest_key(suffix);
+ return FileSuffixes::get_instance()->manifest_key(suffix);
}
const std::string
@@ -2015,7 +1977,7 @@ ERepository::_guess_eapi(const QualifiedPackageName &, const FSPath & e) const
return "";
std::string suffix(e.basename().substr(p + 1));
- return Suffixes::get_instance()->guess_eapi(suffix);
+ return FileSuffixes::get_instance()->guess_eapi(suffix);
}
const std::shared_ptr<const MirrorsSequence>
diff --git a/paludis/repositories/e/file_suffixes.cc b/paludis/repositories/e/file_suffixes.cc
new file mode 100644
index 0000000..cf6a61a
--- /dev/null
+++ b/paludis/repositories/e/file_suffixes.cc
@@ -0,0 +1,79 @@
+/* vim: set sw=4 sts=4 et foldmethod=syntax : */
+
+/*
+ * Copyright (c) 2011 Ciaran McCreesh
+ *
+ * This file is part of the Paludis package manager. Paludis is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU General
+ * Public License version 2, as published by the Free Software Foundation.
+ *
+ * Paludis 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., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <paludis/repositories/e/file_suffixes.hh>
+#include <paludis/util/pimp-impl.hh>
+#include <paludis/util/singleton-impl.hh>
+#include <paludis/util/config_file.hh>
+#include <paludis/util/system.hh>
+#include <paludis/util/fs_path.hh>
+#include <paludis/util/log.hh>
+#include <paludis/util/options.hh>
+
+using namespace paludis;
+using namespace paludis::erepository;
+
+namespace paludis
+{
+ template <>
+ struct Imp<FileSuffixes>
+ {
+ KeyValueConfigFile file;
+
+ Imp() :
+ file(FSPath(getenv_with_default("PALUDIS_SUFFIXES_FILE", DATADIR "/paludis/ebuild_entries_suffixes.conf")),
+ { }, &KeyValueConfigFile::no_defaults, &KeyValueConfigFile::no_transformation)
+ {
+ }
+ };
+}
+
+FileSuffixes::FileSuffixes() :
+ _imp()
+{
+}
+
+FileSuffixes::~FileSuffixes() = default;
+
+bool
+FileSuffixes::is_known_suffix(const std::string & s) const
+{
+ return ! _imp->file.get("suffix_" + s + "_known").empty();
+}
+
+std::string
+FileSuffixes::guess_eapi(const std::string & s) const
+{
+ return _imp->file.get("guess_eapi_" + s);
+}
+
+std::string
+FileSuffixes::manifest_key(const std::string & s) const
+{
+ std::string result(_imp->file.get("manifest_key_" + s));
+ if (result.empty())
+ {
+ Log::get_instance()->message("e.ebuild.unknown_manifest_key", ll_warning, lc_context)
+ << "Don't know what the manifest key for files with suffix '" << s << "' is, guessing 'MISC'";
+ return "MISC";
+ }
+ else
+ return result;
+}
+
diff --git a/paludis/repositories/e/file_suffixes.hh b/paludis/repositories/e/file_suffixes.hh
new file mode 100644
index 0000000..4637a38
--- /dev/null
+++ b/paludis/repositories/e/file_suffixes.hh
@@ -0,0 +1,52 @@
+/* vim: set sw=4 sts=4 et foldmethod=syntax : */
+
+/*
+ * Copyright (c) 2011 Ciaran McCreesh
+ *
+ * This file is part of the Paludis package manager. Paludis is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU General
+ * Public License version 2, as published by the Free Software Foundation.
+ *
+ * Paludis 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., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef PALUDIS_GUARD_PALUDIS_REPOSITORIES_E_FILE_SUFFIXES_HH
+#define PALUDIS_GUARD_PALUDIS_REPOSITORIES_E_FILE_SUFFIXES_HH 1
+
+#include <paludis/util/pimp.hh>
+#include <paludis/util/singleton.hh>
+#include <string>
+
+namespace paludis
+{
+ namespace erepository
+ {
+ class FileSuffixes :
+ public Singleton<FileSuffixes>
+ {
+ friend class Singleton<FileSuffixes>;
+
+ private:
+ Pimp<FileSuffixes> _imp;
+
+ FileSuffixes();
+ ~FileSuffixes();
+
+ public:
+ bool is_known_suffix(const std::string & s) const;
+
+ std::string guess_eapi(const std::string & s) const;
+
+ std::string manifest_key(const std::string & s) const;
+ };
+ }
+}
+
+#endif