| #!/bin/bash |
| |
| # Copyright 2015 The Crashpad Authors. All rights reserved. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| set -e |
| |
| # Run from the Crashpad project root directory. |
| cd "$(dirname "${0}")/../.." |
| |
| source doc/support/compat.sh |
| |
| basename="$(basename "${0}")" |
| |
| status="$(git status --porcelain)" |
| if [[ -n "${status}" ]]; then |
| echo "${basename}: the working directory must be clean" >& 2 |
| git status |
| exit 1 |
| fi |
| |
| # git symbolic-ref gives the current branch name, but fails for detached HEAD. |
| # In that case, git rev-parse will give the current hash. |
| original_branch="$(git symbolic-ref --short --quiet HEAD || git rev-parse HEAD)" |
| |
| local_branch="\ |
| $(${sed_ext} -e 's/(.*)\..*/\1/' <<< "${basename}").${$}.${RANDOM}" |
| |
| remote_name=origin |
| remote_master_branch_name=master |
| remote_master_branch="${remote_name}/${remote_master_branch_name}" |
| remote_doc_branch_name=doc |
| remote_doc_branch="${remote_name}/${remote_doc_branch_name}" |
| |
| git fetch |
| |
| git checkout -b "${local_branch}" "${remote_doc_branch}" |
| |
| dirty= |
| |
| function cleanup() { |
| if [[ "${dirty}" ]]; then |
| git reset --hard HEAD |
| git clean --force |
| fi |
| |
| git checkout "${original_branch}" |
| git branch -D "${local_branch}" |
| } |
| |
| trap cleanup EXIT |
| |
| master_hash=$(git rev-parse --short=12 "${remote_master_branch}") |
| git merge "${remote_master_branch}" \ |
| -m "Merge ${remote_master_branch_name} ${master_hash} into doc" |
| |
| dirty=y |
| |
| doc/support/generate.sh |
| |
| git add -A doc/generated |
| |
| count="$(git diff --staged --numstat | wc -l)" |
| if [[ $count -gt 0 ]]; then |
| git commit \ |
| -m "Update documentation to ${remote_master_branch_name} ${master_hash}" |
| dirty= |
| |
| git push "${remote_name}" "HEAD:${remote_doc_branch_name}" |
| else |
| dirty= |
| fi |
| |
| # cleanup will run on exit |