Created
September 20, 2010 15:03
-
-
Save anonymous/588026 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# coding=utf-8 | |
""" | |
Generate all the modules of the projects as SCORM2004r3 packages that match a | |
pattern. | |
This script work if your project as the following structure: | |
0123_project_root/ # 0123 = customer code | |
|-- .svn | |
|-- 0123_M01 # module 01 | |
| |-- .svn | |
| |-- 0123_M01_SCO1 # SCO 1.1 | |
| | |-- .svn | |
| |-- 0123_M01_SCO2 # SCO 1.2 | |
| | |-- .svn | |
| |-- 0123_M01_SCO3 # SCO 1.3 | |
| | |-- .svn | |
| |-- 0123_M01_SCO4 # SCO 1.4 | |
| | |-- .svn | |
| |-- imsmanifest.xml # scorm support files | |
| |-- ... | |
|-- 0123_M02 # module 02 | |
... | |
|-- 0123_M10 # module 10 | |
|-- _src | |
|-- _classes # Flash classes used form this project | |
You want to be able to export one or all modules at one, without .svn folders | |
and other developpements files. | |
""" | |
import os, sys, getopt, glob, zipfile | |
EXCLUDED = ('..', | |
'*.kpf', '*.komodoproject', # komodo | |
'_src', # studio | |
'__MACOSX', '.DS_Store', # MacOS | |
'Thumbs.db', # Windows | |
'.svn', # svn | |
'.hg', '.hgignore', '.hgtags', # Mercurial | |
'.git', '.gitignore' # git | |
) | |
def browse(path): | |
if os.path.isdir(path) and not path in EXCLUDED: | |
for root, dirs, files in os.walk(path): | |
for file in files: | |
if not file in EXCLUDED: | |
yield (os.path.join(root, file)) | |
for dir in dirs: | |
if dir in EXCLUDED: | |
dirs.remove(dir) | |
def main(argv): | |
""" | |
Initialize the script | |
""" | |
try: | |
opts, args = getopt.gnu_getopt(argv, "h:p", ["help", "pattern="]) | |
except getopt.GetoptError: | |
usage() | |
sys.exit(2) | |
pattern = None | |
for opt, arg in opts: | |
if opt == '--pattern' or opt == '-p': | |
pattern = arg | |
validate(pattern) | |
zip(pattern) | |
def usage(): | |
print 'Generate all the modules of the projects as SCORM2004r3 packages.' | |
print ' ~ python publish_all.py --pattern=123_M01*' | |
def validate(pattern): | |
""" Validate the required variables and check if they are correctly set.""" | |
if pattern is None: | |
print 'The `pattern` is required.' | |
sys.exit(2) | |
def zip(pattern): | |
for path in glob.glob(pattern): | |
if os.path.isdir(path): | |
zip = zipfile.ZipFile('%s.zip' % path, mode = 'w') | |
for file in browse(path): | |
zip.write(file) | |
zip.close() | |
print '%s.zip generated' % path | |
if __name__ == "__main__": | |
main(sys.argv[1:]) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment