diff --git a/pmb/parse/arguments.py b/pmb/parse/arguments.py index 142897e4..fcea1efa 100644 --- a/pmb/parse/arguments.py +++ b/pmb/parse/arguments.py @@ -437,6 +437,9 @@ def arguments(): bootimg_analyze = sub.add_parser("bootimg_analyze", help="Extract all the" " information from an existing boot.img") bootimg_analyze.add_argument("path", help="path to the boot.img") + bootimg_analyze.add_argument("-f", dest="force", action="store_true", + help="force even if the file seems to be" + " invalid") # Use defaults from the user's config file args = parser.parse_args() diff --git a/pmb/parse/bootimg.py b/pmb/parse/bootimg.py index 2c934f0a..f630fdbf 100644 --- a/pmb/parse/bootimg.py +++ b/pmb/parse/bootimg.py @@ -38,12 +38,22 @@ def bootimg(args, path): file_output = pmb.chroot.user(args, ["file", "-b", "boot.img"], working_dir=temp_path, return_stdout=True).rstrip() if "android bootimg" not in file_output.lower(): - if "linux kernel" in file_output.lower(): - raise RuntimeError("File is a Kernel image, you might need the 'heimdall-isorec'" - " flash method. See also: " - "") + if "force" in args and args.force: + logging.warning("WARNING: boot.img file seems to be invalid, but" + " proceeding anyway (-f specified)") else: - raise RuntimeError("File is not an Android bootimg. (" + file_output + ")") + logging.info("NOTE: If you are sure that your file is a valid" + " boot.img file, you could force the analysis" + " with: 'pmbootstrap bootimg_analyze " + path + + " -f'") + if "linux kernel" in file_output.lower(): + raise RuntimeError("File is a Kernel image, you might need the" + " 'heimdall-isorec' flash method. See also:" + " ") + else: + raise RuntimeError("File is not an Android boot.img. (" + + file_output + ")") # Extract all the files pmb.chroot.user(args, ["unpackbootimg", "-i", "boot.img"], working_dir=temp_path) diff --git a/test/test_bootimg.py b/test/test_bootimg.py index 73968fd9..7f051a99 100644 --- a/test/test_bootimg.py +++ b/test/test_bootimg.py @@ -56,7 +56,7 @@ def test_bootimg_kernel(args): def test_bootimg_invalid_file(args): with pytest.raises(RuntimeError) as e: pmb.parse.bootimg(args, __file__) - assert "File is not an Android bootimg" in str(e.value) + assert "File is not an Android boot.img" in str(e.value) def test_bootimg_normal(args):