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

Side by Side Diff: client/samples/swarm/gen_manifest.py

Issue 9314024: Final CL to kill off client/samples . (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « client/samples/swarm/favicon128.png ('k') | client/samples/swarm/info.svg » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 # Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
2 # for details. All rights reserved. Use of this source code is governed by a
3 # BSD-style license that can be found in the LICENSE file.
4
5 #!/usr/bin/python2.6
6 #
7
8 """
9 Usage: gen_manifest.py DIRECTORY EXTENSIONS CACHE-FILE HTML-FILES...
10
11 Outputs an app cache manifest file including (recursively) all files with the
12 provided in the directory with the given extensions. Each html files is then
13 processed and a corresponding <name>-cache.html file is created, pointing at
14 the appropriate cache manifest file, which is saved as <name>-cache.manifest.
15
16 Example:
17 gen_manifest.py war *.css,*.html,*.js,*.png cache.manifest foo.html bar.html
18
19 Produces: foo-cache.html, bar-cache.html, and cache.manifest
20 """
21
22 import fnmatch
23 import os
24 import random
25 import sys
26 import datetime
27
28 cacheDir = sys.argv[1]
29 extensions = sys.argv[2].split(',')
30 manifestName = sys.argv[3]
31 htmlFiles = sys.argv[4:]
32
33 os.chdir(cacheDir)
34 print "Generating manifest from root path: " + cacheDir
35
36 patterns = extensions + htmlFiles
37 def matches(file):
38 for pattern in patterns:
39 if fnmatch.fnmatch(file, pattern):
40 return True
41 return False
42
43 def findFiles(rootDir):
44 for root, dirs, files in os.walk(rootDir):
45 for f in files:
46 # yields this file relative to the given directory
47 yield os.path.join(root, f)[(len(rootDir) + 1):]
48
49 manifest = []
50 manifest.append("CACHE MANIFEST")
51
52 # print out a random number to force the browser to update the cache manifest
53 manifest.append("# %s" % datetime.datetime.now().isoformat())
54
55 # print out each file to be included in the cache manifest
56 manifest.append("CACHE:")
57
58 manifest += (f for f in findFiles('.') if matches(f))
59
60 # force the browser to request any other files over the network,
61 # even when offline (better failure mode)
62 manifest.append("NETWORK:")
63 manifest.append("*")
64
65 with open(manifestName, 'w') as f:
66 f.writelines(m + '\n' for m in manifest)
67
68 print "Created manifest file: " + manifestName
69
70 for htmlFile in htmlFiles:
71 cachedHtmlFile = htmlFile.replace('.html', '-cache.html')
72 text = open(htmlFile, 'r').read()
73 text = text.replace('<html>', '<html manifest="%s">' % manifestName, 1)
74 with open(cachedHtmlFile, 'w') as output:
75 output.write(text)
76 print "Processed html file: %s -> %s" % (htmlFile, cachedHtmlFile)
77
78 print "Successfully generated manifest and html files"
OLDNEW
« no previous file with comments | « client/samples/swarm/favicon128.png ('k') | client/samples/swarm/info.svg » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698