#
#
# patch "ChangeLog"
# from [258fa7ece1afa815ba9cfa7ac924aff2f66de342]
# to [ab3e32f8f6bb3962c50de379674b8209afaae127]
#
# patch "automate.cc"
# from [68d579fc833b4a0ec52a0c8e5b130af7517ab7ed]
# to [a8b515148a3944e116f97c4d084f8bdd5e5b5eaf]
#
# patch "commands.cc"
# from [ffda8a186503943a14239e5193698d3c57a94c01]
# to [b8bd7c0f89059356c00616eb2fbfdeb378108b2d]
#
# patch "tests/t_bad_packets.at"
# from [8e2ff9cc8d268247ab5471a1ac4548565e814eb5]
# to [2ab2b87f1b55c89f0132a7942a62f2d70c92c313]
#
============================================================
--- ChangeLog 258fa7ece1afa815ba9cfa7ac924aff2f66de342
+++ ChangeLog ab3e32f8f6bb3962c50de379674b8209afaae127
@@ -1,3 +1,11 @@
+2006-03-03 Patrick Mauritz
+
+ * commands.cc: remove rdata, certs, fdata and fdelta commands
+ from user interface, and move them to
+ * automate.cc: the automate interface as packet_for_rdata,
+ packets_for_certs, packet_for_fdata, packet_for_fdelta
+ * tests/t_bad_packets.at: adapt for 0.26 and for the changes above
+
2006-03-02 Derek Scherger
testsuite.at: fix broken include of t_restriction_excludes_parent.at
============================================================
--- automate.cc 68d579fc833b4a0ec52a0c8e5b130af7517ab7ed
+++ automate.cc a8b515148a3944e116f97c4d084f8bdd5e5b5eaf
@@ -25,6 +25,7 @@
#include "transforms.hh"
#include "vocab.hh"
#include "keys.hh"
+#include "packet.hh"
static std::string const interface_version = "2.0";
@@ -1034,6 +1035,134 @@
output.write(dat.inner()().data(), dat.inner()().size());
}
+// Name: packet_for_rdata
+// Arguments:
+// 1: a revision id
+// Added in: 2.0
+// Purpose: Prints the revision data in packet format
+//
+// Output format: revision data in "monotone read" compatible packet format
+//
+// Error conditions: If the revision id specified is unknown or invalid prints
+// an error message to stderr and exits with status 1.
+static void
+automate_packet_for_rdata(std::vector args,
+ std::string const & help_name,
+ app_state & app,
+ std::ostream & output)
+{
+ if (args.size() != 1)
+ throw usage(help_name);
+
+ packet_writer pw(output);
+
+ revision_id r_id(idx(args, 0)());
+ revision_data r_data;
+
+ N(app.db.revision_exists(r_id),
+ F("no such revision '%s'") % r_id);
+ app.db.get_revision(r_id, r_data);
+ pw.consume_revision_data(r_id,r_data);
+}
+
+// Name: packets_for_certs
+// Arguments:
+// 1: a revision id
+// Added in: 2.0
+// Purpose: Prints the certs associated with a revision in packet format
+//
+// Output format: certs in "monotone read" compatible packet format
+//
+// Error conditions: If the revision id specified is unknown or invalid prints
+// an error message to stderr and exits with status 1.
+static void
+automate_packets_for_certs(std::vector args,
+ std::string const & help_name,
+ app_state & app,
+ std::ostream & output)
+{
+ if (args.size() != 1)
+ throw usage(help_name);
+
+ packet_writer pw(output);
+
+ revision_id r_id(idx(args, 0)());
+ std::vector< revision > certs;
+
+ N(app.db.revision_exists(r_id),
+ F("no such revision '%s'") % r_id);
+ app.db.get_revision_certs(r_id, certs);
+ for (size_t i = 0; i < certs.size(); ++i)
+ pw.consume_revision_cert(idx(certs,i));
+}
+
+// Name: packet_for_fdata
+// Arguments:
+// 1: a file id
+// Added in: 2.0
+// Purpose: Prints the file data in packet format
+//
+// Output format: file data in "monotone read" compatible packet format
+//
+// Error conditions: If the file id specified is unknown or invalid prints
+// an error message to stderr and exits with status 1.
+static void
+automate_packet_for_fdata(std::vector args,
+ std::string const & help_name,
+ app_state & app,
+ std::ostream & output)
+{
+ if (args.size() != 1)
+ throw usage(help_name);
+
+ packet_writer pw(output);
+
+ file_id f_id(idx(args, 0)());
+ file_data f_data;
+
+ N(app.db.file_version_exists(f_id),
+ F("no such revision '%s'") % f_id);
+ app.db.get_file_version(f_id, f_data);
+ pw.consume_file_data(f_id,f_data);
+}
+
+// Name: packet_for_fdelta
+// Arguments:
+// 1: a file id
+// 1: a file id
+// Added in: 2.0
+// Purpose: Prints the file delta in packet format
+//
+// Output format: file delta in "monotone read" compatible packet format
+//
+// Error conditions: If any of the file ids specified are unknown or
+// invalid prints an error message to stderr and exits with status 1.
+static void
+automate_packet_for_fdelta(std::vector args,
+ std::string const & help_name,
+ app_state & app,
+ std::ostream & output)
+{
+ if (args.size() != 2)
+ throw usage(help_name);
+
+ packet_writer pw(output);
+
+ file_id f_old_id(idx(args, 0)());
+ file_id f_new_id(idx(args, 1)());
+ file_data f_old_data, f_new_data;
+
+ N(app.db.file_version_exists(f_old_id),
+ F("no such revision '%s'") % f_old_id);
+ N(app.db.file_version_exists(f_new_id),
+ F("no such revision '%s'") % f_new_id);
+ app.db.get_file_version(f_old_id, f_old_data);
+ app.db.get_file_version(f_new_id, f_new_data);
+ delta del;
+ diff(f_old_data.inner(), f_new_data.inner(), del);
+ pw.consume_file_delta(f_old_id, f_new_id, file_delta(del));
+}
+
void
automate_command(utf8 cmd, std::vector args,
std::string const & root_cmd_name,
@@ -1402,6 +1531,14 @@
automate_get_file(args, root_cmd_name, app, output);
else if (cmd() == "keys")
automate_keys(args, root_cmd_name, app, output);
+ else if (cmd() == "packet_for_rdata")
+ automate_packet_for_rdata(args, root_cmd_name, app, output);
+ else if (cmd() == "packets_for_certs")
+ automate_packets_for_certs(args, root_cmd_name, app, output);
+ else if (cmd() == "packet_for_fdata")
+ automate_packet_for_fdata(args, root_cmd_name, app, output);
+ else if (cmd() == "packet_for_fdelta")
+ automate_packet_for_fdelta(args, root_cmd_name, app, output);
else
throw usage(root_cmd_name);
}
============================================================
--- commands.cc ffda8a186503943a14239e5193698d3c57a94c01
+++ commands.cc b8bd7c0f89059356c00616eb2fbfdeb378108b2d
@@ -1880,86 +1880,6 @@
ALIAS(ls, list)
-CMD(fdelta, N_("packet i/o"), N_("OLDID NEWID"),
- N_("write file delta packet to stdout"),
- OPT_NONE)
-{
- if (args.size() != 2)
- throw usage(name);
-
- packet_writer pw(cout);
-
- file_id f_old_id, f_new_id;
- file_data f_old_data, f_new_data;
-
- complete(app, idx(args, 0)(), f_old_id);
- complete(app, idx(args, 1)(), f_new_id);
-
- N(app.db.file_version_exists(f_old_id), F("no such file '%s'") % f_old_id);
- app.db.get_file_version(f_old_id, f_old_data);
- N(app.db.file_version_exists(f_new_id), F("no such file '%s'") % f_new_id);
- app.db.get_file_version(f_new_id, f_new_data);
- delta del;
- diff(f_old_data.inner(), f_new_data.inner(), del);
- pw.consume_file_delta(f_old_id, f_new_id, file_delta(del));
-}
-
-CMD(rdata, N_("packet i/o"), N_("ID"), N_("write revision data packet to stdout"),
- OPT_NONE)
-{
- if (args.size() != 1)
- throw usage(name);
-
- packet_writer pw(cout);
-
- revision_id r_id;
- revision_data r_data;
-
- complete(app, idx(args, 0)(), r_id);
-
- N(app.db.revision_exists(r_id), F("no such revision '%s'") % r_id);
- app.db.get_revision(r_id, r_data);
- pw.consume_revision_data(r_id, r_data);
-}
-
-
-CMD(fdata, N_("packet i/o"), N_("ID"), N_("write file data packet to stdout"),
- OPT_NONE)
-{
- if (args.size() != 1)
- throw usage(name);
-
- packet_writer pw(cout);
-
- file_id f_id;
- file_data f_data;
-
- complete(app, idx(args, 0)(), f_id);
-
- N(app.db.file_version_exists(f_id), F("no such file '%s'") % f_id);
- app.db.get_file_version(f_id, f_data);
- pw.consume_file_data(f_id, f_data);
-}
-
-
-CMD(certs, N_("packet i/o"), N_("ID"), N_("write cert packets to stdout"),
- OPT_NONE)
-{
- if (args.size() != 1)
- throw usage(name);
-
- packet_writer pw(cout);
-
- revision_id r_id;
- vector< revision > certs;
-
- complete(app, idx(args, 0)(), r_id);
-
- app.db.get_revision_certs(r_id, certs);
- for (size_t i = 0; i < certs.size(); ++i)
- pw.consume_revision_cert(idx(certs, i));
-}
-
CMD(pubkey, N_("packet i/o"), N_("ID"), N_("write public key packet to stdout"),
OPT_NONE)
{
@@ -3922,6 +3842,10 @@
"get_file FILEID\n"
"get_manifest_of [REVID]\n"
"get_revision [REVID]\n"
+ "packet_for_rdata REVID\n"
+ "packets_for_certs REVID\n"
+ "packet_for_fdata FILEID\n"
+ "packet_for_fdelta OLD_FILE NEW_FILE\n"
"keys\n"),
N_("automation interface"),
OPT_NONE)
============================================================
--- tests/t_bad_packets.at 8e2ff9cc8d268247ab5471a1ac4548565e814eb5
+++ tests/t_bad_packets.at 2ab2b87f1b55c89f0132a7942a62f2d70c92c313
@@ -1,15 +1,13 @@
AT_SETUP([bad packet args])
MONOTONE_SETUP
-AT_CHECK(MONOTONE mdelta 73070030f7b0d0f3d4ee02545d45ca4bbe5e189f 6c704fbd4ef58f2447fd1a3e76911b2ebe97dc77, [1], [ignore], [ignore])
-AT_CHECK(MONOTONE mdata 73070030f7b0d0f3d4ee02545d45ca4bbe5e189f, [1], [ignore], [ignore])
-AT_CHECK(MONOTONE fdelta 73070030f7b0d0f3d4ee02545d45ca4bbe5e189f 6c704fbd4ef58f2447fd1a3e76911b2ebe97dc77, [1], [ignore], [ignore])
-AT_CHECK(MONOTONE fdata 73070030f7b0d0f3d4ee02545d45ca4bbe5e189f, [1], [ignore], [ignore])
-AT_CHECK(MONOTONE rdata 73070030f7b0d0f3d4ee02545d45ca4bbe5e189f, [1], [ignore], [ignore])
+AT_CHECK(MONOTONE automate packet_for_fdelta 73070030f7b0d0f3d4ee02545d45ca4bbe5e189f 6c704fbd4ef58f2447fd1a3e76911b2ebe97dc77, [1], [ignore], [ignore])
+AT_CHECK(MONOTONE automate packet_for_fdata 73070030f7b0d0f3d4ee02545d45ca4bbe5e189f, [1], [ignore], [ignore])
+AT_CHECK(MONOTONE automate packet_for_rdata 73070030f7b0d0f3d4ee02545d45ca4bbe5e189f, [1], [ignore], [ignore])
AT_CHECK(MONOTONE pubkey address@hidden, [1], [ignore], [ignore])
AT_CHECK(MONOTONE privkey address@hidden, [1], [ignore], [ignore])
-AT_CHECK(MONOTONE certs 73070030f7b0d0f3d4ee02545d45ca4bbe5e189f, [1], [ignore], [ignore])
+AT_CHECK(MONOTONE automate packets_for_certs 73070030f7b0d0f3d4ee02545d45ca4bbe5e189f, [1], [ignore], [ignore])
AT_CHECK(MONOTONE db check, [], [ignore], [ignore])
AT_CLEANUP