Return to license-check CVS log | Up to [local] / ports |
File: [local] / ports / Attic / license-check (download)
Revision 1.1, Mon Apr 13 05:12:55 1998 UTC (26 years, 1 month ago) by marc
add script to verify distribution directory agains the LICENSE file. Some minor changes to the licence file. |
#! /bin/sh # # $OpenBSD: license-check,v 1.1 1998/04/13 05:12:55 marc Exp $ # # This script verifies that all files in a given directory are # mentioned in the ports LICENSE file as Distribution allowed. # Output is three lists: # # Missing files: files that should be in the directory (if the # intent is to obtain all files that can be # re-distributed) but are not. # # Bad files: files that must NOT be in a distribution # directory. These are listed in the form # of a shell `rm -f xxx' command so they can # be fed to the shell after manual verification. # # Extra files: Files that are in the given directory that are # not mentioned in the ports LICENSE file. # # The ports base directory. Note: this may be supplied from the environment # using the standard bsd.port.mkl name of PORTSDIR # LICENCE=${PORTSDIR:-/usr/ports}/LICENSE # Our name and a function to spit out the usage. Exit. # prog=`basename $0` usage () { if [ ! -z "$1" ]; then echo "$prog: $1" fi echo "usage: $prog distribution-directory" exit 1 } # Verify we have one param and that it is the name of a directory. # If not spit out our usage and exit # if [ $# -eq 1 ]; then if [ -d $1 ]; then DIST=$1 else usage "$1 is not a directory" fi else usage fi # This awk script matches the licence file agains an `ls' of of the given # distribution directory and spits instructions out to stdout. # /bin/ls $DIST | awk -v L=$LICENCE ' BEGIN { # Process license file # while ( getline <L ) { if ( NF == 4 ) { if ( $1 == "Y" ) { good_files[ $3 ] = 0 } else if ( $1 == "N" ) { bad_files[ $3 ] = 0 } } } unk_count = 0 } $1 in good_files { good_files[ $1 ] = 1 next } $1 in bad_files { bad_files[ $1 ] = 1 next } { unk_files[ unk_count++ ] = $1 } END { header = 0 for ( f in good_files ) { if ( good_files[ f ] == 0 ) { if ( ! header ) { print "You are missing the following files:" print header = 1 } print f } } if ( header ) { print header = 0 } for ( f in bad_files ) { if ( bad_files[ f ] == 1 ) { if ( ! header ) { print "You MUST remove the following files:" print header = 1 } print "rm -f", f } } if ( header ) { print header = 0 } if ( unk_count > 0 ) { print "The following files are extra and should probably be removed:" print for ( i = 0; i < unk_count; i += 1 ) { print "rm -f", unk_files[ i ] } print } } ' exit 0