blob: 3a64dbfa5cd534a107520dba93e77ed399e8e77d [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
22 echo -e "\n======== Applying manual patch on Project $GIT_PROJECT ========"
23 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
37 echo -e "========= Applying patch failed! =========\n"
38 exit 1
39 fi
40 popd > /dev/null
41 else
42 echo "No such directory! $repo_path"
43 exit 1
44 fi
Kelvin Zhang0322c7e2022-04-25 18:19:41 +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
60 echo -e "\n======== Applying manual patch on Project $GERRIT_PROJECT ========"
61 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
75 echo -e "========= Applying patch failed! =========\n"
76 exit 1
77 fi
78 popd > /dev/null
79 else
80 echo "No such directory! $repo_path"
81 exit 1
82 fi
83 echo -e "======== Done ========\n"
84fi
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
96
97 i=1
98 for GERRIT_PROJECT in $GERRIT_PROJECTS; do
99 echo -e "\n======== Applying manual patch on Project $GERRIT_PROJECT ========"
100 keyline=`grep "name=\"$GERRIT_PROJECT\"" $CURRENT_MANIFEST_FILE`
101
102 for keyword in $keyline; do
103 if [[ $keyword == path=* ]]; then
104 repo_path=`echo ${keyword#*path=} | sed 's/\"//g'`
105 break;
106 fi
107 done
108
109 if [ -d "$repo_path" ]; then
110 GERRIT_CHANGE_REF=$(echo $GERRIT_CHANGE_REFS | awk "{print \$$i}")
111 pushd $repo_path > /dev/null
112 git fetch ssh://${GERRIT_SERVER}:${GERRIT_PORT}/${GERRIT_PROJECT} ${GERRIT_CHANGE_REF}
113 git cherry-pick FETCH_HEAD
114 if [ "$?" -ne 0 ]; then
115 echo -e "========= Applying patch failed! =========\n"
116 exit 1
117 fi
118 popd > /dev/null
119 else
120 echo "No such directory! $repo_path"
121 exit 1
122 fi
123 echo -e "======== Done ========\n"
124 i=$((i+1))
125 done
126fi