blob: 18f9bb1d8226c080e031a366e1c9a2bca73be17b [file] [log] [blame]
kelvin.zhang2219b412022-03-04 16:44:41 +08001#!/bin/bash
2#
3# Copyright (c) 2021-2022 Amlogic, Inc. All rights reserved.
4#
5# SPDX-License-Identifier: MIT
6#
7
8if [ -n "$GIT_CHERRY_PICK" ]; then
9 [ -z "$CURRENT_MANIFEST_FILE" ] && CURRENT_MANIFEST_FILE="manifest.xml"
10 [ ! -f $CURRENT_MANIFEST_FILE ] && repo manifest -r -o $CURRENT_MANIFEST_FILE
11
Kelvin Zhangb2630702022-04-20 11:22:32 +080012 while IFS= read -r line
kelvin.zhang2219b412022-03-04 16:44:41 +080013 do
14 pattern=":29418/"
15 for keyword in $line; do
16 if [[ $keyword == *$pattern* ]]; then
17 GIT_PROJECT=`echo ${keyword#*${pattern}} | sed 's/\"//g' | sed 's/\/>//g'`
18 break;
19 fi
20 done
21
Kelvin Zhangb6cbb072022-04-26 14:19:35 +080022 echo -e "\n-------- Applying manual patch on Project $GIT_PROJECT --------"
kelvin.zhang2219b412022-03-04 16:44:41 +080023 keyline=`grep "name=\"$GIT_PROJECT\"" $CURRENT_MANIFEST_FILE`
24
25 for keyword in $keyline; do
26 if [[ $keyword == path=* ]]; then
27 repo_path=`echo ${keyword#*path=} | sed 's/\"//g'`
28 break;
29 fi
30 done
31
32 if [ -d "$repo_path" ]; then
33 pushd $repo_path > /dev/null
34 cmd=`echo $line | sed -e 's/ssh:\/\/.*@scgit.amlogic.com/ssh:\/\/scgit.amlogic.com/'`
35 eval $cmd
36 if [ "$?" -ne 0 ]; then
Kelvin Zhangb6cbb072022-04-26 14:19:35 +080037 echo -e "-------- Applying patch failed! --------\n"
kelvin.zhang2219b412022-03-04 16:44:41 +080038 exit 1
39 fi
40 popd > /dev/null
41 else
42 echo "No such directory! $repo_path"
43 exit 1
44 fi
Kelvin Zhangb6cbb072022-04-26 14:19:35 +080045 echo -e "-------- Done --------\n"
Kelvin Zhangb2630702022-04-20 11:22:32 +080046 done <<< "$GIT_CHERRY_PICK"
kelvin.zhang2219b412022-03-04 16:44:41 +080047fi
Kelvin Zhang0322c7e2022-04-25 18:19:41 +080048
49if [ -n "$MANUAL_GERRIT_CHANGE_NUMBER" ]; then
50 GERRIT_SERVER="scgit.amlogic.com"
51 GERRIT_PORT="29418"
52 GERRIT_QUERY_RESULT="changes.txt"
53 ssh -p $GERRIT_PORT $GERRIT_SERVER gerrit query --format=JSON --current-patch-set status:open change:$GERRIT_CHANGE_NUMBER > $GERRIT_QUERY_RESULT
54 GERRIT_PROJECT=$(jq -r '.project // empty' $GERRIT_QUERY_RESULT)
55 GERRIT_CHANGE_REF=$(jq -r '.currentPatchSet.ref // empty' $GERRIT_QUERY_RESULT)
56
57 [ -z "$CURRENT_MANIFEST_FILE" ] && CURRENT_MANIFEST_FILE="manifest.xml"
58 [ ! -f $CURRENT_MANIFEST_FILE ] && repo manifest -r -o $CURRENT_MANIFEST_FILE
59
Kelvin Zhangb6cbb072022-04-26 14:19:35 +080060 echo -e "\n-------- Applying manual patch on Project $GERRIT_PROJECT --------"
Kelvin Zhang0322c7e2022-04-25 18:19:41 +080061 keyline=`grep "name=\"$GERRIT_PROJECT\"" $CURRENT_MANIFEST_FILE`
62
63 for keyword in $keyline; do
64 if [[ $keyword == path=* ]]; then
65 repo_path=`echo ${keyword#*path=} | sed 's/\"//g'`
66 break;
67 fi
68 done
69
70 if [ -d "$repo_path" ]; then
71 pushd $repo_path > /dev/null
72 git fetch ssh://${GERRIT_SERVER}:${GERRIT_PORT}/${GERRIT_PROJECT} ${GERRIT_CHANGE_REF}
73 git cherry-pick FETCH_HEAD
74 if [ "$?" -ne 0 ]; then
Kelvin Zhangb6cbb072022-04-26 14:19:35 +080075 echo -e "-------- Applying patch failed! --------\n"
Kelvin Zhang0322c7e2022-04-25 18:19:41 +080076 exit 1
77 fi
78 popd > /dev/null
79 else
80 echo "No such directory! $repo_path"
81 exit 1
82 fi
Kelvin Zhangb6cbb072022-04-26 14:19:35 +080083 echo -e "-------- Done --------\n"
Kelvin Zhang0322c7e2022-04-25 18:19:41 +080084fi
85
86if [ -n "$MANUAL_GERRIT_TOPIC" ]; then
87 GERRIT_SERVER="scgit.amlogic.com"
88 GERRIT_PORT="29418"
89 GERRIT_QUERY_RESULT="changes.txt"
90 ssh -p $GERRIT_PORT $GERRIT_SERVER gerrit query --format=JSON --current-patch-set status:open topic:$MANUAL_GERRIT_TOPIC > $GERRIT_QUERY_RESULT
91 GERRIT_PROJECTS=$(jq -r '.project // empty' $GERRIT_QUERY_RESULT)
92 GERRIT_CHANGE_REFS=$(jq -r '.currentPatchSet.ref // empty' $GERRIT_QUERY_RESULT)
93
94 [ -z "$CURRENT_MANIFEST_FILE" ] && CURRENT_MANIFEST_FILE="manifest.xml"
95 [ ! -f $CURRENT_MANIFEST_FILE ] && repo manifest -r -o $CURRENT_MANIFEST_FILE
Kelvin Zhang90176112022-04-26 16:22:25 +080096 echo -e "\n======== Applying manual changes ========"
Kelvin Zhang0322c7e2022-04-25 18:19:41 +080097
98 i=1
99 for GERRIT_PROJECT in $GERRIT_PROJECTS; do
Kelvin Zhang90176112022-04-26 16:22:25 +0800100 echo -e "\n-------- Applying manual patch $i on Project $GERRIT_PROJECT --------"
Kelvin Zhang0322c7e2022-04-25 18:19:41 +0800101 keyline=`grep "name=\"$GERRIT_PROJECT\"" $CURRENT_MANIFEST_FILE`
102
103 for keyword in $keyline; do
104 if [[ $keyword == path=* ]]; then
105 repo_path=`echo ${keyword#*path=} | sed 's/\"//g'`
106 break;
107 fi
108 done
109
110 if [ -d "$repo_path" ]; then
111 GERRIT_CHANGE_REF=$(echo $GERRIT_CHANGE_REFS | awk "{print \$$i}")
112 pushd $repo_path > /dev/null
113 git fetch ssh://${GERRIT_SERVER}:${GERRIT_PORT}/${GERRIT_PROJECT} ${GERRIT_CHANGE_REF}
114 git cherry-pick FETCH_HEAD
115 if [ "$?" -ne 0 ]; then
Kelvin Zhang90176112022-04-26 16:22:25 +0800116 echo -e "-------- Failed to apply patch! --------"
Kelvin Zhang0322c7e2022-04-25 18:19:41 +0800117 exit 1
118 fi
119 popd > /dev/null
120 else
121 echo "No such directory! $repo_path"
122 exit 1
123 fi
Kelvin Zhang90176112022-04-26 16:22:25 +0800124 echo -e "-------- Done --------"
Kelvin Zhang0322c7e2022-04-25 18:19:41 +0800125 i=$((i+1))
126 done
Kelvin Zhangb6cbb072022-04-26 14:19:35 +0800127
128 i=$((i-1))
Kelvin Zhang90176112022-04-26 16:22:25 +0800129 [[ "$i" -eq 1 ]] && echo -e "\n======== Applied $i patch for $MANUAL_GERRIT_TOPIC ========\n"
130 [[ "$i" -gt 1 ]] && echo -e "\n======== Applied $i patches for $MANUAL_GERRIT_TOPIC ========\n"
Kelvin Zhang0322c7e2022-04-25 18:19:41 +0800131fi