Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- ECHO=echo
- RUBY=$(which ruby)
- RUBY_OPTS="-c"
- ERB=$(which erb)
- ERB_OPTS="-x -T"
- PUPPET=$(which puppet)
- PUPPET_OPTS="parser validate"
- PUPPET_LINT=$(which puppet-lint)
- function determine_type {
- [ -d "$1" ] && return 0
- ext=$( echo $1 |awk -F. '{ print $NF }' )
- case $ext in
- pp) # need a better way to check for a manifest
- manifest_syntax $1
- lint_check $1
- ;;
- erb) # assume it's an erb if it's not a manifest
- erb_syntax $1
- ;;
- rb) # a bit of ruby
- ruby_syntax $1
- ;;
- *)
- ${ECHO} "$1 is something I don't recognize... skipping"
- ;;
- esac
- }
- function manifest_syntax {
- ${ECHO} -en "Checking manifest\t$1: "
- ${PUPPET} ${PUPPET_OPTS} $1 && ${ECHO} "Syntax OK"
- }
- function lint_check {
- ${ECHO} -en "Checking best practices\t$1: "
- ${PUPPET_LINT} $1 && ${ECHO} "Syntax OK"
- }
- function erb_syntax {
- ${ECHO} -en "Checking erb\t\t$1: "
- ${ERB} ${ERB_OPTS} '-' $1 | ${RUBY} ${RUBY_OPTS}
- }
- function ruby_syntax {
- ${ECHO} -en "Checking ruby\t\t$1: "
- ${RUBY} -rpuppet $1 && ${ECHO} "Syntax OK"
- }
- function notify {
- if [ -z "$QUIET" ]; then
- return
- else
- echo $1
- fi
- }
- if [ -z "$*" ]; then
- START=. #current directory
- notify "No files or directories specified, checking $START"
- else
- START=$*
- fi
- # loop through objects given on commandline
- for object in $(git diff HEAD --name-only); do
- if [ -d "$object" ]; then
- for file in $( find ${object} -not \( -name .git -prune \) -and -not \( -name .svn -prune \) -and -not \( -name CVS -prune \) ); do
- determine_type $file
- done
- elif [ -f "$object" ]; then
- determine_type $object
- fi
- done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement