Skip to content

Commit 0a2d424

Browse files
Drop obsolete versions from JSON programatically
After the final merge is done on the JSON, strip out any named versions from the final product. Removing 1.6.5-* and 2.5.0-beta(1,2,3) for now.
1 parent 979f52a commit 0a2d424

File tree

2 files changed

+45
-1
lines changed

2 files changed

+45
-1
lines changed

package/build_boards_manager_package.sh

+2-1
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,8 @@ curl -L -o $old_json "https://github.com/esp8266/Arduino/releases/download/${bas
155155
new_json=package_esp8266com_index.json
156156

157157
set +e
158-
python ../../merge_packages.py $new_json $old_json >tmp && mv tmp $new_json && rm $old_json
158+
# Merge the old and new, then drop any obsolete package versions
159+
python ../../merge_packages.py $new_json $old_json | python ../../drop_versions.py - platforms 1.6.5-947-g39819f0 2.5.0-beta1 2.5.0-beta2 2.5.0-beta3 >tmp && mv tmp $new_json && rm $old_json
159160

160161
popd
161162
popd

package/drop_version.py

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#!/usr/bin/env python
2+
# This script drops one or multiple versions of a release
3+
#
4+
from __future__ import print_function
5+
import json
6+
import sys
7+
8+
def load_package(filename):
9+
if filename == "-":
10+
pkg = json.load(sys.stdin)['packages'][0]
11+
else:
12+
pkg = json.load(open(filename))['packages'][0]
13+
print("Loaded package {0} from {1}".format(pkg['name'], filename), file=sys.stderr)
14+
print("{0} platform(s), {1} tools".format(len(pkg['platforms']), len(pkg['tools'])), file=sys.stderr)
15+
return pkg
16+
17+
# There's probably a lambda way of doing this, but I can't figure it out...
18+
def drop_version(todrop, obj):
19+
out = [];
20+
for o in obj:
21+
version = o['version'].encode('ascii')
22+
if version == todrop:
23+
print("Dropping version {0}".format(todrop))
24+
else:
25+
out.append(o)
26+
return out
27+
28+
def main(args):
29+
if len(args) < 3:
30+
print("Usage: {0} <inpackage> <section> <version-to-remove> ...".format(args[0]), file=sys.stderr)
31+
return 1
32+
33+
pkg = load_package(args[1])
34+
section = args[2]
35+
sub = pkg[section]
36+
for ver in args[3:]:
37+
sub = drop_version(ver, sub)
38+
pkg[section] = sub
39+
40+
json.dump({'packages':[pkg]}, sys.stdout, indent=2)
41+
42+
if __name__ == '__main__':
43+
sys.exit(main(sys.argv))

0 commit comments

Comments
 (0)