Add a flag to convert only a subset of partitions to COW
Test: th
Change-Id: I2e9be56083b3c4d7f733e94059d372c14d136c31
diff --git a/aosp/cow_converter.cc b/aosp/cow_converter.cc
index 2f93e3a..e464605 100644
--- a/aosp/cow_converter.cc
+++ b/aosp/cow_converter.cc
@@ -27,6 +27,7 @@
#include <base/files/file_path.h>
#include <libsnapshot/cow_writer.h>
+#include <gflags/gflags.h>
#include "update_engine/common/cow_operation_convert.h"
#include "update_engine/common/utils.h"
@@ -36,6 +37,10 @@
#include "update_engine/update_metadata.pb.h"
using android::snapshot::CowWriter;
+DEFINE_string(partitions,
+ "",
+ "Comma separated list of partitions to extract, leave empty for "
+ "extracting all partitions");
namespace chromeos_update_engine {
@@ -77,7 +82,15 @@
using chromeos_update_engine::MetadataParseResult;
using chromeos_update_engine::PayloadMetadata;
-int main(int argc, const char* argv[]) {
+int main(int argc, char* argv[]) {
+ gflags::SetUsageMessage(
+ "A tool to extract device images from Android OTA packages");
+ gflags::ParseCommandLineFlags(&argc, &argv, true);
+ auto tokens = android::base::Tokenize(FLAGS_partitions, ",");
+ const std::set<std::string> partitions(
+ std::make_move_iterator(tokens.begin()),
+ std::make_move_iterator(tokens.end()));
+
if (argc != 3) {
printf("Usage: %s <payload.bin> <extracted target_file>\n", argv[0]);
return -1;
@@ -131,6 +144,10 @@
if (partition.estimate_cow_size() == 0) {
continue;
}
+ if (!partitions.empty() &&
+ partitions.count(partition.partition_name()) == 0) {
+ continue;
+ }
LOG(INFO) << partition.partition_name();
if (!ProcessPartition(partition, images_dir, manifest.block_size())) {
return 6;