forked from fonttools/fontbakery
-
Notifications
You must be signed in to change notification settings - Fork 0
/
fontbakery.py
79 lines (64 loc) · 2.29 KB
/
fontbakery.py
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
#!/usr/bin/env python
# coding: utf-8
# Copyright 2013 The Font Bakery Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# See AUTHORS.txt for the list of Authors and LICENSE.txt for the License.
import argparse
import os
import shutil
import sys
import yaml
from cli.bakery import Bakery, BAKERY_CONFIGURATION_DEFAULTS
class systdout:
@staticmethod
def write(msg, prefix=''):
sys.stdout.write(prefix + msg)
def main(sources, config):
rootpath = os.path.abspath('build/tmp')
if not config:
config = yaml.safe_load(open(BAKERY_CONFIGURATION_DEFAULTS))
else:
config = yaml.safe_load(open(config))
if 'process_files' not in config:
config['process_files'] = []
for source in sources:
if source[-4:] in ['.ufo', '.ttx', '.ttf', '.otf', '.sfd']:
# create config bakery.yaml from defaults
config['process_files'].append(source)
else:
continue
if os.path.isdir(source):
shutil.copytree(source, rootpath)
else:
shutil.copy(source, rootpath)
l = open(os.path.join(rootpath, '.bakery.yaml'), 'w')
l.write(yaml.safe_dump(config))
l.close()
try:
b = Bakery(os.path.join(rootpath, '.bakery.yaml'),
stdout_pipe=systdout)
b.interactive = True
b.run(with_upstream=True)
finally:
shutil.rmtree(rootpath)
pass
if __name__ == '__main__':
sys.path.append(0, os.path.abspath(os.path.dirname(__file__)))
parser = argparse.ArgumentParser()
parser.add_argument('filename', nargs="+",
help=("Path to UFO, SFD, TTX, TTF or OTF files"))
parser.add_argument('--config', type=str, default='')
args = parser.parse_args()
main(args.filename, args.config)