| Index: client/samples/swarm/gen_manifest.py
|
| ===================================================================
|
| --- client/samples/swarm/gen_manifest.py (revision 3770)
|
| +++ client/samples/swarm/gen_manifest.py (working copy)
|
| @@ -1,78 +0,0 @@
|
| -# Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
|
| -# for details. All rights reserved. Use of this source code is governed by a
|
| -# BSD-style license that can be found in the LICENSE file.
|
| -
|
| -#!/usr/bin/python2.6
|
| -#
|
| -
|
| -"""
|
| -Usage: gen_manifest.py DIRECTORY EXTENSIONS CACHE-FILE HTML-FILES...
|
| -
|
| -Outputs an app cache manifest file including (recursively) all files with the
|
| -provided in the directory with the given extensions. Each html files is then
|
| -processed and a corresponding <name>-cache.html file is created, pointing at
|
| -the appropriate cache manifest file, which is saved as <name>-cache.manifest.
|
| -
|
| -Example:
|
| -gen_manifest.py war *.css,*.html,*.js,*.png cache.manifest foo.html bar.html
|
| -
|
| -Produces: foo-cache.html, bar-cache.html, and cache.manifest
|
| -"""
|
| -
|
| -import fnmatch
|
| -import os
|
| -import random
|
| -import sys
|
| -import datetime
|
| -
|
| -cacheDir = sys.argv[1]
|
| -extensions = sys.argv[2].split(',')
|
| -manifestName = sys.argv[3]
|
| -htmlFiles = sys.argv[4:]
|
| -
|
| -os.chdir(cacheDir)
|
| -print "Generating manifest from root path: " + cacheDir
|
| -
|
| -patterns = extensions + htmlFiles
|
| -def matches(file):
|
| - for pattern in patterns:
|
| - if fnmatch.fnmatch(file, pattern):
|
| - return True
|
| - return False
|
| -
|
| -def findFiles(rootDir):
|
| - for root, dirs, files in os.walk(rootDir):
|
| - for f in files:
|
| - # yields this file relative to the given directory
|
| - yield os.path.join(root, f)[(len(rootDir) + 1):]
|
| -
|
| -manifest = []
|
| -manifest.append("CACHE MANIFEST")
|
| -
|
| -# print out a random number to force the browser to update the cache manifest
|
| -manifest.append("# %s" % datetime.datetime.now().isoformat())
|
| -
|
| -# print out each file to be included in the cache manifest
|
| -manifest.append("CACHE:")
|
| -
|
| -manifest += (f for f in findFiles('.') if matches(f))
|
| -
|
| -# force the browser to request any other files over the network,
|
| -# even when offline (better failure mode)
|
| -manifest.append("NETWORK:")
|
| -manifest.append("*")
|
| -
|
| -with open(manifestName, 'w') as f:
|
| - f.writelines(m + '\n' for m in manifest)
|
| -
|
| -print "Created manifest file: " + manifestName
|
| -
|
| -for htmlFile in htmlFiles:
|
| - cachedHtmlFile = htmlFile.replace('.html', '-cache.html')
|
| - text = open(htmlFile, 'r').read()
|
| - text = text.replace('<html>', '<html manifest="%s">' % manifestName, 1)
|
| - with open(cachedHtmlFile, 'w') as output:
|
| - output.write(text)
|
| - print "Processed html file: %s -> %s" % (htmlFile, cachedHtmlFile)
|
| -
|
| -print "Successfully generated manifest and html files"
|
|
|