1#!/usr/bin/env python3
2#
3# Copyright (C) 2022 The Android Open Source Project
4#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9#      http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16#
17
18import argparse
19import logging
20
21import update
22import utils
23
24VNDK_SNAPSHOT_SOURCE_BRANCHES = {
25    29: 'qt-gsi-release',
26    30: 'android11-gsi',
27    31: 'android12-gsi',
28    32: 'android12L-gsi',
29    33: 'android13-gsi',
30}
31
32def fetch_and_update_snapshots(versions, args):
33    for version in versions:
34        if version not in VNDK_SNAPSHOT_SOURCE_BRANCHES:
35            raise ValueError ('Unknown VNDK version: {}'.format(version))
36        logging.info('Updating snapshot version {}'.format(version))
37        branch = VNDK_SNAPSHOT_SOURCE_BRANCHES[version]
38        bid = utils.get_latest_vndk_bid(branch)
39
40        update.run(version, branch, bid, None, args.use_current_branch,
41                   args.remote, args.verbose)
42
43def get_args(parser):
44    parser.add_argument(
45        'versions',
46        metavar='vndk_version',
47        type=int,
48        nargs='*',
49        help='list of versions to fetch and update')
50    parser.add_argument(
51        '--all',
52        action='store_true',
53        help='fetch all vndk snapshots')
54    parser.add_argument(
55        '--use-current-branch',
56        action='store_true',
57        help='Perform the update in the current branch. Do not repo start.')
58    parser.add_argument(
59        '--remote',
60        default='aosp',
61        help=('Remote name to fetch and check if the revision of VNDK snapshot '
62              'is included in the source to conform GPL license. default=aosp'))
63    parser.add_argument(
64        '-v',
65        '--verbose',
66        action='count',
67        default=0,
68        help='Increase output verbosity, e.g. "-v", "-vv"')
69    return parser.parse_args()
70
71def main():
72    parser = argparse.ArgumentParser()
73    args = get_args(parser)
74    utils.set_logging_config(args.verbose)
75
76    if args.all:
77        versions = VNDK_SNAPSHOT_SOURCE_BRANCHES.keys()
78        fetch_and_update_snapshots(versions, args)
79        return
80
81    if not args.versions:
82        parser.print_help()
83        return
84
85    fetch_and_update_snapshots(args.versions, args)
86
87if __name__ == '__main__':
88    main()
89