Commit 16572de04bd4a739998b49ec8e9ecb00a27307c0
1 parent
a860f2a121
Exists in
master
[IMP] ADD repos.sh (from REPO 'foreign-addons')
Showing 1 changed file with 189 additions and 0 deletions Side-by-side Diff
repos.sh
| ... | ... | @@ -0,0 +1,189 @@ |
| 1 | +#!/bin/bash | |
| 2 | + | |
| 3 | +# export ADD_REMOTE="NO" | |
| 4 | +# export REMOTE_BRANCH="8.0" | |
| 5 | +# export PATH_PREFIX=".repos" | |
| 6 | +# export PATH_START="addons" | |
| 7 | +# export SYMLINKS_PATH="odoo-addons" | |
| 8 | +# export ADHOC_PATH="addons-adhoc" | |
| 9 | +# export CREATE_LINKS=1 | |
| 10 | +# export DEF_REPO="XX" | |
| 11 | + | |
| 12 | +# Build environment from env.txt file | |
| 13 | +while read line; do | |
| 14 | + export "$line" | |
| 15 | +done < env.txt | |
| 16 | + | |
| 17 | +export GIT_EDITOR=true | |
| 18 | + | |
| 19 | +read -e -p "Enter a list of github repos, separated by comma; or enter for update: " -i "" ACTION | |
| 20 | + | |
| 21 | +if [ "$ACTION" != "" ]; then | |
| 22 | + ADD_ADDON_REPOS=($(printf "$ACTION" | tr "," "\n")) | |
| 23 | + ACTION="" | |
| 24 | +else | |
| 25 | + UPDATE="1" | |
| 26 | + i=0 | |
| 27 | + j=0 | |
| 28 | + while read line; do | |
| 29 | + if [ "$i" -gt "6" ] && [ "$line" != "" ]; then | |
| 30 | + if [ "$line" != "Unsorted (inserted by repos.sh)" ] && [ "$line" != "===============================" ]; then | |
| 31 | + ADD_ADDON_REPOS[$j]=$line | |
| 32 | + j=$[j+1] | |
| 33 | + fi | |
| 34 | + fi | |
| 35 | + i=$[i+1] | |
| 36 | + done < ADD.md | |
| 37 | + # set some vars for updating: | |
| 38 | + ADD_REMOTE="NO" | |
| 39 | + read -e -p "Trying to update $[j+1] repos; enter to continue, input to quit: " -i "" ACTION | |
| 40 | +fi | |
| 41 | + | |
| 42 | +if [ "$ACTION" != "" ]; then | |
| 43 | + exit 0 | |
| 44 | +else | |
| 45 | + printf "...................................................START..................................................." | |
| 46 | + if [ "$DEF_REPO" ]; then | |
| 47 | + if [ "$DEF_REPO" != "XX" ]; then | |
| 48 | + printf "set var 'ADD_ADDON_REPOS'" | |
| 49 | + ADD_ADDON_REPOS=("$DEF_REPO") | |
| 50 | + fi | |
| 51 | + fi | |
| 52 | + if [ ! "$REMOTE_BRANCH" ]; then | |
| 53 | + REMOTE_BRANCH="8.0" | |
| 54 | + fi | |
| 55 | + if [ ! "$SYMLINKS_PATH" ]; then | |
| 56 | + SYMLINKS_PATH="odoo-addons" | |
| 57 | + fi | |
| 58 | + if [ ! "$PATH_START" ]; then | |
| 59 | + PATH_START="addons" | |
| 60 | + fi | |
| 61 | + if [ ! "$PATH_PREFIX" ]; then | |
| 62 | + PATH_PREFIX=".repos" | |
| 63 | + fi | |
| 64 | + if [ ! "$ADD_REMOTE" ]; then | |
| 65 | + ADD_REMOTE="YES" | |
| 66 | + fi | |
| 67 | + if [ ! "$CREATE_LINKS" ]; then | |
| 68 | + CREATE_LINKS=1 | |
| 69 | + fi | |
| 70 | + # :' = Multiline Comment | |
| 71 | + # ADDED_REPOS=":'\n" | |
| 72 | + ADDED_REPOS="" | |
| 73 | + NOT_ADDED_REPOS="" | |
| 74 | + for i in "${ADD_ADDON_REPOS[@]}"; do | |
| 75 | + printf "repo '$i'" | |
| 76 | + | |
| 77 | + # Defaults | |
| 78 | + CREATE_LINKS=1 | |
| 79 | + | |
| 80 | + | |
| 81 | + j=($(printf "$i" | tr "~!~" "\n")) | |
| 82 | + if [ ${j[1]} ]; then | |
| 83 | + i=${j[0]} | |
| 84 | + if [ ${j[1]} = "CREATE_LINKS=2" ]; then | |
| 85 | + CREATE_LINKS=2 | |
| 86 | + fi | |
| 87 | + fi | |
| 88 | + | |
| 89 | + j=($(printf "$i" | tr ":" "\n")) | |
| 90 | + if [ ${j[1]} ]; then | |
| 91 | + i=${j[0]} | |
| 92 | + REMOTE_BRANCH=${j[1]} | |
| 93 | + fi | |
| 94 | + printf "using branch $REMOTE_BRANCH" | |
| 95 | + | |
| 96 | + REPO=${i} && REPL="--" && REMOTE=${REPO/\//$REPL} | |
| 97 | + if [ "$UPDATE" = "1" ]; then | |
| 98 | + git fetch --no-tags remote--${REMOTE} | |
| 99 | + SUBTREE_CMD="pull" | |
| 100 | + git subtree ${SUBTREE_CMD} --prefix=${PATH_PREFIX}/${REPO} remote--${REMOTE} ${REMOTE_BRANCH} --squash -q | |
| 101 | + | |
| 102 | + while read line; do | |
| 103 | + if [[ ${REPO} == ${line} ]]; then | |
| 104 | + printf "++++++ MATCH ++++++" | |
| 105 | + CREATE_LINKS=0 | |
| 106 | + fi | |
| 107 | + printf "+++++ NOMATCH +++++" | |
| 108 | + printf ${REPO} | |
| 109 | + done < ignore.txt | |
| 110 | + | |
| 111 | + elif [ "$ADD_REMOTE" = "YES" ]; then | |
| 112 | + git remote add -f --no-tags remote--${REMOTE} https://github.com/${REPO}.git | |
| 113 | + SUBTREE_CMD="add" | |
| 114 | + git subtree ${SUBTREE_CMD} --prefix=${PATH_PREFIX}/${REPO} remote--${REMOTE}/${REMOTE_BRANCH} --squash | |
| 115 | + fi | |
| 116 | + ADDED_REPOS+=${REPO} | |
| 117 | + ADDED_REPOS+='\n' | |
| 118 | + | |
| 119 | + if [ "$CREATE_LINKS" != 0 ]; then | |
| 120 | + if [ "$CREATE_LINKS" = 1 ]; then | |
| 121 | + for j in ${PATH_PREFIX}/${REPO}/* ; do | |
| 122 | + if [ -d "$j" ]; then | |
| 123 | + n=${j##*/} | |
| 124 | + if [ $n != "__unported__" ]; then | |
| 125 | + if [ -h ${SYMLINKS_PATH}/$n ]; then | |
| 126 | + printf "symlink exists '${REPO}/$n'" | |
| 127 | + if [ "$ADD_REMOTE" = "YES" ]; then | |
| 128 | + NOT_ADDED_REPOS="$NOT_ADDED_REPOS\n${REPO}/$n\n" | |
| 129 | + fi | |
| 130 | + else | |
| 131 | + printf "create symlink 1: '${REPO}/$n'" | |
| 132 | + ln -s "../../${PATH_PREFIX}/${REPO}/$n" "${SYMLINKS_PATH}/$n" | |
| 133 | + fi | |
| 134 | + if [ -h ${ADHOC_PATH}/$n ]; then | |
| 135 | + printf "delete adhoc" | |
| 136 | + rm ${ADHOC_PATH}/$n | |
| 137 | + fi | |
| 138 | + fi | |
| 139 | + fi | |
| 140 | + done | |
| 141 | + elif [ "$CREATE_LINKS" = 2 ]; then | |
| 142 | + printf "create symlink 2: '${REPO}/'" | |
| 143 | + REPO_SEP=($(printf "$REPO" | tr "/" "\n")) | |
| 144 | + if [ ${REPO_SEP[1]} ]; then | |
| 145 | + REPO=${REPO_SEP[1]} | |
| 146 | + PATH_PREFIX+="/${REPO_SEP[0]}" | |
| 147 | + fi | |
| 148 | + ln -s ../${PATH_PREFIX}/${REPO} ${SYMLINKS_PATH}/${REPO} | |
| 149 | + PATH_PREFIX=".repos" | |
| 150 | + elif [ "$CREATE_LINKS" = 3 ]; then | |
| 151 | + ln -s ${SYMLINKS_PATH}/${REPO} ${PATH_START}/ | |
| 152 | + else | |
| 153 | + ln -s ${SYMLINKS_PATH}/${REPO} ${PATH_START}/${CREATE_LINKS} | |
| 154 | + fi | |
| 155 | + CREATE_LINKS=1 | |
| 156 | + fi | |
| 157 | + printf "..................................................DONE................................................." | |
| 158 | + done | |
| 159 | + if [ "$UPDATE" = "1" ]; then | |
| 160 | + printf 'Repos updated:\n---------------\n' + "$ADDED_REPOS" + '\n' | |
| 161 | + elif [ "$ADDED_REPOS" != "" ]; then | |
| 162 | + printf "$ADDED_REPOS\n" >> ADD.md | |
| 163 | + fi | |
| 164 | + if [ "$NOT_ADDED_REPOS" != "" ]; then | |
| 165 | + printf "$NOT_ADDED_REPOS" >> exists.txt | |
| 166 | + fi | |
| 167 | + find -name "*.pyc" -delete | |
| 168 | + find -name "*.pyo" -delete | |
| 169 | + find -name "*.pyd" -delete | |
| 170 | + find -name "*.py~" -delete | |
| 171 | + find -name "*.mo" -delete | |
| 172 | + find -name "pip-log.txt" -delete | |
| 173 | + find -name "pip-delete-this-directory.txt" -delete | |
| 174 | + find -name "Thumbs.db" -delete | |
| 175 | + find -name ".directory" -delete | |
| 176 | + find -name ".DS_Store" -delete | |
| 177 | + find -name ".*.kate-swp" -delete | |
| 178 | + find -name ".swp.*" -delete | |
| 179 | + find -name "*.~1~" -delete | |
| 180 | + find -name "*.egg-info" -delete | |
| 181 | + find -name ".installed.cfg" -delete | |
| 182 | + find -name "*.egg" -delete | |
| 183 | + find -name "*.manifest" -delete | |
| 184 | + find -name "*.spec" -delete | |
| 185 | + find -name "*.so" -delete | |
| 186 | + find -name "__MACOSX" -exec rm -r "{}" \; | |
| 187 | + find -name "__pycache__" -exec rm -r "{}" \; | |
| 188 | + find -name "develop-eggs" -exec rm -r "{}" \; | |
| 189 | +fi | |
| 0 | 190 | \ No newline at end of file |