Add generic changed_files script

This commit is contained in:
Adam J. Stewart 2016-08-22 14:35:41 -05:00
parent c6aa32bb3c
commit 679f787a65
2 changed files with 54 additions and 16 deletions

31
share/spack/qa/changed_files Executable file
View File

@ -0,0 +1,31 @@
#!/usr/bin/env bash
#
# Description:
# Returns a list of changed files.
#
# Usage:
# changed_files [<directory> ...]
# changed_files [<file> ...]
# changed_files ["*.<extension>" ...]
#
# Options:
# Directories, files, or globs to search for changed files.
#
# Move to root directory of Spack
# Allows script to be run from anywhere
SPACK_ROOT="$(dirname "$0")/../../.."
cd "$SPACK_ROOT"
# Add changed files that have been committed since branching off of develop
changed=($(git diff --name-only --find-renames develop... -- "$@"))
# Add changed files that have been staged but not yet committed
changed+=($(git diff --name-only --find-renames --cached -- "$@"))
# Add changed files that are unstaged
changed+=($(git diff --name-only --find-renames -- "$@"))
# Add new files that are untracked
changed+=($(git ls-files --exclude-standard --other -- "$@"))
# Return array
# Ensure that each file in the array is unique
printf '%s\n' "${changed[@]}" | sort -u

View File

@ -1,31 +1,38 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# #
# This script runs source code style checks on Spack. # Description:
# Runs source code style checks on Spack.
# See $SPACK_ROOT/.flake8 for a list of
# approved exceptions.
# #
# To run it, you'll need to have the Python flake8 installed locally. # Usage:
# run-flake8-tests
#
# Notes:
# Requires flake8. Can be installed by running:
# `spack install py-flake8`
# or:
# `pip install flake8`
# and adding the bin directory to your PATH.
# #
PYTHONPATH=./lib/spack:$PYTHONPATH
# Check for dependencies
flake8="$(which flake8)" flake8="$(which flake8)"
if [[ ! $flake8 ]]; then if [[ ! $flake8 ]]; then
echo "ERROR: flake8 is required to run this script." echo "ERROR: flake8 is required to run this script."
exit 1 exit 1
fi fi
# Move to Spack root; allows script to be run from anywhere QA_DIR="$(dirname "$0")"
cd "$(dirname "$0")/../../.." SPACK_ROOT="$QA_DIR/../../.."
# Add changed files that have been committed since branching off of develop # Move to root directory of Spack
changed=($(git diff --name-only --find-renames develop... -- '*.py')) # Allows script to be run from anywhere
# Add changed files that have been staged but not yet committed SPACK_ROOT="$(dirname "$0")/../../.."
changed+=($(git diff --name-only --find-renames --cached -- '*.py')) cd "$SPACK_ROOT"
# Add changed files that are unstaged
changed+=($(git diff --name-only --find-renames -- '*.py'))
# Add new files that are untracked
changed+=($(git ls-files --exclude-standard --other -- '*.py'))
# Ensure that each file in the array is unique # Gather array of changed files
changed=($(printf '%s\n' "${changed[@]}" | sort -u)) changed=($("$QA_DIR/changed_files" "*.py"))
function cleanup { function cleanup {
# Restore original package files after modifying them. # Restore original package files after modifying them.
@ -80,7 +87,7 @@ if [[ "${changed[@]}" ]]; then
exit 1 exit 1
fi fi
else else
echo No core framework files modified. echo No Python files were modified.
fi fi
exit 0 exit 0