#!/bin/bash ## This is a helper script invoked by ./generation/diff_files.sh ## All the inputs to this script are provided by diff_files.sh ## You do not need to do anything for this script to run. ## Inputs provided in sequential order are : ## 1. ${mavenURL} -> The URL for artifact's latest version directory on maven central ## 2. ${sonatypeURL} -> The URL for artifact's staging directory on google sonatype ## 3. ${artifactId} -> self-explanatory ## 4. ${groupId} -> artifact's groupId ## output for this script are 2 files: # 1. diff-files-summary.txt : This will show success for artifacts which have same files on maven-central and sonatype, # and if they differ, it will show a diff failure message along with the names of the files that differ. # 2. total-diff.txt : For every artifact, this will show 4 things: # a. Sonatype directory URL # b. Files that exist on sonatype (with version omitted, since we only care about the file generated) # c. Maven directory URL # d. Files that exist on Maven (with version omitted, since we only care about the file generated) mavenCentralURL=$1 sonatypeURL=$2 artifactId=$3 groupId=$4 wget -O sonatypeFile --recursive -nd --no-parent ${sonatypeURL} ##why --header="User-Agent: ? -> Maven central denies CLI requests to browse a directory URL, so imitating a browser's behaviour by using this header. wget -O mavenFile --referer --recursive -nd --no-parent \ --header="User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36" \ ${mavenCentralURL} sed -n 's/.*href="\([^"]*\).*/\1/p' mavenFile >mavenContents.txt sed -n 's/.*href="\([^"]*\).*/\1/p' sonatypeFile >sonatypeContents.txt awk "/${groupId}/" sonatypeContents.txt >temp.txt if [[ "${groupId}" = *api* ]]; then cat temp.txt | while read line; do echo ${line} | awk -F '[/]' '{print $13}' | sed 's/[0-9]*//g' >>finalSonatype.txt done else cat temp.txt | while read line; do echo ${line} | awk -F '[/]' '{print $12}' | sed 's/[0-9]*//g' >>finalSonatype.txt done fi cat mavenContents.txt | while read line; do echo ${line} | sed 's/[0-9]*//g' >>finalMaven.txt done sed -i '' '1d' finalMaven.txt echo "###################################################################################################################################" >>total-diff.txt echo "----${artifactId} Sonatype files : ${sonatypeURL}" >>total-diff.txt cat finalSonatype.txt >>total-diff.txt echo "----${artifactId} Maven files : ${mavenCentralURL}" >>total-diff.txt cat finalMaven.txt >>total-diff.txt echo "--------------------------------------------------------------------------------------------" >>diff-files-summary.txt if diff finalMaven.txt finalSonatype.txt >/dev/null; then echo -e "${artifactId} File match success" >>diff-files-summary.txt else echo "---------------------------------^NEW-DIFF-FOUND^-----------------------------------------" >>diff-files-summary.txt echo "${artifactId} diff:" >>diff-files-summary.txt diff finalMaven.txt finalSonatype.txt >>diff-files-summary.txt fi rm -f mavenFile rm -f sonatypeFile rm -f mavenContents.txt rm -f sonatypeContents.txt rm -f finalSonatype.txt rm -f finalMaven.txt rm -f temp.txt