#!/bin/bash
# Copyright 2020 ADTRAN, Inc.
#
# 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

for version in $(curl -s https://pypi.org/pypi/device-management-interface/json | jq '.releases | keys' | jq '.[]'); do
    version=${version//\"/}
    filename=dmi_${version//\./\_}

    python3 -m pip install -q device-management-interface==$version

    if [ -d "./grpc_robot/services/dmi/$filename" ]; then

        python3 -m robot.libdoc -P . grpc_robot.Dmi docs/$filename.html
        python3 -m robot.libdoc -P . grpc_robot.Dmi docs/$filename.xml
    fi

done

python3 -m robot.libdoc -P . grpc_robot.Collections docs/collections.html
python3 -m robot.libdoc -P . grpc_robot.Collections docs/collections.xml
python3 -m robot.libdoc -P . grpc_robot.DmiTools docs/dmi_tools.html
python3 -m robot.libdoc -P . grpc_robot.DmiTools docs/dmi_tools.xml
