a249232477fa14016dd86fcaab7a5f163e087c02
3 # Generate a node-webkit package.json file for a website.
5 # https://github.com/rogerwang/node-webkit/wiki/Manifest-format
13 def is_html(filename
):
14 return filename
.lower().endswith(".html")
17 return "data-" + name
+ """=["']?((?:.(?!["']?\s+(?:\S+)=|[>"']))+.)["']?"""
19 def main(appdir
, version
=None):
20 if not os
.path
.isdir(appdir
):
21 raise StandardError("input (%r) is not a directory" % appdir
)
24 for root
, dirnames
, filenames
in os
.walk(appdir
):
25 root
= os
.path
.relpath(root
, appdir
)
26 for filename
in filenames
:
27 if filename
.lower() == "index.html":
28 indexes
.append(os
.path
.join(root
, filename
))
29 if ("icon" in filename
.lower()
30 and filename
.lower().endswith((".ico", ".png"))):
31 icons
.append(os
.path
.join(root
, filename
))
33 indexes
.sort(key
=lambda fn
: (fn
.count("/"), fn
))
34 icons
.sort(key
=lambda fn
: (fn
.count("/"), fn
))
35 name
= os
.path
.basename(appdir
).split(".")[0]
39 "version": version
or "0.0.0",
40 "chromium-args": "--enable-webgl --ignore-gpu-blacklist",
51 package
["window"]["icon"] = icons
[0]
53 with
open(os
.path
.join(appdir
, indexes
[0]), "r") as fobj
:
54 header
= fobj
.read(4096)
56 title
= re
.search("<title>([^<]+)<", header
).groups()[0]
57 except AttributeError:
58 print >>sys
.stderr
, "No <title> found in %r." % fobj
.name
60 package
["window"]["title"] = title
62 version
= re
.search(attr("version"), header
).groups()[0]
63 except AttributeError:
64 print >>sys
.stderr
, "No version found in %r." % fobj
.name
66 package
["version"] = version
68 appid
= re
.search(attr("appid"), header
).groups()[0]
69 except AttributeError:
70 print >>sys
.stderr
, "No appid found in %r." % fobj
.name
72 package
["name"] = appid
74 if "+" not in package
["version"]:
75 package
["version"] += "+"
76 package
["version"] += time
.strftime("%Y%m%d%H%M%S")
78 with
open(os
.path
.join(appdir
, "package.json"), "w") as fobj
:
79 json
.dump(package
, fobj
)
81 if __name__
== "__main__":