Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- set -e
- SELF_BASENAME=`basename $0`
- ROOT_DIR=`pwd`
- usage(){
- cat << EOF
- usage: ${SELF_BASENAME} [options] <COMMAND>
- Execute pub command in each child dir were "pubspec.yaml" will be found
- "flutter pub <COMMAND>" will be executed if dependency to flutter will be found
- "pub <COMMAND>" - in other cases
- OPTIONS:
- -h Show this help
- -r Execute command only in dirs where build_runner has dependencies
- -f Run command in foreground
- EOF
- }
- CURRENT_ACTION="print_version"
- BUILD_RUNNER_ONLY=0
- RUN_IN_BACKGROUND=1
- while getopts “:hrf” OPTION
- do
- case $OPTION in
- h)
- usage
- exit 1
- ;;
- r)
- BUILD_RUNNER_ONLY=1
- ;;
- f)
- RUN_IN_BACKGROUND=0
- ;;
- ?)
- usage
- exit 1
- ;;
- esac
- shift
- done
- COMMAND=$@
- PUBSPEC_FILES=`find . -name pubspec.yaml | sed "s|^\./||"`
- execute_with_prefix() {
- local prefix="$1"
- shift
- $@ > >(sed "s|^|[${prefix}]: |") 2> >(sed "s|^|[${prefix} (err)]:|" >&2)
- }
- #
- if [[ "${BUILD_RUNNER_ONLY}" -eq "1" ]]; then
- echo "[${SELF_BASENAME}]Filtering with packages has build_runner dependencies"
- NEW_PUBSPEC_FILES=""
- for PUBSPEC_FILE in ${PUBSPEC_FILES}; do
- if awk '!/^ *#/ && NF' "${ROOT_DIR}/${PUBSPEC_FILE}" | grep build_runner > /dev/null; then
- echo "[${SELF_BASENAME}] Found build_runner in ${PUBSPEC_FILE}"
- NEW_PUBSPEC_FILES="${NEW_PUBSPEC_FILES} ${PUBSPEC_FILE}"
- else
- echo "[${SELF_BASENAME}] Not found build_runner in ${PUBSPEC_FILE}"
- fi
- PUBSPEC_FILES="${NEW_PUBSPEC_FILES}"
- done
- fi
- for PUBSPEC_FILE in ${PUBSPEC_FILES}; do
- PUBSPEC_FILE_DIR=`dirname ${PUBSPEC_FILE}`
- cd ${ROOT_DIR}/${PUBSPEC_FILE_DIR};
- echo "[${SELF_BASENAME}]==================================";
- echo "[${SELF_BASENAME}]==>> ${PUBSPEC_FILE_DIR}"
- if awk '!/^ *#/ && NF' "${ROOT_DIR}/${PUBSPEC_FILE}" | grep flutter > /dev/null; then
- echo "[${SELF_BASENAME}]==>> Flutter detected"
- PUB_EXEC="flutter pub"
- else
- echo "[${SELF_BASENAME}]==>> Generic DART project"
- PUB_EXEC="pub"
- fi
- FULL_COMMAND="${PUB_EXEC} ${COMMAND}"
- if [[ ${RUN_IN_BACKGROUND} -eq 1 ]]; then
- echo "[${SELF_BASENAME}]==>> Run in background: \"${FULL_COMMAND}\""
- execute_with_prefix ${PUBSPEC_FILE_DIR} ${FULL_COMMAND} &
- else
- echo "[${SELF_BASENAME}]==>> Run in foreground: \"${FULL_COMMAND}\""
- execute_with_prefix ${PUBSPEC_FILE_DIR} ${FULL_COMMAND}
- fi
- echo "[${SELF_BASENAME}]==================================";
- done;
- if [[ ${RUN_IN_BACKGROUND} -eq 1 ]]; then
- echo "[${SELF_BASENAME}]==================================";
- echo "[${SELF_BASENAME}]==>> Waiting for the background tasks to complete"
- wait
- echo "[${SELF_BASENAME}]==>> Background tasks done"
- echo "[${SELF_BASENAME}]==================================";
- fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement