1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #!/bin/bash
- set -e
- # This script generates index files for the directory structure
- # of the apt and yum repos
- : ${DOCKER_RELEASE_DIR:=$DEST}
- APTDIR=$DOCKER_RELEASE_DIR/apt
- YUMDIR=$DOCKER_RELEASE_DIR/yum
- if [ ! -d $APTDIR ] && [ ! -d $YUMDIR ]; then
- echo >&2 'release-rpm or release-deb must be run before generate-index-listing'
- exit 1
- fi
- create_index() {
- local directory=$1
- local original=$2
- local cleaned=${directory#$original}
- # the index file to create
- local index_file="${directory}/index"
- # cd into dir & touch the index file
- cd $directory
- touch $index_file
- # print the html header
- cat <<-EOF > "$index_file"
- <!DOCTYPE html>
- <html>
- <head><title>Index of ${cleaned}/</title></head>
- <body bgcolor="white">
- <h1>Index of ${cleaned}/</h1><hr>
- <pre><a href="../">../</a>
- EOF
- # start of content output
- (
- # change IFS locally within subshell so the for loop saves line correctly to L var
- IFS=$'\n';
- # pretty sweet, will mimick the normal apache output. skipping "index" and hidden files
- for L in $(find -L . -mount -depth -maxdepth 1 -type f ! -name 'index' ! -name '.*' -prune -printf "<a href=\"%f\">%f|@_@%Td-%Tb-%TY %Tk:%TM @%f@\n"|sort|column -t -s '|' | sed 's,\([\ ]\+\)@_@,</a>\1,g');
- do
- # file
- F=$(sed -e 's,^.*@\([^@]\+\)@.*$,\1,g'<<<"$L");
- # file with file size
- F=$(du -bh $F | cut -f1);
- # output with correct format
- sed -e 's,\ @.*$, '"$F"',g'<<<"$L";
- done;
- ) >> $index_file;
- # now output a list of all directories in this dir (maxdepth 1) other than '.' outputting in a sorted manner exactly like apache
- find -L . -mount -depth -maxdepth 1 -type d ! -name '.' -printf "<a href=\"%f\">%-43f@_@%Td-%Tb-%TY %Tk:%TM -\n"|sort -d|sed 's,\([\ ]\+\)@_@,/</a>\1,g' >> $index_file
- # print the footer html
- echo "</pre><hr></body></html>" >> $index_file
- }
- get_dirs() {
- local directory=$1
- for d in `find ${directory} -type d`; do
- create_index $d $directory
- done
- }
- get_dirs $APTDIR
- get_dirs $YUMDIR
|