diff options
author | 2011-03-18 22:37:36 +0000 | |
---|---|---|
committer | 2011-03-18 22:48:57 +0000 | |
commit | 48c9c785ecd6a96f056b9ecefb6df980967dda22 (patch) | |
tree | c327fb26ffe9e3720d7fa8e86eef8ced1f92207b | |
parent | 39773269d5a2eb4fe716d6ff82da20c8576ed6a3 (diff) | |
download | paludis-48c9c785ecd6a96f056b9ecefb6df980967dda22.tar.gz paludis-48c9c785ecd6a96f056b9ecefb6df980967dda22.tar.xz |
Move out suffixes
-rw-r--r-- | paludis/repositories/e/Makefile.am | 2 | ||||
-rw-r--r-- | paludis/repositories/e/e_repository.cc | 46 | ||||
-rw-r--r-- | paludis/repositories/e/file_suffixes.cc | 79 | ||||
-rw-r--r-- | paludis/repositories/e/file_suffixes.hh | 52 |
4 files changed, 137 insertions, 42 deletions
diff --git a/paludis/repositories/e/Makefile.am b/paludis/repositories/e/Makefile.am index 904ec0e61..099746546 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 0aec4df8e..6a3047c36 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 000000000..cf6a61abd --- /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 000000000..4637a3815 --- /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 |