Skip to content

Instantly share code, notes, and snippets.

@spectrox
Last active July 25, 2018 10:13
Show Gist options
  • Save spectrox/0670591f78bfcaeb7bcf64340ac29681 to your computer and use it in GitHub Desktop.
Save spectrox/0670591f78bfcaeb7bcf64340ac29681 to your computer and use it in GitHub Desktop.
# Все команды рассчитаны на мак
function dc-clear-logs {
SERVICENAME=$1
CONTAINER=$(docker-compose ps "$SERVICENAME" | grep "$SERVICENAME" | awk '{ print $1 }')
LOGPATH=$(docker inspect --format='{{.LogPath}}' "$CONTAINER")
echo 'echo "" > '"$LOGPATH" > ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
}
function git-sync-branch {
MAINBRANCH=$(git rev-parse --abbrev-ref HEAD)
MAINPATH=$(pwd)
find . -type d -name .git -exec dirname {} \; | while read REPOPATH; do
cd "$REPOPATH"
if [ -n "$(git status --porcelain)" ]; then
echo "[WARNING] $REPOPATH have uncommitted changes, skipping"
cd "$MAINPATH"
continue
fi
HAVEMAINBRANCH=$(git rev-parse --verify --quiet "$MAINBRANCH" && git rev-parse --abbrev-ref HEAD)
CURRENTBRANCH=$(git rev-parse --abbrev-ref HEAD)
if [ "$HAVEMAINBRANCH" != "" ] && [ "$CURRENTBRANCH" != "$MAINBRANCH" ]; then
echo "[INFO] $REPOPATH changing branch from $CURRENTBRANCH"
git checkout --quiet "$MAINBRANCH"
fi
cd "$MAINPATH"
done
}
function git-check-branches {
MAINPATH=$(pwd)
HEADER="Found changes:"
find . -type d -name .git -exec dirname {} \; | while read REPOPATH; do
cd "$REPOPATH"
CHANGES=$(git status --porcelain)
if [ -n "$CHANGES" ]; then
if [ "$HEADER" != "" ]; then
echo "$HEADER"
HEADER=""
fi
echo " $REPOPATH"
echo "$CHANGES"
fi
cd "$MAINPATH"
done
}
# На примере неймспейса abc:
# Есть директория ~/dev/abc, в которой есть ~/dev/abc/package1 и ~/dev/abc/package2
# Есть проект ~/dev/some-project. В нём есть ~/dev/some-project/vendor/abc/project1
#
# Переходим в ~/dev/some-project и выполняем:
# composer-map-dir abc ../abc
#
# Это проставит симлинки:
# ~/dev/some-project/vendor/abc/package1 -> ~/dev/abc/package1
# ~/dev/some-project/vendor/abc/package2 -> ~/dev/abc/package2
#
# composer-map-dir <namespace> <local-directory-for-namespace>
#
# Для работы требуется:
# brew cask install osxfuse && brew install bindfs
function composer-map-dir {
NAMESPACE=$1
REMOTE=$2
if [ "$NAMESPACE" = "" ]; then
echo "Missing package namespace argument"
exit
fi
if [ "$REMOTE" = "" ]; then
echo "Missing mapping directory argument"
exit
fi
if [ ! -d "$REMOTE" ]; then
echo "Directory does not exist: $REMOTE"
exit
fi
REMOTE=$(realpath $REMOTE)
CURRENTDIR=$(pwd)
WORKINGDIR="$CURRENTDIR/vendor/$NAMESPACE"
for PACKAGE in $(find "$WORKINGDIR" -type d -mindepth 1 -maxdepth 1 | awk -F'/' '{ print $NF }'); do
if [ -d "$REMOTE/$PACKAGE" ]; then
rm -rf "$WORKINGDIR/$PACKAGE"
mkdir "$WORKINGDIR/$PACKAGE"
sudo bindfs "$REMOTE/$PACKAGE" "$WORKINGDIR/$PACKAGE"
fi
done
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment