This repository has been archived by the owner on Jan 3, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathjasyscript.py
executable file
·111 lines (76 loc) · 3.1 KB
/
jasyscript.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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#
# API Browser
# Copyright 2011-2012 Zynga Inc.
#
import json
@task
def clean():
"""Clear build cache"""
session.clean()
Repository.clean()
@task
def distclean():
"""Clear caches and build results"""
session.clean()
Repository.distclean()
@task
def api():
"""Build the full api viewer into api folder"""
build(prefix="api")
ApiWriter(session).write("$prefix/data")
@task
def build(theme="original"):
"""Build the API viewer application"""
# Configure fields
session.setField("debug", False)
session.setField("theme", theme)
session.permutateField("es5")
# Initialize shared objects
assetManager = AssetManager(session).addBuildProfile()
outputManager = OutputManager(session, assetManager, compressionLevel=2)
fileManager = FileManager(session)
# Deploy assets
outputManager.deployAssets(["apibrowser.Browser"])
# Write kernel script
outputManager.storeKernel("$prefix/script/kernel.js", debug=True)
# Copy files from source
fileManager.updateFile("source/index.html", "$prefix/index.html")
# Rewrite template as jsonp
for tmpl in ["main", "error", "entry", "type", "params", "info", "origin", "tags"]:
jsonTemplate = json.dumps({ "template" : open("source/tmpl/%s.mustache" % tmpl).read() })
fileManager.writeFile("$prefix/tmpl/%s.js" % tmpl, "apiload(%s, '%s.mustache')" % (jsonTemplate, tmpl))
# Process every possible permutation
for permutation in session.permutate():
# Resolving dependencies
resolver = Resolver(session).addClassName("apibrowser.Browser")
# Compressing classes
outputManager.storeCompressed(resolver.getSortedClasses(), "$prefix/script/browser-$permutation.js", "new apibrowser.Browser;")
@task
def source(theme="original"):
"""Generate source"""
# Configure fields
session.setField("theme", theme)
session.setField("debug", True)
session.permutateField("es5")
# Initialize shared objects
assetManager = AssetManager(session).addSourceProfile()
outputManager = OutputManager(session, assetManager, compressionLevel=0)
fileManager = FileManager(session)
# Write kernel script
outputManager.storeKernel("$prefix/script/kernel.js", debug=True)
# Rewrite template as jsonp
for tmpl in ["main", "error", "entry", "type", "params", "info", "origin", "tags"]:
jsonTemplate = json.dumps({ "template" : open("source/tmpl/%s.mustache" % tmpl).read() })
fileManager.writeFile("$prefix/tmpl/%s.js" % tmpl, "apiload(%s, '%s.mustache')" % (jsonTemplate, tmpl))
# Process every possible permutation
for permutation in session.permutate():
# Resolving dependencies
resolver = Resolver(session).addClassName("apibrowser.Browser")
# Building class loader
outputManager.storeLoader(resolver.getSortedClasses(), "$prefix/script/browser-$permutation.js", "new apibrowser.Browser;")
# Generate API data into source folder
ApiWriter(session).write("$prefix/data")
@task
def server():
"""Starts built-in HTTP server"""
Server().start()