77 lines
2.5 KiB
Bash
Executable File
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
|