requirements/tools/get-health-report.sh

77 lines
2.5 KiB
Bash
Executable File

#!/usr/bin/env bash
# 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.
# Checks all of our tracked packages for any issues
TOOLSDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
BASEDIR=$(dirname ${TOOLSDIR})
source ${TOOLSDIR}/functions
# Make sure we are using our venv
enable_venv "${BASEDIR}"
update=
if [[ "$#" -eq 1 ]]; then
update="${1}"
fi
# Save off our current timestamp for use later
current=$(date +%s)
# Loop through each package to get details and check for issues
get_tracked_requirements
for req in $reqs; do
count=$(search_reqs ${req} |
grep -v " openstack/${req} " |
wc -l)
metadata=$(curl -s -L "https://pypi.org/pypi/$req/json")
summary=$(echo "${metadata}" | jq -r '.info.summary')
last_release=$(echo "${metadata}" | jq -r '.info.version')
release_date=$(echo "${metadata}" | jq -r ".releases.\"${last_release}\" | .[0].upload_time")
# Print basic package information
echo "${req}"
if [[ "${summary}" != "" ]]; then
echo " Summary: ${summary}"
fi
echo " Used by repos: ${count}"
echo " Last release: ${last_release}"
echo " Release date: ${release_date}"
# Check for various things to warn about
package_name=$(echo "${metadata}" | jq -r '.info.name')
if [[ "${req}" != "${package_name}" ]]; then
echo " WARNING: In g-r as ${req} but actual name is ${package_name}"
fi
py3=$(echo "${metadata}" | \
jq -r '.info.classifiers | .[]' | \
grep "Programming Language :: Python :: 3")
if [[ -z ${py3} ]]; then
echo " WARNING: No python 3 classifier in metadata"
fi
release=$(date -d $release_date +%s)
seconds_since_release=$((current-release))
years_since_release=$((seconds_since_release/60/60/24/365))
message=$(echo "It's been ${years_since_release} years since last release")
if [[ ${years_since_release} -gt 4 ]]; then
echo " !!WARNING!! ${message}"
elif [[ ${years_since_release} -gt 2 ]]; then
echo " WARNING ${message}"
fi
done