diff options
Diffstat (limited to 'tests/manifest/driver.cxx')
-rw-r--r-- | tests/manifest/driver.cxx | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/tests/manifest/driver.cxx b/tests/manifest/driver.cxx index c0d8693..56c886d 100644 --- a/tests/manifest/driver.cxx +++ b/tests/manifest/driver.cxx @@ -23,6 +23,7 @@ using namespace bpkg; // argv[0] (-pp|-dp|-gp|-pr|-dr|-gr|-s) [-l] // argv[0] -p [-c] [-i] [-l] // argv[0] -ec <version> +// argv[0] -et <type> <name> // argv[0] -v // // In the first form read and parse manifest list from stdin and serialize it @@ -40,7 +41,7 @@ using namespace bpkg; // In the second form read and parse the package manifest from stdin and // serialize it to stdout. // -// -c complete the dependency constraints +// -c complete the incomplete values (depends, <distribution>-version, etc) // -i ignore unknown // // Note: the above options should go after -p on the command line. @@ -52,7 +53,10 @@ using namespace bpkg; // roundtrip them to stdout together with their effective constraints, // calculated using version passed as an argument. // -// In the forth form print the libbpkg version to stdout and exit. +// In the forth form print the effective type and the type sub-options to +// stdout (one per line) and exit. +// +// In the fifth form print the libbpkg version to stdout and exit. // int main (int argc, char* argv[]) @@ -74,7 +78,7 @@ main (int argc, char* argv[]) { if (mode == "-p") { - bool complete_dependencies (false); + bool complete_values (false); bool ignore_unknown (false); bool long_lines (false); @@ -83,7 +87,7 @@ main (int argc, char* argv[]) string o (argv[i]); if (o == "-c") - complete_dependencies = true; + complete_values = true; else if (o == "-i") ignore_unknown = true; else if (o == "-l") @@ -114,7 +118,7 @@ main (int argc, char* argv[]) } }, ignore_unknown, - complete_dependencies).serialize (s); + complete_values).serialize (s); } else if (mode == "-ec") { @@ -135,6 +139,21 @@ main (int argc, char* argv[]) cout << c << " " << ec << endl; } } + else if (mode == "-et") + { + assert (argc == 4); + + optional<string> t (*argv[2] != '\0' + ? string (argv[2]) + : optional<string> ()); + + package_name n (argv[3]); + + cout << package_manifest::effective_type (t, n) << endl; + + for (const string& so: package_manifest::effective_type_sub_options (t)) + cout << so << endl; + } else { bool long_lines (false); |