Skip to content

Commit

Permalink
Merge branch 'master' into njlynch/cf-breaking
Browse files Browse the repository at this point in the history
  • Loading branch information
mergify[bot] authored Jul 30, 2020
2 parents c2664e5 + 3cf6a94 commit f047a71
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 50 deletions.
2 changes: 1 addition & 1 deletion packages/@aws-cdk/pipelines/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -376,7 +376,7 @@ const pipeline = new CdkPipeline(this, 'Pipeline', {
});

const validationAction = new ShellScriptAction({
name: 'TestUsingSourceArtifact',
actionName: 'TestUsingSourceArtifact',
additionalArtifacts: [sourceArtifact],

// 'test.sh' comes from the source repository
Expand Down
6 changes: 2 additions & 4 deletions scripts/builddown
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,15 @@ echo " for advanced usage, see ${scriptdir}/foreach.sh"
echo "************************************************************"

if [ "$#" -eq 0 ]; then
${scriptdir}/foreach.sh --reset
${scriptdir}/foreach.sh --reset --down yarn build
else
if [ "$1" != "--resume" ]; then
echo "Unknown option: $1"
exit 1
fi
${scriptdir}/foreach.sh --down yarn build
fi

${scriptdir}/foreach.sh --down yarn build
${scriptdir}/foreach.sh --reset

echo "************************************************************"
echo "builddown done"
echo "************************************************************"
6 changes: 2 additions & 4 deletions scripts/buildup
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,15 @@ echo " for advanced usage, see ${scriptdir}/foreach.sh"
echo "************************************************************"

if [ "$#" -eq 0 ]; then
${scriptdir}/foreach.sh --reset
${scriptdir}/foreach.sh --reset --up yarn build
else
if [ "$1" != "--resume" ]; then
echo "Unknown option: $1"
exit 1
fi
${scriptdir}/foreach.sh --up yarn build
fi

${scriptdir}/foreach.sh --up yarn build
${scriptdir}/foreach.sh --reset

echo "************************************************************"
echo "buildup done"
echo "************************************************************"
105 changes: 64 additions & 41 deletions scripts/foreach.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,16 @@
# if a task fails, it will stop, and then to resume, simply run `foreach.sh` again (with or without the same command).
#
# to reset the session (either when all tasks finished or if you wish to run a different session), run:
# foreach.sh --reset
# foreach.sh [-r | --reset]
#
# to force a reset and run a session with the current, run:
# foreach.sh [-r | --reset] [-u | --up || -d | --down] COMMAND
#
# to run the command only against the current module and its dependencies:
# foreach.sh --up COMMAND
# foreach.sh [-u | --up] COMMAND
#
# to run the command only against the current module and its consumers:
# foreach.sh --down COMMAND
# foreach.sh [-d | --down] COMMAND
#
# --------------------------------------------------------------------------------------------------
set -euo pipefail
Expand All @@ -41,52 +44,72 @@ function success {
printf "\e[32;5;81m$@\e[0m\n"
}

if [[ "${1:-}" == "--reset" ]]; then
rm -f "${statedir}/.foreach."*
success "state cleared. you are free to start a new command."
exit 0
function reset {
rm -f "${statedir}/.foreach."*
success "state cleared. you are free to start a new command."
}

DIRECTION=""
RESET=0
SKIP=0
command_arg=""

for arg in "$@"
do
case "$arg" in
-r | --reset) RESET=1 ;;
-s | --skip) SKIP=1 ;;
-u | --up) DIRECTION="UP" ;;
-d | --down) DIRECTION="DOWN" ;;
*) command_arg="$command_arg$arg " ;;
esac
shift
done

if [[ "$RESET" -eq 1 ]]; then
reset
fi

if [[ "${1:-}" == "--skip" ]]; then
if [ ! -f ${statefile} ]; then
error "skip failed. no active sessions found."
exit 1
fi
next=$(head -1 ${statefile})
if [ -z "${next}" ]; then
error "skip failed. queue is empty. to reset:"
error " $0 --reset"
exit 1
fi
tail -n +2 "${statefile}" > "${statefile}.tmp"
cp "${statefile}.tmp" "${statefile}"
success "directory '$next' skipped. re-run the original foreach command to resume."
exit 0
if [[ "$RESET" -eq 1 && "$DIRECTION" == "" ]]; then
exit 0
fi

if [[ "$SKIP" -eq 1 ]]; then
if [ ! -f ${statefile} ]; then
error "skip failed. no active sessions found."
exit 1
fi
next=$(head -1 ${statefile})
if [ -z "${next}" ]; then
error "skip failed. queue is empty. to reset:"
error " $0 --reset"
exit 1
fi
tail -n +2 "${statefile}" > "${statefile}.tmp"
cp "${statefile}.tmp" "${statefile}"
success "directory '$next' skipped. re-run the original foreach command (without --reset) to resume."
exit 0
fi

direction=""
direction_desc=""
if [[ "${1:-}" == "--up" || "${1:-}" == "--down" ]]; then
if [ ! -f package.json ]; then
echo "--up or --down can only be executed from within a module directory (looking for package.json)"
exit 1
fi

scope=$(node -p "require('./package.json').name")
if [[ "$DIRECTION" == "UP" || "$DIRECTION" == "DOWN" ]]; then
if [ ! -f package.json ]; then
error "--up or --down can only be executed from within a module directory (looking for package.json)"
exit 1
fi

if [[ "${1:-}" == "--up" ]]; then
direction=" --scope ${scope} --include-dependencies"
direction_desc="('${scope}' and its dependencies)"
else # --down
direction=" --scope ${scope} --include-dependents"
direction_desc="('${scope}' and its consumers)"
fi
scope=$(node -p "require('./package.json').name")

shift
if [[ "$DIRECTION" == "UP" ]]; then
direction=" --scope ${scope} --include-dependencies"
direction_desc="('${scope}' and its dependencies)"
else # --down
direction=" --scope ${scope} --include-dependents"
direction_desc="('${scope}' and its consumers)"
fi
fi

command_arg="${@:-}"

if [ -f "${statefile}" ] && [ -f "${commandfile}" ]; then
command="$(cat ${commandfile})"
if [ ! -z "${command_arg}" ] && [ "${command}" != "${command_arg}" ]; then
Expand All @@ -110,8 +133,8 @@ fi

next="$(head -n1 ${statefile})"
if [ -z "${next}" ]; then
success "done (queue is empty). to reset:"
success " $0 --reset"
success "done (queue is empty). reseting queue:"
reset
exit 0
fi

Expand Down

0 comments on commit f047a71

Please sign in to comment.