]> git.wh0rd.org - home.git/blob - .bin/cros-repo
add group/manifest flags
[home.git] / .bin / cros-repo
1 #!/bin/bash
2
3 usage() {
4 cat <<-EOF
5 Usage: repo-cros [options]
6
7 Options:
8 depot_tools clone depot_tools tree
9 int switch to internal tree
10 ext switch to external tree
11 -b <branch> switch branches (use "master" to get to ToT)
12 -r <path> patch to reference repo (e.g. ~/chromiumos/)
13 -g <group>
14 -m <manifest>
15
16 Operates on the repo in ${PWD}
17 EOF
18 exit ${1:-1}
19 }
20
21 v() {
22 printf '%s\n%s\n' "${PWD}" "$*"
23 "$@"
24 }
25
26 email="vapier@chromium.org"
27 REF=
28 BRANCH=
29 MANIFEST=
30 MANIFEST_NAME=
31 GROUPS=()
32 REPO_URL=
33 while [[ $# -gt 0 ]] ; do
34 case $1 in
35 depot_tools|dt)
36 exec git clone https://git.chromium.org/chromium/tools/depot_tools.git
37 ;;
38 int)
39 MANIFEST='ssh://gerrit-int.chromium.org:29419/chromeos/manifest-internal.git'
40 REPO_URL='https://git.chromium.org/git/external/repo.git'
41 ;;
42 ext)
43 MANIFEST='https://git.chromium.org/git/chromiumos/manifest.git'
44 REPO_URL='https://git.chromium.org/git/external/repo.git'
45 ;;
46 -b)
47 BRANCH=$2
48 shift
49 ;;
50 -r)
51
52 REF=$(realpath "${2:-$(echo ~/chromiumos)}")
53 shift
54 ;;
55 -g)
56 GROUPS+=( "$2" )
57 shift
58 ;;
59 -m)
60 MANIFEST_NAME="${2%.xml}.xml"
61 shift
62 ;;
63 *)
64 usage
65 ;;
66 esac
67 shift
68 done
69
70 if [[ ${#BRANCH} -eq 3 ]] && [[ -d ${REF} ]] ; then
71 BRANCH=$(git --git-dir="${REF}/.repo/manifests.git" branch -a | grep -o "release-${BRANCH}.*")
72 fi
73
74 v repo init \
75 ${MANIFEST:+-u "${MANIFEST}"} \
76 ${REPO_URL:+--repo-url="${REPO_URL}"} \
77 ${REF:+--reference "${REF}"} \
78 ${MANIFEST_NAME:+-m "${MANIFEST_NAME}"} \
79 ${BRANCH:+-b "${BRANCH}"}
80 # ${GROUPS:+-g "${GROUPS[*]}"}
81
82 rdir=$(realpath "`pwd`")
83 while [[ ! -d ${rdir}/.repo ]] ; do
84 rdir=${rdir%/*}
85 [[ ${rdir:-/} == "/" ]] && break
86 done
87 rdir+="/.repo"
88 if [[ -d ${rdir} ]] ; then
89 gcfg() { git --git-dir="$1" config user.email "${@:2}" ; }
90 if [[ $(gcfg "${rdir}/manifests.git") != "${email}" ]] ; then
91 echo "${rdir}: setting e-mail to ${email}"
92 find "${rdir}" -type d -name '*.git' | \
93 while read d ; do
94 gcfg "${d}" ${email}
95 done
96 fi
97 fi
98
99 exit 0