aboutsummaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorMu Qiao <qiaomuf@gentoo.org>2011-04-21 16:53:03 +0800
committerMu Qiao <qiaomuf@gentoo.org>2011-04-26 15:13:52 +0800
commit3174d0646b5f1a3d21a0661d8e87fc8380d73da9 (patch)
treeeb68f93b1f45dfb3a887b1487d1259da39f203e5 /utils
parentTest: rename *ebuild* to *bash* (diff)
downloadlibbash-3174d0646b5f1a3d21a0661d8e87fc8380d73da9.tar.gz
libbash-3174d0646b5f1a3d21a0661d8e87fc8380d73da9.tar.bz2
libbash-3174d0646b5f1a3d21a0661d8e87fc8380d73da9.zip
Core: support DEFINED_PHASES for metadata generation
We need to retrieve names of defined functions in order to generate DEFINED_PHASES. The public API is modified a bit to support it. A custom test is added for metadata generation.
Diffstat (limited to 'utils')
-rw-r--r--utils/metadata_generator.cpp47
-rw-r--r--utils/variable_printer.cpp3
2 files changed, 44 insertions, 6 deletions
diff --git a/utils/metadata_generator.cpp b/utils/metadata_generator.cpp
index 9f5215d..57facb1 100644
--- a/utils/metadata_generator.cpp
+++ b/utils/metadata_generator.cpp
@@ -22,15 +22,36 @@
/// \brief a simple utility for generating metadata
///
#include <iostream>
+#include <set>
#include <string>
#include <vector>
+#include <boost/spirit/include/karma.hpp>
+
#include "libbash.h"
-static std::vector<std::string> metadata_names = {"DEPEND", "RDEPEND", "SLOT", "SRC_URI",
- "RESTRICT", "HOMEPAGE", "LICENSE", "DESCRIPTION",
- "KEYWORDS", "INHERITED", "IUSE", "REQUIRED_USE",
- "PDEPEND", "PROVIDE", "EAPI", "PROPERTIES", "DEFINED_PHASES"};
+static const std::vector<std::string> metadata_names = {"DEPEND", "RDEPEND", "SLOT", "SRC_URI",
+ "RESTRICT", "HOMEPAGE", "LICENSE", "DESCRIPTION",
+ "KEYWORDS", "INHERITED", "IUSE", "REQUIRED_USE",
+ "PDEPEND", "PROVIDE", "EAPI", "PROPERTIES"};
+
+static const std::unordered_map<std::string, std::string> phases = {
+ {"pkg_pretend", "ppretend"},
+ {"pkg_setup", "setup"},
+ {"src_unpack", "unpack"},
+ {"src_prepare", "prepare"},
+ {"src_configure", "configure"},
+ {"src_compile", "compile"},
+ {"src_test", "test"},
+ {"src_install", "install"},
+ {"pkg_preinst", "preinst"},
+ {"pkg_postinst", "postinst"},
+ {"pkg_prerm", "prerm"},
+ {"pkg_postrm", "postrm"},
+ {"pkg_config", "config"},
+ {"pkg_info", "info"},
+ {"pkg_nofetch", "nofetch"}
+};
int main(int argc, char** argv)
{
@@ -41,7 +62,8 @@ int main(int argc, char** argv)
}
std::unordered_map<std::string, std::vector<std::string>> variables;
- libbash::interpret(argv[1], variables);
+ std::vector<std::string> functions;
+ libbash::interpret(argv[1], variables, functions);
for(auto iter_name = metadata_names.begin(); iter_name != metadata_names.end(); ++iter_name)
{
@@ -52,5 +74,20 @@ int main(int argc, char** argv)
std::cout << std::endl;
}
+ // Print defined phases
+ std::set<std::string> sorted_phases;
+ for(auto iter = functions.begin(); iter != functions.end(); ++iter)
+ {
+ auto iter_phase = phases.find(*iter);
+ if(iter_phase != phases.end())
+ sorted_phases.insert(iter_phase->second);
+ }
+
+ using namespace boost::spirit::karma;
+ std::cout << format(string % ' ', sorted_phases) << std::endl;
+
+ // Print empty lines
+ std::cout << std::endl << std::endl << std::endl << std::endl << std::endl;
+
return EXIT_SUCCESS;
}
diff --git a/utils/variable_printer.cpp b/utils/variable_printer.cpp
index ed4aa69..192b3db 100644
--- a/utils/variable_printer.cpp
+++ b/utils/variable_printer.cpp
@@ -41,7 +41,8 @@ int main(int argc, char** argv)
}
std::unordered_map<std::string, std::vector<std::string>> variables;
- libbash::interpret(argv[1], variables);
+ std::vector<std::string> functions;
+ libbash::interpret(argv[1], variables, functions);
std::map<std::string, std::vector<std::string>> sorted(variables.begin(), variables.end());
// Currently we don't need internal variables