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+)=|[>"']))+.)["']?"""
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]
50 package
["window"]["icon"] = icons
[0]
52 with
open(os
.path
.join(appdir
, indexes
[0]), "r") as fobj
:
53 header
= fobj
.read(4096)
55 title
= re
.search("<title>([^<]+)<", header
).groups()[0]
56 except AttributeError:
57 print >>sys
.stderr
, "No <title> found in %r." % fobj
.name
59 package
["window"]["title"] = title
61 version
= re
.search(attr("version"), header
).groups()[0]
62 except AttributeError:
63 print >>sys
.stderr
, "No version found in %r." % fobj
.name
65 package
["version"] = version
67 appid
= re
.search(attr("appid"), header
).groups()[0]
68 except AttributeError:
69 print >>sys
.stderr
, "No appid found in %r." % fobj
.name
71 package
["name"] = appid
73 if "+" not in package
["version"]:
74 package
["version"] += "+"
75 package
["version"] += time
.strftime("%Y%m%d%H%M%S")
77 with
open(os
.path
.join(appdir
, "package.json"), "w") as fobj
:
78 json
.dump(package
, fobj
)
80 if __name__
== "__main__":
85 raise SystemExit("Usage: %s appdir" %(