Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(443)

Side by Side Diff: sky/tools/skyx.py

Issue 1220893002: Add a script for packaging Sky bundles (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « sky/sdk/example/stocks/sky.yaml ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 # Copyright 2015 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5
6 import subprocess
7 import sys
8 import yaml
9 import zipfile
10 import os
11 import argparse
12 import copy
13
14 SNAPSHOT_KEY = 'snapshot_blob.bin'
15 DENSITIES = ['drawable-xxhdpi']
16 THEMES = ['white', 'black', 'grey600']
17 SIZES = [24]
18
19 class MaterialAsset(object):
20 def __init__(self, descriptor):
21 self.name = descriptor['name']
22 self.size = descriptor['size']
23 self.theme = descriptor['theme']
24 self.density = descriptor['density']
25
26 @property
27 def key(self):
28 category, subtype = self.name.split('/', 1)
29 return os.path.join(category, self.density, 'ic_%(subtype)s_%(theme)s_%( size)sdp.png' % {
30 'subtype': subtype, 'theme': self.theme, 'size': self.size,
31 })
32
33 def generate_values(asset_descriptor, key, default):
34 if key in asset_descriptor:
35 return [asset_descriptor[key]]
36 return default
37
38 def generate_material_assets(asset_descriptor):
39 current_asset_descriptor = copy.deepcopy(asset_descriptor)
40 for density in generate_values(asset_descriptor, 'density', DENSITIES):
41 current_asset_descriptor['density'] = density
42 for theme in generate_values(asset_descriptor, 'theme', THEMES):
43 current_asset_descriptor['theme'] = theme
44 for size in generate_values(asset_descriptor, 'size', SIZES):
45 current_asset_descriptor['size'] = size
46 yield MaterialAsset(current_asset_descriptor)
47
48 def load_manifest(manifest):
49 with open(manifest) as manifest_file:
50 return yaml.load(manifest_file)
51
52 def parse_material_assets(manifest_descriptor):
53 for asset_descriptor in manifest_descriptor['material-design-icons']:
54 for asset in generate_material_assets(asset_descriptor):
55 yield asset
56
57 def main():
58 parser = argparse.ArgumentParser(description='Taco')
59 parser.add_argument('manifest', type=str)
60 parser.add_argument('--asset-base', type=str)
61 parser.add_argument('--snapshot', type=str)
62 parser.add_argument('-o', '--output-file', type=str)
63 args = parser.parse_args()
64
65 manifest_descriptor = load_manifest(args.manifest)
66 material_assets = list(parse_material_assets( manifest_descriptor))
67
68 with zipfile.ZipFile(args.output_file, 'w', zipfile.ZIP_DEFLATED) as archive :
69 if args.snapshot is not None:
70 archive.write(args.snapshot, SNAPSHOT_KEY)
71 for asset in material_assets:
72 archive.write(os.path.join(args.asset_base, asset.key), asset.key, z ipfile.ZIP_STORED)
73
74 if __name__ == '__main__':
75 sys.exit(main())
OLDNEW
« no previous file with comments | « sky/sdk/example/stocks/sky.yaml ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698