forked from docker-library/docs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgenerate-repo-stub-readme.sh
executable file
·117 lines (90 loc) · 4.43 KB
/
generate-repo-stub-readme.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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#!/bin/bash
set -e
cd "$(dirname "$(readlink -f "$BASH_SOURCE")")"
repo="$1"
if [ -z "$repo" ]; then
echo >&2 'error: no repo specified'
cat >&2 <<EOUSAGE
usage: $0 repo [> README.md]
ie: $0 php > ../php/README.md
This script generates a stub README to standard out for the specified repo.
EOUSAGE
exit 1
fi
gitRepo='https://github.com/docker-library/docs'
hubPage="https://hub.docker.com/_/$repo/"
canonicalRepo="https://github.com/docker-library/$repo"
if [ -s "$repo/github-repo" ]; then
canonicalRepo="$(< "$repo/github-repo")"
fi
canonicalRepo="$(curl -fsSLI -o /dev/null -w '%{url_effective}\n' "$canonicalRepo")" # follow redirects (http://stackoverflow.com/a/3077316/433558)
travisRepo="${canonicalRepo#*://github.com/}"
if [[ "$travisRepo" = elastic/* ]]; then
# Elastic points "github-repo" at their upstream elastic/xyz-docker repos, but we want our README stubs to still point at our integration repos
travisRepo="docker-library/$repo"
fi
maintainer="$(sed -e 's!%%GITHUB-REPO%%!'"$canonicalRepo"'!g' "$repo/maintainer.md")"
if [ -f "$repo/deprecated.md" ]; then
echo '# DEPRECATED'
echo
cat "$repo/deprecated.md"
echo
fi
cat <<EOREADME
# $canonicalRepo
## Maintained by: $maintainer
This is the Git repo of the [Docker "Official Image"](https://github.com/docker-library/official-images#what-are-official-images) for [$repo]($hubPage) (not to be confused with any official $repo image provided by $repo upstream). See [the Docker Hub page]($hubPage) for the full readme on how to use this Docker image and for information regarding contributing and issues.
The [full description from Docker Hub]($hubPage) is generated over in [docker-library/docs]($gitRepo), specifically in [docker-library/docs/$repo]($gitRepo/tree/master/$repo).
## See a change merged here that doesn't show up on Docker Hub yet?
Check [the "library/$repo" manifest file in the docker-library/official-images repo](https://github.com/docker-library/official-images/blob/master/library/$repo), especially [PRs with the "library/$repo" label on that repo](https://github.com/docker-library/official-images/labels/library%2F$repo).
For more information about the official images process, see the [docker-library/official-images readme](https://github.com/docker-library/official-images/blob/master/README.md).
EOREADME
badges=()
n=$'\n'
t=$'\t'
travisImage="https://img.shields.io/travis/$travisRepo/master.svg"
if svg="$(wget -qO- "$travisImage" 2>/dev/null)" && [[ "$svg" != *unknown* ]]; then
travisLink="https://travis-ci.org/$travisRepo/branches"
badges+=( "-${t}[Travis CI: ${n}${t}]($travisLink)" )
fi
# https://www.appveyor.com/docs/status-badges/#badges-for-projects-with-public-repositories-on-github-and-bitbucket
appveyorImage="https://ci.appveyor.com/api/projects/status/github/docker-library/$repo?branch=master&svg=true"
if svg="$(wget -qO- "$appveyorImage" 2>/dev/null)" && [[ "$svg" != *unknown* ]]; then
appveyorLink="https://ci.appveyor.com/project/docker-library/$repo"
badges+=( "-${t}[AppVeyor (Windows): ${n}${t}]($appveyorLink)" )
fi
jenkinsImage="https://doi-janky.infosiftr.net/job/update.sh/job/$repo/badge/icon"
if wget -q --spider "$jenkinsImage" &> /dev/null; then
jenkinsLink="https://doi-janky.infosiftr.net/job/update.sh/job/$repo"
badges+=( "-${t}[Automated \`update.sh\`: ${n}${t}]($jenkinsLink)" )
fi
arches="$(bashbrew cat --format '{{ range .Entries }}{{ join "\n" .Architectures }}{{ "\n" }}{{ end }}' "https://github.com/docker-library/official-images/raw/master/library/$repo" | sort -u)"
if [ -n "$arches" ]; then
archTable=
i=0
for arch in $arches; do
jenkinsLink="https://doi-janky.infosiftr.net/job/multiarch/job/$arch/job/$repo"
jenkinsImage="$jenkinsLink/badge/icon"
if wget -q --spider "$jenkinsImage" &> /dev/null; then
archTable="${archTable:-|} [\`$arch\`<br />]($jenkinsLink) |"
(( i = (i + 1) % 4 )) || : # modulo here needs to match the number of colums used below
if [ "$i" = 0 ]; then
archTable+="${n}|"
fi
fi
done
if [ -n "$archTable" ]; then
badges+=( "${n}| Build | Status | Badges | (per-arch) |${n}|:-:|:-:|:-:|:-:|${n}${archTable%${n}|}" )
fi
fi
if [ "${#badges[@]}" -gt 0 ]; then
IFS=$'\n'
cat <<-EOREADME
---
${badges[*]}
EOREADME
unset IFS
fi
cat <<EOREADME
<!-- THIS FILE IS GENERATED BY $gitRepo/blob/master/generate-repo-stub-readme.sh -->
EOREADME