11#! /bin/bash
22#
33
4+ # Extract next version from platform.txt
5+ next=` sed -n -E ' s/version=([0-9.]+)/\1/p' ../platform.txt`
6+
47# Figure out how will the package be called
5- ver=` git describe --tags --always`
8+ ver=` git describe --exact-match`
9+ if [ $? -ne 0 ]; then
10+ # not tagged version; generate nightly package
11+ date_str=` date +" %Y%m%d" `
12+ is_nightly=1
13+ plain_ver=" ${next} -nightly"
14+ ver=" ${plain_ver} +${date_str} "
15+ else
16+ plain_ver=$ver
17+ fi
18+
619package_name=esp8266-$ver
720echo " Version: $ver "
821echo " Package name: $package_name "
1629echo " Remote: $REMOTE_URL "
1730
1831if [ -z " $PKG_URL " ]; then
19- PKG_URL=" $REMOTE_URL /versions/$ver /$package_name .zip"
32+ if [ -z " $PKG_URL_PREFIX " ]; then
33+ PKG_URL_PREFIX=" $REMOTE_URL /versions/$ver "
34+ fi
35+ PKG_URL=" $PKG_URL_PREFIX /$package_name .zip"
2036fi
2137echo " Package: $PKG_URL "
22-
23- if [ -z " $DOC_URL " ]; then
24- DOC_URL=" $REMOTE_URL /versions/$ver /doc/reference.html"
25- fi
2638echo " Docs: $DOC_URL "
39+
2740pushd ..
2841# Create directory for the package
2942outdir=package/versions/$ver /$package_name
@@ -37,6 +50,7 @@ cat << EOF > exclude.txt
3750.gitignore
3851.travis.yml
3952package
53+ doc
4054EOF
4155# Also include all files which are ignored by git
4256git ls-files --other --directory >> exclude.txt
@@ -47,7 +61,7 @@ rm exclude.txt
4761# Get additional libraries (TODO: add them as git submodule or subtree?)
4862
4963# SoftwareSerial library
50- wget -q -O SoftwareSerial.zip https://github.com/plerup/espsoftwareserial/archive/3.1.0.zip
64+ curl -L -o SoftwareSerial.zip https://github.com/plerup/espsoftwareserial/archive/3.1.0.zip
5165unzip -q SoftwareSerial.zip
5266rm -rf SoftwareSerial.zip
5367mv espsoftwareserial-* SoftwareSerial
@@ -71,7 +85,7 @@ $SED 's/recipe.hooks.core.prebuild.1.pattern.*//g' \
7185 > $outdir /platform.txt
7286
7387# Put core version and short hash of git version into core_version.h
74- ver_define=` echo $ver | tr " [:lower:].- " " [:upper:]_" `
88+ ver_define=` echo $plain_ver | tr " [:lower:].\055 " " [:upper:]_" `
7589echo Ver define: $ver_define
7690echo \# define ARDUINO_ESP8266_GIT_VER 0x` git rev-parse --short=8 HEAD 2> /dev/null` > $outdir /cores/esp8266/core_version.h
7791echo \# define ARDUINO_ESP8266_RELEASE_$ver_define >> $outdir /cores/esp8266/core_version.h
@@ -90,14 +104,49 @@ echo Size: $size
90104echo SHA-256: $sha
91105
92106echo " Making package_esp8266com_index.json"
93- cat $srcdir /package/package_esp8266com_index.template.json | \
94- jq " .packages[0].platforms[0].version = \" $ver \" | \
107+
108+ jq_arg= " .packages[0].platforms[0].version = \" $ver \" | \
95109 .packages[0].platforms[0].url = \" $PKG_URL \" |\
96- .packages[0].platforms[0].archiveFileName = \" $package_name .zip\" |\
97- .packages[0].platforms[0].checksum = \" SHA-256:$sha \" |\
98- .packages[0].platforms[0].size = \" $size \" |\
99- .packages[0].platforms[0].help.online = \" $DOC_URL \" " \
100- > package_esp8266com_index.json
110+ .packages[0].platforms[0].archiveFileName = \" $package_name .zip\" "
111+
112+ if [ -z " $is_nightly " ]; then
113+ jq_arg=" $jq_arg |\
114+ .packages[0].platforms[0].size = \" $size \" |\
115+ .packages[0].platforms[0].checksum = \" SHA-256:$sha \" "
116+ fi
117+
118+ if [ ! -z " $DOC_URL " ]; then
119+ jq_arg=" $jq_arg |\
120+ .packages[0].platforms[0].help.online = \" $DOC_URL \" "
121+ fi
122+
123+ cat $srcdir /package/package_esp8266com_index.template.json | \
124+ jq " $jq_arg " > package_esp8266com_index.json
125+
126+ # Get previous release name
127+ curl --silent https://api.github.com/repos/esp8266/Arduino/releases > releases.json
128+ # Previous final release (prerelase == false)
129+ prev_release=$( jq -r ' . | map(select(.draft == false and .prerelease == false)) | sort_by(.created_at | - fromdateiso8601) | .[0].tag_name' releases.json)
130+ # Previous release (possibly a pre-release)
131+ prev_any_release=$( jq -r ' . | map(select(.draft == false)) | sort_by(.created_at | - fromdateiso8601) | .[0].tag_name' releases.json)
132+ # Previous pre-release
133+ prev_pre_release=$( jq -r ' . | map(select(.draft == false and .prerelease == true)) | sort_by(.created_at | - fromdateiso8601) | .[0].tag_name' releases.json)
134+
135+ echo " Previous release: $prev_release "
136+ echo " Previous (pre-?)release: $prev_any_release "
137+ echo " Previous pre-release: $prev_pre_release "
138+
139+ # Make all released versions available in one package (i.e. don't separate stable/staging versions)
140+ base_ver=$prev_any_release
141+
142+ # Download previous release
143+ echo " Downloading base package: $base_ver "
144+ old_json=package_esp8266com_index_stable.json
145+ curl -L -o $old_json " https://github.com/esp8266/Arduino/releases/download/${base_ver} /package_esp8266com_index.json"
146+ new_json=package_esp8266com_index.json
147+
148+ set +e
149+ python ../../merge_packages.py $new_json $old_json > tmp && mv tmp $new_json && rm $old_json
101150
102151popd
103152popd
0 commit comments