-
Notifications
You must be signed in to change notification settings - Fork 14
/
release.sh
executable file
·163 lines (141 loc) · 5.35 KB
/
release.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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
#!/bin/bash
# IMPORTANT: the following assumptions are made
# * the GH repo is on the origin remote
# * the gh-pages branch is named so locally
# * the git config user.signingkey is properly set
# You will need
# pip install coverage nose rsa wheel
# TODO
# release notes
# make hash on local files
set -e
skip_tests=true
gpg_sign_commits=""
buildserver='localhost:8142'
while true
do
case "$1" in
--run-tests)
skip_tests=false
shift
;;
--gpg-sign-commits|-S)
gpg_sign_commits="-S"
shift
;;
--buildserver)
buildserver="$2"
shift 2
;;
--*)
echo "ERROR: unknown option $1"
exit 1
;;
*)
break
;;
esac
done
#if [ -z "$1" ]; then echo "ERROR: specify version number like this: $0 1994.09.06"; exit 1; fi
version="$(curl -s https://ytdl-org.github.io/youtube-dl/update/LATEST_VERSION)"
major_version=$(echo "$version" | sed -n 's#^\([0-9]*\.[0-9]*\.[0-9]*\).*#\1#p')
#if test "$major_version" '!=' "$(date '+%Y.%m.%d')"; then
# echo "$version does not start with today's date!"
# exit 1
#fi
if test -z "$major_version"; then
echo "major_version is empty!"
exit 1
fi
if [ ! -z "`git tag | grep "$version"`" ]; then echo 'version already present'; exit 0; fi
cd youtube-dl
git checkout $version
if [ ! -z "`git status --porcelain | grep -v CHANGELOG`" ]; then echo 'ERROR: the working directory is not clean; commit or stash changes'; exit 1; fi
useless_files=$(find youtube_dl -type f -not -name '*.py')
if [ ! -z "$useless_files" ]; then echo "ERROR: Non-.py files in youtube_dl: $useless_files"; exit 1; fi
#if [ ! -f "updates_key.pem" ]; then echo 'ERROR: updates_key.pem missing'; exit 1; fi
if ! type pandoc >/dev/null 2>/dev/null; then echo 'ERROR: pandoc is missing'; exit 1; fi
if ! python3 -c 'import rsa' 2>/dev/null; then echo 'ERROR: python3-rsa is missing'; exit 1; fi
if ! python3 -c 'import wheel' 2>/dev/null; then echo 'ERROR: wheel is missing'; exit 1; fi
cd ..
git add -A
git diff-index --quiet HEAD || git commit $gpg_sign_commits -m "release $version"
MASTER=$(git rev-parse --abbrev-ref HEAD)
git push origin $MASTER:master
/bin/echo -e "\n### patching in files for youtubedl-android support"
patch -p1 < patches/ffmpeg.py.patch
patch -p1 < patches/embedthumbnail.py.patch
#read -p "Is ChangeLog up to date? (y/n) " -n 1
#if [[ ! $REPLY =~ ^[Yy]$ ]]; then exit 1; fi
cd youtube-dl
/bin/echo -e "\n### First of all, testing..."
make clean
if $skip_tests ; then
echo 'SKIPPING TESTS'
else
nosetests --verbose --with-coverage --cover-package=youtube_dl --cover-html test --stop || exit 1
fi
#/bin/echo -e "\n### Changing version in version.py..."
#sed -i "s/__version__ = '.*'/__version__ = '$version'/" youtube_dl/version.py
#
#/bin/echo -e "\n### Changing version in ChangeLog..."
#sed -i "s/<unreleased>/$version/" ChangeLog
#
#/bin/echo -e "\n### Committing documentation, templates and youtube_dl/version.py..."
#make README.md CONTRIBUTING.md .github/ISSUE_TEMPLATE.md supportedsites
#git add README.md CONTRIBUTING.md .github/ISSUE_TEMPLATE.md docs/supportedsites.md youtube_dl/version.py ChangeLog
#git commit $gpg_sign_commits -am "release $version"
#/bin/echo -e "\n### Now tagging, signing and pushing..."
#git tag -s -m "Release $version" "$version"
#git show "$version"
#read -p "Is it good, can I push? (y/n) " -n 1
#if [[ ! $REPLY =~ ^[Yy]$ ]]; then exit 1; fi
#echo
#MASTER=$(git rev-parse --abbrev-ref HEAD)
#git push origin $MASTER:master
#git push origin "$version"
/bin/echo -e "\n### OK, now it is time to build the binaries..."
REV=$(git rev-parse HEAD)
make lazy-extractors
make youtube-dl youtube-dl.tar.gz
#read -p "VM running? (y/n) " -n 1
#wget "http://$buildserver/build/rg3/youtube-dl/youtube-dl.exe?rev=$REV" -O youtube-dl.exe
mkdir -p "build/$version"
sed '1d' youtube-dl > youtube_dl.zip
mv youtube-dl "build/$version"
mv youtube_dl.zip "build/$version"
mv youtube-dl.tar.gz "build/$version/youtube-dl-$version.tar.gz"
RELEASE_FILES="youtube-dl youtube-dl-$version.tar.gz"
(cd build/$version/ && md5sum $RELEASE_FILES > MD5SUMS)
(cd build/$version/ && sha1sum $RELEASE_FILES > SHA1SUMS)
(cd build/$version/ && sha256sum $RELEASE_FILES > SHA2-256SUMS)
(cd build/$version/ && sha512sum $RELEASE_FILES > SHA2-512SUMS)
#/bin/echo -e "\n### Signing and uploading the new binaries to GitHub..."
#for f in $RELEASE_FILES; do gpg --passphrase-repeat 5 --detach-sig "build/$version/$f"; done
ROOT=$(pwd)
python3 ../create-github-release.py ChangeLog $version "$ROOT/build/$version"
#ssh ytdl@yt-dl.org "sh html/update_latest.sh $version"
#
#/bin/echo -e "\n### Now switching to gh-pages..."
#git clone --branch gh-pages --single-branch . build/gh-pages
#(
# set -e
# ORIGIN_URL=$(git config --get remote.origin.url)
# cd build/gh-pages
# "$ROOT/devscripts/gh-pages/add-version.py" $version
# "$ROOT/devscripts/gh-pages/update-feed.py"
# "$ROOT/devscripts/gh-pages/sign-versions.py" < "$ROOT/updates_key.pem"
# "$ROOT/devscripts/gh-pages/generate-download.py"
# "$ROOT/devscripts/gh-pages/update-copyright.py"
# "$ROOT/devscripts/gh-pages/update-sites.py"
# git add *.html *.html.in update
# git commit $gpg_sign_commits -m "release $version"
# git push "$ROOT" gh-pages
# git push "$ORIGIN_URL" gh-pages
#)
rm -rf build
#make pypi-files
#echo "Uploading to PyPi ..."
#python setup.py sdist bdist_wheel upload
make clean
/bin/echo -e "\n### DONE!"