Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
spring-cloud-netflix
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
openSource
spring-cloud-netflix
Commits
1fefd410
Unverified
Commit
1fefd410
authored
Aug 18, 2016
by
Marcin Grzejszczak
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Updating ghpages for all projects
parent
e2e7c490
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
267 additions
and
103 deletions
+267
-103
ghpages.sh
docs/src/main/asciidoc/ghpages.sh
+267
-103
No files found.
docs/src/main/asciidoc/ghpages.sh
View file @
1fefd410
#!/bin/bash -x
#!/bin/bash -x
git remote set-url
--push
origin
`
git config remote.origin.url |
sed
-e
's/^git:/https:/'
`
set
-e
if
!
(
git remote set-branches
--add
origin gh-pages
&&
git fetch
-q
)
;
then
# Set default props like MAVEN_PATH, ROOT_FOLDER etc.
echo
"No gh-pages, so not syncing"
function
set_default_props
()
{
exit
0
# The script should be executed from the root folder
fi
ROOT_FOLDER
=
`
pwd
`
echo
"Current folder is
${
ROOT_FOLDER
}
"
if
!
[
-d
docs/target/generated-docs
]
;
then
if
[[
!
-e
"
${
ROOT_FOLDER
}
/.git"
]
]
;
then
echo
"No gh-pages sources in docs/target/generated-docs, so not syncing
"
echo
"You're not in the root folder of the project!
"
exit
0
exit
1
fi
fi
# The script should be executed from the root folder
# Prop that will let commit the changes
COMMIT_CHANGES
=
"no"
MAVEN_PATH
=
${
MAVEN_PATH
:-}
echo
"Path to Maven is [
${
MAVEN_PATH
}
]"
REPO_NAME
=
${
PWD
##*/
}
echo
"Repo name is [
${
REPO_NAME
}
]"
}
ROOT_FOLDER
=
`
pwd
`
# Check if gh-pages exists and docs have been built
echo
"Current folder is
${
ROOT_FOLDER
}
"
function
check_if_anything_to_sync
()
{
git remote set-url
--push
origin
`
git config remote.origin.url |
sed
-e
's/^git:/https:/'
`
if
[[
!
-e
"
${
ROOT_FOLDER
}
/.git"
]]
;
then
if
!
(
git remote set-branches
--add
origin gh-pages
&&
git fetch
-q
)
;
then
echo
"You're not in the root folder of the project!
"
echo
"No gh-pages, so not syncing
"
exit
1
exit
0
fi
fi
# Retrieve properties
if
!
[
-d
docs/target/generated-docs
]
;
then
###################################################################
echo
"No gh-pages sources in docs/target/generated-docs, so not syncing"
exit
0
# Prop that will let commit the changes
fi
COMMIT_CHANGES
=
"no"
}
MAVEN_PATH
=
${
MAVEN_PATH
:-}
echo
"Path to Maven is [
${
MAVEN_PATH
}
]"
# Code getting the name of the current branch. For master we want to publish as we did until now
# http://stackoverflow.com/questions/1593051/how-to-programmatically-determine-the-current-checked-out-git-branch
# If there is a branch already passed will reuse it - otherwise will try to find it
CURRENT_BRANCH
=
${
BRANCH
}
if
[[
-z
"
${
CURRENT_BRANCH
}
"
]]
;
then
CURRENT_BRANCH
=
$(
git symbolic-ref
-q
HEAD
)
CURRENT_BRANCH
=
${
CURRENT_BRANCH
##refs/heads/
}
CURRENT_BRANCH
=
${
CURRENT_BRANCH
:-
HEAD
}
fi
echo
"Current branch is [
${
CURRENT_BRANCH
}
]"
git checkout
${
CURRENT_BRANCH
}
# Get the name of the `docs.main` property
function
retrieve_current_branch
()
{
MAIN_ADOC_VALUE
=
$(
"
${
MAVEN_PATH
}
"
mvn
-q
\
# Code getting the name of the current branch. For master we want to publish as we did until now
-Dexec
.executable
=
"echo"
\
# http://stackoverflow.com/questions/1593051/how-to-programmatically-determine-the-current-checked-out-git-branch
-Dexec
.args
=
'${docs.main}'
\
# If there is a branch already passed will reuse it - otherwise will try to find it
--non-recursive
\
CURRENT_BRANCH
=
${
BRANCH
}
org.codehaus.mojo:exec-maven-plugin:1.3.1:exec
)
if
[[
-z
"
${
CURRENT_BRANCH
}
"
]]
;
then
echo
"Extracted 'main.adoc' from Maven build [
${
MAIN_ADOC_VALUE
}
]"
CURRENT_BRANCH
=
$(
git symbolic-ref
-q
HEAD
)
CURRENT_BRANCH
=
${
CURRENT_BRANCH
##refs/heads/
}
CURRENT_BRANCH
=
${
CURRENT_BRANCH
:-
HEAD
}
fi
echo
"Current branch is [
${
CURRENT_BRANCH
}
]"
git checkout
${
CURRENT_BRANCH
}
}
# Switches to the provided value of the release version. We always prefix it with `v`
function
switch_to_tag
()
{
git checkout v
${
VERSION
}
}
# Get the name of the `docs.main` property
# Get whitelisted branches - assumes that a `docs` module is available under `docs` profile
# Get whitelisted branches - assumes that a `docs` module is available under `docs` profile
WHITELIST_PROPERTY
=
"docs.whitelisted.branches"
function
retrieve_doc_properties
()
{
WHITELISTED_BRANCHES_VALUE
=
$(
"
${
MAVEN_PATH
}
"
mvn
-q
\
MAIN_ADOC_VALUE
=
$(
"
${
MAVEN_PATH
}
"
mvn
-q
\
-Dexec
.executable
=
"echo"
\
-Dexec
.executable
=
"echo"
\
-Dexec
.args
=
"
\$
{
${
WHITELIST_PROPERTY
}
}"
\
-Dexec
.args
=
'${docs.main}'
\
org.codehaus.mojo:exec-maven-plugin:1.3.1:exec
\
--non-recursive
\
-P
docs
\
org.codehaus.mojo:exec-maven-plugin:1.3.1:exec
)
-pl
docs
)
echo
"Extracted 'main.adoc' from Maven build [
${
MAIN_ADOC_VALUE
}
]"
echo
"Extracted '
${
WHITELIST_PROPERTY
}
' from Maven build [
${
WHITELISTED_BRANCHES_VALUE
}
]"
WHITELIST_PROPERTY
=
${
WHITELIST_PROPERTY
:-
"docs.whitelisted.branches"
}
WHITELISTED_BRANCHES_VALUE
=
$(
"
${
MAVEN_PATH
}
"
mvn
-q
\
-Dexec
.executable
=
"echo"
\
-Dexec
.args
=
"
\$
{
${
WHITELIST_PROPERTY
}
}"
\
org.codehaus.mojo:exec-maven-plugin:1.3.1:exec
\
-P
docs
\
-pl
docs
)
echo
"Extracted '
${
WHITELIST_PROPERTY
}
' from Maven build [
${
WHITELISTED_BRANCHES_VALUE
}
]"
}
# Stash any outstanding changes
# Stash any outstanding changes
###################################################################
function
stash_changes
()
{
git diff-index
--quiet
HEAD
&&
dirty
=
$?
||
(
echo
"Failed to check if the current repo is dirty. Assuming that it is."
&&
dirty
=
"1"
)
git diff-index
--quiet
HEAD
&&
dirty
=
$?
||
(
echo
"Failed to check if the current repo is dirty. Assuming that it is."
&&
dirty
=
"1"
)
if
[
"
$dirty
"
!=
"0"
]
;
then
git stash
;
fi
if
[
"
$dirty
"
!=
"0"
]
;
then
git stash
;
fi
}
# Switch to gh-pages branch to sync it with master
###################################################################
# Switch to gh-pages branch to sync it with current branch
git checkout gh-pages
function
add_docs_from_target
()
{
git pull origin gh-pages
local
DESTINATION_REPO_FOLDER
if
[[
-z
"
${
DESTINATION
}
"
]]
;
then
# Add git branches
DESTINATION_REPO_FOLDER
=
${
ROOT_FOLDER
}
###################################################################
else
mkdir
-p
${
ROOT_FOLDER
}
/
${
CURRENT_BRANCH
}
if
[[
!
-e
"
${
DESTINATION
}
/.git"
]]
;
then
if
[[
"
${
CURRENT_BRANCH
}
"
==
"master"
]]
;
then
echo
"[
${
DESTINATION
}
] is not a git repository"
echo
-e
"Current branch is master - will copy the current docs only to the root folder"
exit
1
for
f
in
docs/target/generated-docs/
*
;
do
file
=
${
f
#docs/target/generated-docs/*
}
if
!
git ls-files
-i
-o
--exclude-standard
--directory
|
grep
-q
^
$file$;
then
# Not ignored...
cp
-rf
$f
${
ROOT_FOLDER
}
/
git add
-A
${
ROOT_FOLDER
}
/
$file
fi
fi
done
DESTINATION_REPO_FOLDER
=
${
DESTINATION
}
/
${
REPO_NAME
}
COMMIT_CHANGES
=
"yes"
mkdir
-p
${
DESTINATION_REPO_FOLDER
}
else
echo
"Destination was provided [
${
DESTINATION
}
]"
echo
-e
"Current branch is [
${
CURRENT_BRANCH
}
]"
fi
# http://stackoverflow.com/questions/29300806/a-bash-script-to-check-if-a-string-is-present-in-a-comma-separated-list-of-strin
cd
${
DESTINATION_REPO_FOLDER
}
if
[[
",
${
WHITELISTED_BRANCHES_VALUE
}
,"
=
*
",
${
CURRENT_BRANCH
}
,"
*
]]
;
then
git checkout gh-pages
echo
-e
"Branch [
${
CURRENT_BRANCH
}
] is whitelisted! Will copy the current docs to the [
${
CURRENT_BRANCH
}
] folder"
git pull origin gh-pages
# Add git branches
###################################################################
if
[[
-z
"
${
VERSION
}
"
]]
;
then
copy_docs_for_current_version
else
copy_docs_for_provided_version
fi
commit_changes_if_applicable
}
# Copies the docs by using the retrieved properties from Maven build
function
copy_docs_for_current_version
()
{
if
[[
"
${
CURRENT_BRANCH
}
"
==
"master"
]]
;
then
echo
-e
"Current branch is master - will copy the current docs only to the root folder"
for
f
in
docs/target/generated-docs/
*
;
do
for
f
in
docs/target/generated-docs/
*
;
do
file
=
${
f
#docs/target/generated-docs/*
}
file
=
${
f
#docs/target/generated-docs/*
}
if
!
git ls-files
-i
-o
--exclude-standard
--directory
|
grep
-q
^
$file$;
then
if
!
git ls-files
-i
-o
--exclude-standard
--directory
|
grep
-q
^
$file$;
then
# Not ignored...
# Not ignored...
# We want users to access 1.0.0.RELEASE/ instead of 1.0.0.RELEASE/spring-cloud.sleuth.html
cp
-rf
$f
${
ROOT_FOLDER
}
/
if
[[
"
${
file
}
"
==
"
${
MAIN_ADOC_VALUE
}
.html"
]]
;
then
git add
-A
${
ROOT_FOLDER
}
/
$file
# We don't want to copy the spring-cloud-sleuth.html
# we want it to be converted to index.html
cp
-rf
$f
${
ROOT_FOLDER
}
/
${
CURRENT_BRANCH
}
/index.html
git add
-A
${
ROOT_FOLDER
}
/
${
CURRENT_BRANCH
}
/index.html
else
cp
-rf
$f
${
ROOT_FOLDER
}
/
${
CURRENT_BRANCH
}
git add
-A
${
ROOT_FOLDER
}
/
${
CURRENT_BRANCH
}
/
$file
fi
fi
fi
done
done
COMMIT_CHANGES
=
"yes"
COMMIT_CHANGES
=
"yes"
else
else
echo
-e
"Branch [
${
CURRENT_BRANCH
}
] is not on the white list! Check out the Maven [
${
WHITELIST_PROPERTY
}
] property in
echo
-e
"Current branch is [
${
CURRENT_BRANCH
}
]"
[docs] module available under [docs] profile. Won't commit any changes to gh-pages for this branch."
# http://stackoverflow.com/questions/29300806/a-bash-script-to-check-if-a-string-is-present-in-a-comma-separated-list-of-strin
if
[[
",
${
WHITELISTED_BRANCHES_VALUE
}
,"
=
*
",
${
CURRENT_BRANCH
}
,"
*
]]
;
then
mkdir
-p
${
ROOT_FOLDER
}
/
${
CURRENT_BRANCH
}
echo
-e
"Branch [
${
CURRENT_BRANCH
}
] is whitelisted! Will copy the current docs to the [
${
CURRENT_BRANCH
}
] folder"
for
f
in
docs/target/generated-docs/
*
;
do
file
=
${
f
#docs/target/generated-docs/*
}
if
!
git ls-files
-i
-o
--exclude-standard
--directory
|
grep
-q
^
$file$;
then
# Not ignored...
# We want users to access 1.0.0.RELEASE/ instead of 1.0.0.RELEASE/spring-cloud.sleuth.html
if
[[
"
${
file
}
"
==
"
${
MAIN_ADOC_VALUE
}
.html"
]]
;
then
# We don't want to copy the spring-cloud-sleuth.html
# we want it to be converted to index.html
cp
-rf
$f
${
ROOT_FOLDER
}
/
${
CURRENT_BRANCH
}
/index.html
git add
-A
${
ROOT_FOLDER
}
/
${
CURRENT_BRANCH
}
/index.html
else
cp
-rf
$f
${
ROOT_FOLDER
}
/
${
CURRENT_BRANCH
}
git add
-A
${
ROOT_FOLDER
}
/
${
CURRENT_BRANCH
}
/
$file
fi
fi
done
COMMIT_CHANGES
=
"yes"
else
echo
-e
"Branch [
${
CURRENT_BRANCH
}
] is not on the white list! Check out the Maven [
${
WHITELIST_PROPERTY
}
] property in
[docs] module available under [docs] profile. Won't commit any changes to gh-pages for this branch."
fi
fi
fi
fi
}
if
[[
"
${
COMMIT_CHANGES
}
"
==
"yes"
]]
;
then
# Copies the docs by using the explicitly provided version
git commit
-a
-m
"Sync docs from
${
CURRENT_BRANCH
}
to gh-pages"
function
copy_docs_for_provided_version
()
{
local
FOLDER
=
${
DESTINATION_REPO_FOLDER
}
/
${
VERSION
}
mkdir
-p
${
FOLDER
}
echo
-e
"Current tag is [v
${
VERSION
}
] Will copy the current docs to the [
${
FOLDER
}
] folder"
for
f
in
${
ROOT_FOLDER
}
/docs/target/generated-docs/
*
;
do
file
=
${
f
#
${
ROOT_FOLDER
}
/docs/target/generated-docs/*
}
copy_docs_for_branch
${
file
}
${
FOLDER
}
done
COMMIT_CHANGES
=
"yes"
CURRENT_BRANCH
=
"v
${
VERSION
}
"
}
# Uncomment the following push if you want to auto push to
# Copies the docs from target to the provided destination
# the gh-pages branch whenever you commit to master locally.
# Params:
# This is a little extreme. Use with care!
# $1 - file from target
###################################################################
# $2 - destination to which copy the files
git push origin gh-pages
function
copy_docs_for_branch
()
{
fi
local
file
=
$1
local
destination
=
$2
if
!
git ls-files
-i
-o
--exclude-standard
--directory
|
grep
-q
^
${
file
}
$;
then
# Not ignored...
# We want users to access 1.0.0.RELEASE/ instead of 1.0.0.RELEASE/spring-cloud.sleuth.html
if
[[
"
${
file
}
"
==
"
${
MAIN_ADOC_VALUE
}
.html"
]]
;
then
# We don't want to copy the spring-cloud-sleuth.html
# we want it to be converted to index.html
cp
-rf
$f
${
destination
}
/index.html
git add
-A
${
destination
}
/index.html
else
cp
-rf
$f
${
destination
}
git add
-A
${
destination
}
/
$file
fi
fi
}
# Finally, switch back to the master branch and exit block
function
commit_changes_if_applicable
()
{
git checkout
${
CURRENT_BRANCH
}
if
[[
"
${
COMMIT_CHANGES
}
"
==
"yes"
]]
;
then
if
[
"
$dirty
"
!=
"0"
]
;
then
git stash pop
;
fi
COMMIT_SUCCESSFUL
=
"no"
git commit
-a
-m
"Sync docs from
${
CURRENT_BRANCH
}
to gh-pages"
&&
COMMIT_SUCCESSFUL
=
"yes"
||
echo
"Failed to commit changes"
# Uncomment the following push if you want to auto push to
# the gh-pages branch whenever you commit to master locally.
# This is a little extreme. Use with care!
###################################################################
if
[[
"
${
COMMIT_SUCCESSFUL
}
"
==
"yes"
]]
;
then
git push origin gh-pages
fi
fi
}
# Switch back to the previous branch and exit block
function
checkout_previous_branch
()
{
git checkout
${
CURRENT_BRANCH
}
if
[
"
$dirty
"
!=
"0"
]
;
then
git stash pop
;
fi
exit
0
}
exit
0
# Assert if properties have been properly passed
\ No newline at end of file
function
assert_properties
()
{
if
[[
"
${
VERSION
}
"
!=
""
&&
-z
"
${
DESTINATION
}
"
]]
;
then
echo
"Version was set but destination was not!"
;
exit
1
;
fi
if
[[
"
${
DESTINATION
}
"
!=
""
&&
-z
"
${
VERSION
}
"
]]
;
then
echo
"Destination was set but version was not!"
;
exit
1
;
fi
}
# Prints the usage
function
print_usage
()
{
cat
<<
EOF
The idea of this script is to update gh-pages branch with the generated docs. Without any options
the script will work in the following manner:
- if there's no gh-pages / target for docs module then the script ends
- for master branch the generated docs are copied to the root of gh-pages branch
- for any other branch (if that branch is whitelisted) a subfolder with branch name is created
and docs are copied there
- if the version switch is passed (-v) then a tag with (v) prefix will be retrieved and a folder
with that version number will be created in the gh-pages branch. WARNING! No whitelist verification will take place
- if the destination switch is passed (-d) then the script will check if the provided dir is a git repo and then will
switch to gh-pages of that repo and copy the generated docs to `docs/<project-name>/<version>`
USAGE:
You can use the following options:
-v|--version - the script will apply the whole procedure for a particular library version
-d|--destination - the root of destination folder where the docs should be copied. E.g. point to spring-cloud-static folder
EOF
}
# ==========================================
# ____ ____ _____ _____ _____ _______
# / ____|/ ____| __ \|_ _| __ \__ __|
# | (___ | | | |__) | | | | |__) | | |
# \___ \| | | _ / | | | ___/ | |
# ____) | |____| | \ \ _| |_| | | |
# |_____/ \_____|_| \_\_____|_| |_|
#
# ==========================================
while
[[
$#
>
0
]]
do
key
=
"
$1
"
case
${
key
}
in
-v
|
--version
)
VERSION
=
"
$2
"
shift
# past argument
;;
-d
|
--destination
)
DESTINATION
=
"
$2
"
shift
# past argument
;;
-h
|
--help
)
print_usage
exit
0
;;
*
)
echo
"Invalid option: [
$1
]"
print_usage
exit
1
;;
esac
shift
# past argument or value
done
assert_properties
set_default_props
check_if_anything_to_sync
if
[[
-z
"
${
VERSION
}
"
]]
;
then
retrieve_current_branch
else
switch_to_tag
fi
retrieve_doc_properties
stash_changes
add_docs_from_target
checkout_previous_branch
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment