#!/bin/sh
PUPPET_FILE_MANIFEST="/etc/puppetlabs/code/environments/production/modules/apl/manifests/file.pp"
TARGET=$1
if [ ! -f "${PUPPET_FILE_MANIFEST}" ]
then
echo "${PUPPET_FILE_MANIFEST} missing."
exit 2
fi
if [ ! -e ${TARGET} ]
then
echo "$TARGET missing"
exit 2
fi
TARGET_ABSOLUTE=`echo $TARGET | cut -c1`
if [ "${TARGET_ABSOLUTE}" != '/' ]
then
echo "Please use an absolute path"
exit 2
fi
TARGET_SANITIZED=`echo $TARGET | tr '[/\-\.]' '_' | sed 's/^_//'`
FILE_DEETS=`/bin/ls -ld ${TARGET} | head -1`
FILE_OWNER=`echo $FILE_DEETS | awk '{print $3}'`
FILE_GROUP=`echo $FILE_DEETS | awk '{print $4}'`
FILE_MODE=`stat ${TARGET} | egrep "^Access" | head -1 | awk '{print $2}' | cut -f1 -d/ | sed 's/(//'`
FILE_TYPE_CHAR=`echo $FILE_DEETS | cut -c1`
case $FILE_TYPE_CHAR in
'd' )
FILE_TYPE="directory"
;;
'-' )
FILE_TYPE="file"
;;
'l' )
FILE_TYPE="link"
;;
* )
echo "unknown file type $FILE_TYPE_CHAR"
esac
echo "class file::${TARGET_SANITIZED} {"
echo " file { '$TARGET_SANITIZED': "
echo " owner => '${FILE_OWNER}',"
echo " group => '${FILE_GROUP}',"
echo " mode => '${FILE_MODE}',"
echo " }"