1+ #! /usr/bin/env bash
2+ set -euo pipefail
3+
4+ usage () {
5+ echo " Usage: " 1>&2 ;
6+ echo " $0 arguments [optional arguments]" 1>&2 ;
7+ echo " Arguments : " 1>&2 ;
8+ echo " -t <TAG> tag, e.g. v1.0.0" 1>&2 ;
9+ echo " -p <GITHUB APP TOKEN> access token for pull request creation" 1>&2 ;
10+ echo " Optional arguments : " 1>&2 ;
11+ echo " -a <GIT_REPOSITORY> path to the repository, by default uses current path" 1>&2 ;
12+ exit 1;
13+ }
14+
15+ readonly DOCS_BASE_BRANCH_NAME_PRODUCTION=" publisher-production"
16+ readonly DOCS_BASE_BRANCH_NAME_STAGING=" publisher-staging"
17+ PATH_TO_REPO=$( pwd)
18+ GITHUB_PR_ACCESS_TOKEN=" "
19+ readonly GENERATED_DOCS_FOLDER=${PATH_TO_REPO} /documentation
20+ readonly DOCS_PREFIX=" libjava"
21+
22+ while getopts " t:a:p:" opt; do
23+ case " ${opt} " in
24+ t)
25+ TAG=${OPTARG}
26+ VERSION_NUMBER=" ${TAG// v} "
27+ BRANCH_NAME=" docs-${TAG} "
28+ ;;
29+ p)
30+ GITHUB_PR_ACCESS_TOKEN=${OPTARG}
31+ ;;
32+ a)
33+ PATH_TO_REPO=${OPTARG}
34+ ;;
35+ * )
36+ usage
37+ ;;
38+ esac
39+ done
40+
41+ echo " Repository path=${PATH_TO_REPO} "
42+
43+ checkIfGithubTokensAreProvided () {
44+ if [ -z " $GITHUB_PR_ACCESS_TOKEN " ]; then
45+ usage
46+ fi
47+ }
48+
49+ checkIfTagExist () {
50+ pushd " ${PATH_TO_REPO} "
51+ if [ " $( git tag --points-at HEAD) " = " $TAG " ]; then
52+ echo " tag ${TAG} exist"
53+ else
54+ echo " current commit doesn't point at the tag ${TAG} "
55+ usage
56+ fi
57+ echo " VERSION_NUMBER=${VERSION_NUMBER} "
58+
59+ popd > /dev/null
60+ }
61+
62+ generateDocs () {
63+ pushd " ${PATH_TO_REPO} "
64+ echo " Start generating docs"
65+
66+ make javadoc
67+
68+ echo " Finish generating docs"
69+ popd > /dev/null
70+ }
71+
72+ checkoutToPublisherStaging () {
73+ pushd " ${PATH_TO_REPO} "
74+
75+ echo " checkout to ${DOCS_BASE_BRANCH_NAME_STAGING} "
76+ git checkout " ${DOCS_BASE_BRANCH_NAME_STAGING} "
77+
78+ popd > /dev/null
79+ }
80+
81+ checkoutToPublisherProduction () {
82+ pushd " ${PATH_TO_REPO} "
83+
84+ echo " checkout to ${DOCS_BASE_BRANCH_NAME_PRODUCTION} "
85+ git checkout " ${DOCS_BASE_BRANCH_NAME_PRODUCTION} "
86+
87+ popd > /dev/null
88+ }
89+
90+ copyDocumentsToDocsFolders () {
91+ for fullPath in ` find $GENERATED_DOCS_FOLDER -type d -maxdepth 1 -mindepth 1 | grep $DOCS_PREFIX ` ; do
92+ docsDirectory=` basename $fullPath `
93+ targetDirectory=$PATH_TO_REPO /$docsDirectory /$VERSION_NUMBER
94+ mkdir $targetDirectory
95+ cp -r $fullPath /javadoc/. $targetDirectory
96+ done
97+ }
98+
99+ pushDocsToStaging () {
100+ pushd " ${PATH_TO_REPO} "
101+
102+ echo " push docs to staging"
103+ git add " ./$DOCS_PREFIX *"
104+ git commit -m " Docs ${TAG} " -q
105+ git push origin HEAD --set-upstream -q
106+
107+ popd > /dev/null
108+ }
109+
110+ createBranchProduction () {
111+ pushd " ${PATH_TO_REPO} "
112+
113+ echo " create a docs brach"
114+ git checkout -b ${BRANCH_NAME}
115+ git add " ./$DOCS_PREFIX *"
116+ git commit -m " Docs ${TAG} " -q
117+ git push origin HEAD --set-upstream -q
118+ popd > /dev/null
119+ }
120+
121+ createPullRequest () {
122+ pushd " ${PATH_TO_REPO} "
123+
124+ echo " create pull request"
125+
126+ GITHUB_TOKEN=$GITHUB_PR_ACCESS_TOKEN gh pr create \
127+ --title " Docs ${TAG} " \
128+ --body " **Docs ${TAG} **
129+ <br/>**Staging**:
130+ <br/> mapbox-java-core:
131+ <a href='https://github.com/mapbox/mapbox-java/tree/publisher-staging/libjava-core/${VERSION_NUMBER} '>staging github</a>
132+ <br/>mapbox-java-geojson:
133+ <a href='https://github.com/mapbox/mapbox-java/tree/publisher-staging/libjava-geojson/${VERSION_NUMBER} '>staging github</a>
134+ <br/>mapbox-java-turf:
135+ <a href='https://github.com/mapbox/mapbox-java/tree/publisher-staging/libjava-turf/${VERSION_NUMBER} '>staging github</a>
136+ <br/>mapbox-java-services:
137+ <a href='https://github.com/mapbox/mapbox-java/tree/publisher-staging/libjava-core/${VERSION_NUMBER} '>staging github</a>
138+ <br/>**cc** @mapbox/navigation-android" \
139+ --base ${DOCS_BASE_BRANCH_NAME_PRODUCTION} \
140+ --head ${BRANCH_NAME} \
141+ --label " Documentation"
142+
143+ popd > /dev/null
144+ }
145+
146+ checkIfGithubTokensAreProvided
147+ checkIfTagExist
148+ generateDocs
149+ # staging
150+ checkoutToPublisherStaging
151+ copyDocumentsToDocsFolders
152+ pushDocsToStaging
153+ # production
154+ checkoutToPublisherProduction
155+ copyDocumentsToDocsFolders
156+ createBranchProduction
157+ createPullRequest
0 commit comments