-
Notifications
You must be signed in to change notification settings - Fork 71
/
publish.sh
executable file
·81 lines (61 loc) · 2.5 KB
/
publish.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#!/bin/bash
# 각 패키지에 README.md, CHANGELOG.md 파일 생성, pubspec.yaml 버전 업데이트, 로컬 의존성 제거, 배포해주는 스크립트.
# 로컬로 참조하는 의존성을 제거해줘야함
# 모듈 의존성 때문에 PACKAGE_LIST의 순서대로 로컬 의존성이 제거되어야함
SDK_NAME="kakao_flutter_sdk"
PACKAGE_LIST=("_common" "_auth" "_navi" "_template" "_share" "_user" "_friend" "_talk" "")
echo "Do you want to publish kakao_flutter_sdk?"
select yn in "Yes" "No"; do
case $yn in
Yes) break ;;
No)
exit
;;
esac
done
branch=$(git branch | sed -n -e 's/^\* \(.*\)/\1/p')
# release 또는 hotfix 브랜치가 아니면 스크립트 종료
if [[ $branch != "release"* ]] && [[ $branch != "hotfix"* ]]; then
echo "The current branch must be release or hotfix!"
exit
fi
version="0.0.0"
# 브랜치 이름에서 버전 파싱
if [[ $branch == "release"* ]]; then
version=${branch:8}
elif [[ $branch == "hotfix"* ]]; then
version=${branch:7}
fi
# 브랜치 이름에 버전 정보가 없으면 스크립트 종료
if [[ $version != *.*.* ]] || [[ $version == 0.0.0 ]]; then
echo "The current branch must contains version!"
exit
fi
# KakaoSdk.sdkVersion 변경
find packages/kakao_flutter_sdk_common/lib/src -name "kakao_sdk.dart" -exec perl -pi -e "s/static String sdkVersion .*/static String sdkVersion = \"${version}\";/g" {} \;
# 각 패키지의 pubspec.yaml 백업을 위한 디렉토리 생성
mkdir backup
cd "packages" || exit
for package in "${PACKAGE_LIST[@]}"; do
# 패키지 버전 업데이트
python3 ../update_version.py "${SDK_NAME}${package}/pubspec.yaml" "$version"
# pubspec.yaml 백업을 위한 패키지 디렉토리 생성
mkdir ../backup/${SDK_NAME}"$package"
# 생성한 디렉토리에 pubspec.yaml 파일 백업
cp "${SDK_NAME}${package}/pubspec.yaml" "../backup/${SDK_NAME}${package}/"
cp "../README.md" "${SDK_NAME}${package}/"
cp "../CHANGELOG.md" "${SDK_NAME}${package}/"
# 로컬 참조를 외부 참조로 변경
python3 ../edit_dependency.py "${SDK_NAME}${package}/pubspec.yaml" "$version"
# 각 패키지로 이동해서 배포
cd "${SDK_NAME}$package" || exit
flutter packages pub publish -f || exit
cd ..
# 백업한 pubspec.yaml을 다시 복구
mv "../backup/${SDK_NAME}${package}/pubspec.yaml" "${SDK_NAME}${package}/pubspec.yaml"
# README.md, CHANGELOG.md 파일 삭제
rm "${SDK_NAME}${package}/README.md"
rm "${SDK_NAME}${package}/CHANGELOG.md"
done
# 백업 디렉토리 삭제
rm -r ../backup