chromium/chrome/installer/mini_installer/generate_previous_version_mini_installer.py

# Copyright 2016 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Generates a mini_installer with a lower version than an existing one."""

import argparse
import os
import subprocess
import sys


def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('--alternate_version_generator',
                        help='Path to alternate_version_generator.')
    parser.add_argument('--mini_installer',
                        help='Path to input mini_installer')
    parser.add_argument('--out', help='Path to the generated mini_installer.')
    parser.add_argument('--path_7za', help='Path to 7za.exe')
    args = parser.parse_args()
    assert args.alternate_version_generator
    assert args.mini_installer
    assert args.out
    assert args.path_7za

    cmd = [
        os.path.abspath(args.alternate_version_generator),
        '--force',
        '--previous',
        '--mini_installer=' + args.mini_installer,
        '--out=' + args.out,
        '--7za_path=' + args.path_7za,
    ]

    try:
        # Run |cmd|, redirecting stderr to stdout in order for captured errors
        # to be inline with corresponding stdout.
        output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)
    except subprocess.CalledProcessError as e:
        raise Exception("Error while running cmd: %s\n"
                        "Exit code: %s\n"
                        "Command output:\n%s" %
                        (e.cmd, e.returncode, e.output))


if '__main__' == __name__:
    sys.exit(main())