# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.

"""Apply validation rules to the projects.txt file

"""

import argparse

from openstack_requirements import project_config


_BLACKLIST = set([
    # NOTE(dhellmann): It's not clear why these don't get updates,
    # except that trying to do so may break the test jobs using them
    # because of the nature of the projects.
    'openstack-dev/hacking',
    'openstack-dev/pbr',
    # We can't enforce the check rules against this repo.
    'openstack/requirements',
])


def main():
    parser = argparse.ArgumentParser()
    parser.add_argument(
        'projects_list',
        default='projects.txt',
        help='path to the projects.txt file',
    )
    args = parser.parse_args()

    zuul_layout = project_config.get_zuul_layout_data()

    error_count = 0

    print('\nChecking %s' % args.projects_list)
    with open(args.projects_list, 'r') as f:
        for repo in f:
            repo = repo.strip()
            if repo.startswith('#'):
                continue
            if repo in _BLACKLIST:
                continue
            pe = project_config.require_check_requirements_for_repo(
                zuul_layout, repo)
            for e in pe:
                print(e)
                error_count += 1

    return 1 if error_count else 0