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

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

Issue 1213213003: Port skyx to Dart (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Make pub publish happy 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 | « no previous file | sky/tools/skyx/.gitignore » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2015 The Chromium Authors. All rights reserved. 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 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 import argparse
7 import os
6 import subprocess 8 import subprocess
7 import sys 9 import sys
8 import yaml
9 import zipfile
10 import os
11 import argparse
12 import copy
13 10
14 SNAPSHOT_KEY = 'snapshot_blob.bin' 11 SKY_TOOLS_DIR = os.path.dirname(os.path.abspath(__file__))
15 DENSITIES = ['drawable-xxhdpi'] 12 SRC_ROOT = os.path.dirname(os.path.dirname(SKY_TOOLS_DIR))
16 THEMES = ['white', 'black', 'grey600'] 13 DART_SDK = os.path.join(SRC_ROOT, 'third_party', 'dart-sdk', 'dart-sdk', 'bin')
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 14
57 def main(): 15 def main():
58 parser = argparse.ArgumentParser(description='Taco') 16 parser = argparse.ArgumentParser(description='Packaging tool for Sky apps')
59 parser.add_argument('manifest', type=str) 17 parser.add_argument('manifest', type=str)
60 parser.add_argument('--asset-base', type=str) 18 parser.add_argument('--asset-base', type=str)
61 parser.add_argument('--snapshot', type=str) 19 parser.add_argument('--snapshot', type=str)
62 parser.add_argument('-o', '--output-file', type=str) 20 parser.add_argument('-o', '--output-file', type=str)
63 args = parser.parse_args() 21 args = parser.parse_args()
64 22
65 manifest_descriptor = load_manifest(args.manifest) 23 subprocess.check_call([
66 material_assets = list(parse_material_assets( manifest_descriptor)) 24 os.path.join(DART_SDK, 'dart'),
67 25 os.path.join(SKY_TOOLS_DIR, 'skyx', 'bin', 'skyx.dart'),
68 with zipfile.ZipFile(args.output_file, 'w', zipfile.ZIP_DEFLATED) as archive : 26 '--asset-base', args.asset_base,
69 if args.snapshot is not None: 27 '--snapshot', args.snapshot,
70 archive.write(args.snapshot, SNAPSHOT_KEY) 28 '--output-file', args.output_file,
71 for asset in material_assets: 29 args.manifest,
72 archive.write(os.path.join(args.asset_base, asset.key), asset.key, z ipfile.ZIP_STORED) 30 ])
73 31
74 if __name__ == '__main__': 32 if __name__ == '__main__':
75 sys.exit(main()) 33 sys.exit(main())
OLDNEW
« no previous file with comments | « no previous file | sky/tools/skyx/.gitignore » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698