diff options
author | Jordan R Abrahams <ajordanr@google.com> | 2022-01-12 23:38:30 +0000 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2022-01-14 04:47:54 +0000 |
commit | b0d6ea52f9ebad2924b04f6a87da28b1256480b1 (patch) | |
tree | 5ee555b7d42656bd9c3b908f2236aa61c61a7d0c /llvm_tools/patch_sync/src/main.rs | |
parent | 384bee7f9cdad4c183e7339985a26f3b9e9e31ee (diff) | |
download | toolchain-utils-b0d6ea52f9ebad2924b04f6a87da28b1256480b1.tar.gz |
patch_sync: Refactor shared main code
This commit attempts to remove duplicated code between
Android and CrOS, as the complexity between this duplicated
code exceeded the scope of the main file.
Also adds display_patches code.
This is to pretty print what patches are getting applied and
to where. Only enabled if --verbose is on.
Also does some minor function cleanup in version_control.rs.
BUG=b:209493133
TEST=cargo test
TEST=patch_sync transpose --dry-run --verbose <...>
Change-Id: I63410160ff5159f4c079ac1cc189674fe3fc02a0
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/3379481
Reviewed-by: George Burgess <gbiv@chromium.org>
Tested-by: Jordan Abrahams-Whitehead <ajordanr@google.com>
Commit-Queue: Jordan Abrahams-Whitehead <ajordanr@google.com>
Diffstat (limited to 'llvm_tools/patch_sync/src/main.rs')
-rw-r--r-- | llvm_tools/patch_sync/src/main.rs | 62 |
1 files changed, 31 insertions, 31 deletions
diff --git a/llvm_tools/patch_sync/src/main.rs b/llvm_tools/patch_sync/src/main.rs index cec523bb..bfcba584 100644 --- a/llvm_tools/patch_sync/src/main.rs +++ b/llvm_tools/patch_sync/src/main.rs @@ -2,6 +2,7 @@ mod patch_parsing; mod version_control; use anyhow::{Context, Result}; +use patch_parsing::PatchCollection; use std::borrow::ToOwned; use std::path::PathBuf; use structopt::StructOpt; @@ -55,11 +56,10 @@ fn show_subcmd( ctx.setup()?; let cros_patches_path = ctx.cros_patches_path(); let android_patches_path = ctx.android_patches_path(); - let cur_cros_collection = patch_parsing::PatchCollection::parse_from_file(&cros_patches_path) + let cur_cros_collection = PatchCollection::parse_from_file(&cros_patches_path) .context("could not parse cros PATCHES.json")?; - let cur_android_collection = - patch_parsing::PatchCollection::parse_from_file(&android_patches_path) - .context("could not parse android PATCHES.json")?; + let cur_android_collection = PatchCollection::parse_from_file(&android_patches_path) + .context("could not parse android PATCHES.json")?; let merged = cur_cros_collection.union(&cur_android_collection)?; println!("{}", merged.serialize_patches()?); Ok(()) @@ -89,33 +89,24 @@ fn transpose_subcmd(args: TransposeOpt) -> Result<()> { let cros_patches_path = ctx.cros_patches_path(); let android_patches_path = ctx.android_patches_path(); - // Chromium OS Patches ---------------------------------------------------- - let mut cur_cros_collection = - patch_parsing::PatchCollection::parse_from_file(&cros_patches_path) - .context("parsing cros PATCHES.json")? - .filter_patches(|p| p.platforms.contains("chromiumos")); - let new_cros_patches: patch_parsing::PatchCollection = { - let cros_old_patches_json = ctx.old_cros_patch_contents(&args.old_cros_ref)?; - let old_cros_collection = patch_parsing::PatchCollection::parse_from_str( - cros_patches_path.parent().unwrap().to_path_buf(), - &cros_old_patches_json, - )?; - cur_cros_collection.subtract(&old_cros_collection)? - }; - - // Android Patches ------------------------------------------------------- - let mut cur_android_collection = - patch_parsing::PatchCollection::parse_from_file(&android_patches_path) - .context("parsing android PATCHES.json")? - .filter_patches(|p| p.platforms.contains("android")); - let new_android_patches: patch_parsing::PatchCollection = { - let android_old_patches_json = ctx.old_android_patch_contents(&args.old_android_ref)?; - let old_android_collection = patch_parsing::PatchCollection::parse_from_str( - android_patches_path.parent().unwrap().to_path_buf(), - &android_old_patches_json, - )?; - cur_android_collection.subtract(&old_android_collection)? - }; + // Get new Patches ------------------------------------------------------- + let (mut cur_cros_collection, new_cros_patches) = patch_parsing::new_patches( + &cros_patches_path, + &ctx.old_cros_patch_contents(&args.old_cros_ref)?, + "chromiumos", + ) + .context("finding new patches for chromiumos")?; + let (mut cur_android_collection, new_android_patches) = patch_parsing::new_patches( + &android_patches_path, + &ctx.old_android_patch_contents(&args.old_android_ref)?, + "android", + ) + .context("finding new patches for android")?; + + if args.verbose { + display_patches("New patches from Chromium OS", &new_cros_patches); + display_patches("New patches from Android", &new_android_patches); + } if args.dry_run { println!("--dry-run specified; skipping modifications"); @@ -148,6 +139,15 @@ fn transpose_subcmd(args: TransposeOpt) -> Result<()> { Ok(()) } +fn display_patches(prelude: &str, collection: &PatchCollection) { + println!("{}", prelude); + if collection.patches.is_empty() { + println!(" [No Patches]"); + return; + } + println!("{}", collection); +} + #[derive(Debug, structopt::StructOpt)] #[structopt(name = "patch_sync", about = "A pipeline for syncing the patch code")] enum Opt { |