def runScript(): parser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter, description = banner(subtitle="Screenshot Generator")) parser.add_argument("source", nargs=1, help="Source folder") parser.add_argument("config", nargs=1, help="Path to config file") parser.add_argument("--root", nargs=1, help="Project root folder", required=False) parser.add_argument("--verbose", action="store_true", help="Chatty Cathy", required=False) if len(sys.argv) == 1: parser.print_help() return 2 else: args = parser.parse_args() VERBOSE = args.verbose if args.root is not None: source_folder = os.path.join(args.root[0], args.source[0]) config_path = os.path.join(args.root[0], args.config[0]) else: source_folder = args.source[0] config_path = args.config[0] take_screenshots_async(source_folder, config_path, VERBOSE)
def runScript(): parser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter, description = banner(subtitle="Folder Generator")) parser.add_argument("source", nargs=1, help="Source folder") parser.add_argument("--filter", metavar="\"filter\"", nargs=1, help="Glob filter in quotes e.g.: \"*_slide\"") parser.add_argument("--no-strip", action="store_true", help="Do not substitute spaces with '-'s in folder names") parser.add_argument("--root", nargs=1, help="Project root folder") parser.add_argument("--verbose", action="store_true", help="Chatty Cathy") if len(sys.argv) == 1: parser.print_help() return 2 else: args = parser.parse_args() if args.filter is None: filter = "*" else: filter = args.filter[0] if not args.no_strip: strip_spaces(args.source[0]) create_enclosing_folders(args.source[0], filter)
def runScript(): ## TODO make work with --root flag def doesFileExist(fname): exists = os.path.exists(fname) if not exists: print("%s does not exist!" % fname) return exists def allExists(folders): return reduce(lambda acc, arg: acc and doesFileExist(arg), folders, True) parser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter, description = banner(subtitle="(PRE)-fixer")) parser.add_argument("prefix", nargs=1, help="prefix string") parser.add_argument("source", nargs="+", help="folder(s) to process") parser.add_argument("--root", nargs=1, help="Project root folder", required=False) parser.add_argument("--verbose", action="store_true", required=False) if len(sys.argv) == 1: parser.print_help() return 2 else: args = parser.parse_args() the_prefix = args.prefix[0] folders = args.source if not allExists(folders): return for folder in folders: prefix_refs(the_prefix, find_slides(folder), folder) prefix_folder(the_prefix, folder)
def runScript(): parser = argparse.ArgumentParser( formatter_class=argparse.RawDescriptionHelpFormatter, description=banner(subtitle="Folder Generator") ) parser.add_argument("source", nargs=1, help="Source folder") parser.add_argument("--filter", metavar='"filter"', nargs=1, help='Glob filter in quotes e.g.: "*_slide"') parser.add_argument("--no-strip", action="store_true", help="Do not substitute spaces with '-'s in folder names") parser.add_argument("--root", nargs=1, help="Project root folder") parser.add_argument("--verbose", action="store_true", help="Chatty Cathy") if len(sys.argv) == 1: parser.print_help() return 2 else: args = parser.parse_args() if args.filter is None: filter = "*" else: filter = args.filter[0] if not args.no_strip: strip_spaces(args.source[0]) create_enclosing_folders(args.source[0], filter)
def runScript(): parser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter, description = banner(subtitle="slide renamer")) parser.add_argument("old", nargs=1, help="Old slide name") parser.add_argument("new", nargs=1, help="New slide name") parser.add_argument("--norelink", action="store_true", help="rename only; don't relink references in other slides", required=False) parser.add_argument("--root", nargs=1, help="Project root folder", required=False) parser.add_argument("--verbose", action="store_true", help="Chatty Cathy", required=False) if len(sys.argv) == 1: parser.print_help() return 2 ROOT = None args = parser.parse_args() if args.root is not None: ROOT = args.root[0] old = args.old[0] if ROOT is not None: old = os.path.join(ROOT, old) new = args.new[0] if ROOT is not None: new = os.path.join(ROOT, new) if not os.path.exists(old): raise IOError("%s does not exist" % old) if os.path.exists(new): raise IOError("%s already exists" % new) rename_slide(old, new, root=ROOT, relink=(not args.norelink), verbose=args.verbose)
def runScript(): parser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter, description = banner(subtitle=".ctl File Generator")) parser.add_argument("source", nargs=1, help="path to folder containing zip files to process") parser.add_argument("destination", nargs=1, help="path for output ctl files (will be created if it does not exist)") parser.add_argument("--u", metavar="USERNAME", nargs=1, help="Veeva username", required=True) parser.add_argument("--pwd", metavar="PASSWORD", nargs=1, help="Veeva password", required=True) parser.add_argument("--email", nargs=1, help="Optional email for errors", required=False) parser.add_argument("--verbose", action="store_true", help="Chatty Cathy", required=False) parser.add_argument("--root", nargs=1, help="Optional root directory for the project (used for versioning) current working directory used if none specified", required=False) if len(sys.argv) == 1: parser.print_help() return 2 else: args = parser.parse_args() email = None if args.email is not None: email = args.email[0] if args.root is None: ROOT = os.getcwd() else: ROOT = args.root[0] SOURCE = args.source[0] DEST = args.destination[0] parseFolder(SOURCE, out=DEST, root=ROOT, username=args.u[0], password=args.pwd[0], email=email)
def runScript(verbose=False): parser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter, description = banner(subtitle="Publisher")) parser.add_argument("--zip", nargs=1, help="path to zip files", required=True) parser.add_argument("--ctl", nargs=1, help="path to ctl files", required=True) parser.add_argument("--host", nargs=1, help="server name", required=True) parser.add_argument("--u", nargs=1, help="Veeva username", required=True) parser.add_argument("--pwd", nargs=1, help="Veeva password", required=True) parser.add_argument("--root", nargs=1, help="Project root folder", required=False) parser.add_argument("--verbose", action="store_true", help="Chatty Cathy") if len(sys.argv) == 1: parser.print_help() return 2 else: args = parser.parse_args() zips, ctls = match_zips_to_ctls(args.zip[0], args.ctl[0]) try: ftp_publish(zips=zips, ctls=ctls, username=args.u[0], password=args.pwd[0], server=args.host[0], verbose=args.verbose) except Exception as e: print(e) sys.stdout.flush() return 128
def runScript(): def doesFileExist(fname): exists = os.path.exists(fname) if not exists: print("%s does not exist!" % fname) return exists def allExists(folders): return reduce(lambda acc, arg: acc and doesFileExist(arg), folders, True) parser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter, description = banner(subtitle="Re-Linker")) parser.add_argument("--mv", nargs=3, help="recursively rename slide refs", metavar=("OLD_NAME", "NEW_NAME", "FOLDER")) parser.add_argument("--veev2rel", nargs="+", help="recursively replace veeva links with relative links", metavar="FOLDER") parser.add_argument("--rel2veev", nargs="+", help="recursively replace relative links with veeva links", metavar="FOLDER") parser.add_argument("--integrate_all", nargs="+", help="recursively resolve relative links and replace hrefs with veeva", metavar="FOLDER") if len(sys.argv) == 1: parser.print_help() return else: args = parser.parse_args() if args.mv is not None: old, new, folder = args.mv if not allExists([folder]): return else: return parseFolder(folder, actions=[mvRefs(old, new)]) if args.veev2rel is not None: folders = args.veev2rel if not allExists(folders): return else: for folder in folders: parseFolder(folder, actions=[veev2rel]) return if args.rel2veev is not None: folders = args.rel2veev if not allExists(folders): return else: for folder in folders: parseFolder(folder, actions=[rel2veev]) return if args.integrate_all is not None: folders = args.integrate_all if not allExists(folders): return else: for folder in folders: parseFolder(folder, actions=[integrateAll]) return
def runScript(): args = sys.argv if len(args) < 3: print(banner(subtitle="PDF Rasterizer")) print("USAGE: ") print(" %s source_folder dest_folder" % args[0]) return convertPDFs(args[1], args[2])
def runScript(ASYNC=False): # should use is_slide() to check that a folder is actually a slide folder def okay_to_add(path): IGNORES = ["_zips", "_ctls"] return functools.reduce(lambda acc,current: acc and (current != path), IGNORES, True) parser = argparse.ArgumentParser( formatter_class=argparse.RawDescriptionHelpFormatter, description = banner(subtitle="Slide Packager")) parser.add_argument("source", nargs=1, help="Source folder") parser.add_argument("destination", nargs='?', help="Destination folder (if none is specified, defaults to source/_zips)") parser.add_argument("--root", nargs=1, help="Project root directiory", required=False) parser.add_argument("--verbose", action="store_true", help="Chatty Cathy", required=False) parser.add_argument("--notparallel", action="store_true", help="Run without concurrency", required=False) if len(sys.argv) == 1: parser.print_help() return 2 else: args = parser.parse_args() VERBOSE = args.verbose ASYNC = (not args.notparallel) SOURCE = args.source[0] if args.destination is None: dest = os.path.join(SOURCE,"_zips") else: dest = args.destination #?? oh god this isn't a list! if args.root is None: root_dir = os.getcwd() else: root_dir = args.root[0] DEST = dest ROOT = root_dir SOURCE_PATH = os.path.abspath(os.path.join(ROOT,SOURCE)) srcs = [os.path.join(SOURCE,sd) for sd in next(os.walk(SOURCE_PATH))[1] if okay_to_add(sd)] if len(srcs) < 1: print("No slides found!") sys.exit(1) if ASYNC: zip_slides_async(root_dir, srcs, dest, verbose=VERBOSE) else: zip_slides(root_dir, srcs, dest, verbose=VERBOSE)
def runScript(): parser = argparse.ArgumentParser( formatter_class=argparse.RawDescriptionHelpFormatter, description=banner(subtitle="Screenshot Generator")) parser.add_argument("source", nargs=1, help="Source folder") parser.add_argument("config", nargs='?', help="Path to config file", default=CONFIG_FILENAME) parser.add_argument("--root", nargs=1, help="Project root folder", required=False) parser.add_argument("--verbose", action="store_true", help="Chatty Cathy", required=False) parser.add_argument("--shared-assets", action="store_true", help="Use Veeva shared assets", required=False) if len(sys.argv) == 1: parser.print_help() return 2 args = parser.parse_args() VERBOSE = args.verbose # parse the root filder if args.root is not None: root_dir = args.root[0] else: root_dir = os.getcwd() # parse config filename if args.config is not None: config_file_name = args.config else: config_file_name = CONFIG_FILENAME #parse config file path config_path = os.path.join(root_dir, config_file_name) source_path = os.path.join(root_dir, args.source[0]) # fake Veeva shared assets for the screenshots if args.shared_assets: fake_shared_assets(config_path, root_dir) take_screenshots_async(source_path, config_path, VERBOSE) if args.shared_assets: cleanup_fake_shared_assets(config_path, root_dir)
def runScript(ASYNC=False): parser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter, description = banner(subtitle="Asset Inliner")) parser.add_argument("source", help="Source folder") parser.add_argument("destination", help="Destination folder") parser.add_argument("--inject-root-only", action="store_true", help="Only inject files in the root of the destination (don't look for slide folders)") parser.add_argument("--notparallel", action="store_true", help="Run without concurrency") parser.add_argument("--root", nargs=1, help="Project root directory (current directory is used if nont is specified") parser.add_argument("--verbose", action="store_true", help="Chatty Cathy") if len(sys.argv) == 1: parser.print_help() return 2 else: args = parser.parse_args() VERBOSE = args.verbose ROOT_ONLY = args.inject_root_only ASYNC = (not args.notparallel) if args.root is None: root = os.getcwd() else: root = args.root[0] src = args.source ### arg! positional arguments don't return lists... oops! dest = args.destination ### ^ saem if not os.path.exists(os.path.join(root,src)): print(os.path.join(root,src)) print("Source does not exist!") sys.exit(1) if not os.path.exists(os.path.join(root,dest)): os.makedirs(os.path.join(root,dest)) if ROOT_ONLY: # dump files into the root inject(root, src, dest, verbose=VERBOSE) else: subdirs = [os.path.join(dest,sd) for sd in next(os.walk(os.path.join(root,dest)))[1]] if ASYNC: inject_async(root, src, subdirs, verbose=VERBOSE) else: inject(root, src, subdirs, verbose=VERBOSE)
def runScript(ASYNC=False): REMOVE = False args = sys.argv if "--remove" in args: REMOVE = True args.remove("--remove") if len(args) < 2: print(banner(subtitle="SASS Compiler")) print("USAGE: ") print(" %s source_folder" % args[0]) sys.exit(0) compileSass(args[1], remove_source=REMOVE, async=ASYNC)
def runScript(): args = sys.argv if len(args) < 2: print(banner(subtitle="Folder Generator")) print("USAGE: ") print(" %s path [\"glob-filter\"]" % args[0]) return filter = "*" path = os.path.realpath(args[1]) if len(args) >= 3: filter = args[2] stripSpaces(path) createEnclosingFolders(path, filter)
def runScript(): parser = argparse.ArgumentParser( formatter_class=argparse.RawDescriptionHelpFormatter, description=banner(subtitle="PDF Rasterizer")) parser.add_argument("source", nargs=1, help="Source folder") parser.add_argument("destination", nargs=1, help="Destination folder") parser.add_argument("--root", nargs=1, help="Project root directory") parser.add_argument("--verbose", action="store_true", help="Chatty Cathy") if len(sys.argv) == 1: parser.print_help() return 2 else: args = parser.parse_args() convertPDFs(args.source[0], args.destination[0])
def runScript(ASYNC=False): parser = argparse.ArgumentParser( formatter_class=argparse.RawDescriptionHelpFormatter, description=banner(subtitle="SASS Compiler")) parser.add_argument("source", nargs=1, help="Source folder") parser.add_argument("--remove", action="store_true", help="Remove .scss source files after compilation") parser.add_argument("--root", nargs=1, help="Root project folder") parser.add_argument("--notparallel", action="store_true", help="Run without concurrency") parser.add_argument("--verbose", action="store_true", help="Chatty Cathy") if len(sys.argv) == 1: parser.print_help() return 2 else: args = parser.parse_args() compile_sass(args.source[0], remove_source=args.remove, async=(not args.notparallel))
def runScript(): VERBOSE = False args = sys.argv if "--verbose" in args: VERBOSE = True args.remove("--verbose") if len(args) < 3: print(banner(subtitle="Screenshot Generator")) print("USAGE: ") print(" %s [--verbose] source_folder path_to_config" % args[0]) sys.exit(0) source_folder = args[1] config_path = args[2] take_screenshots_async(source_folder, config_path, VERBOSE)
def runScript(verbose=False): parser = argparse.ArgumentParser( formatter_class=argparse.RawDescriptionHelpFormatter, description=banner(subtitle="Publisher")) parser.add_argument("--zip", nargs=1, help="path to zip files", required=True) parser.add_argument("--ctl", nargs=1, help="path to ctl files", required=True) parser.add_argument("--host", nargs=1, help="server name", required=True) parser.add_argument("--u", nargs=1, help="Veeva username", required=True) parser.add_argument("--pwd", nargs=1, help="Veeva password", required=True) parser.add_argument("--root", nargs=1, help="Project root folder", required=False) parser.add_argument("--verbose", action="store_true", help="Chatty Cathy") parser.add_argument("--novalidate", action="store_true", help="Don't check to see if zip files are slides") if len(sys.argv) == 1: parser.print_help() return 2 else: args = parser.parse_args() zips, ctls = match_zips_to_ctls(args.zip[0], args.ctl[0], args.novalidate) try: ftp_publish(zips=zips, ctls=ctls, username=args.u[0], password=args.pwd[0], server=args.host[0], verbose=args.verbose) except Exception as e: print(e) sys.stdout.flush() return 128
def runScript(): def doesFileExist(fname): exists = os.path.exists(fname) if not exists: print("%s does not exist!" % fname) return exists def allExists(folders): return reduce(lambda acc, arg: acc and doesFileExist(arg), folders, True) parser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter, description = banner(subtitle="(PRE)-fixer") + textwrap.dedent('''\ WARNING: DO NOT USE ON SOURCE FILES UNDER GIT SOURCE CONTROL! THIS UTILITY DOES NOT USE GIT MV (yet) AND IT =WILL= F**K UP YOUR REPO Use on built files, thx. ''')) parser.add_argument("prefix", nargs=1, help="prefix string", required=True) parser.add_argument("folder", nargs="+", help="folder(s) to process", required=True) if len(sys.argv) == 1: parser.print_help() return else: args = parser.parse_args() if args.prefix is None: return if args.folder is not None: if not allExists(args.folder): return else: return the_prefix = args.prefix[0] folders = args.folder for folder in folders: prefix_refs(the_prefix, find_slides(folder), folder) prefix_folder(the_prefix, folder)
def runScript(ASYNC=False): VERBOSE = False ROOT_ONLY = False args = sys.argv if "--verbose" in args: VERBOSE = True args.remove("--verbose") if "--root-only" in args: ROOT_ONLY = True args.remove("--root-only") if len(args) < 4: print(banner(subtitle="Asset Injector")) print("USAGE: ") print(" %s root source dest [--root-only] [--verbose]" % args[0]) sys.exit(0) root = args[1] src = args[2] dest = args[3] if not os.path.exists(os.path.join(root, src)): print("Source does not exist!") sys.exit(1) if not os.path.exists(os.path.join(root, dest)): os.makedirs(os.path.join(root, dest)) if ROOT_ONLY: # dump files into the root inject(root, src, dest, verbose=VERBOSE) else: subdirs = [ os.path.join(dest, sd) for sd in next(os.walk(os.path.join(root, dest)))[1] ] if ASYNC: inject_async(root, src, subdirs, verbose=VERBOSE) else: inject(root, src, subdirs, verbose=VERBOSE)
def runScript(ASYNC=False): VERBOSE = False args = sys.argv if "--verbose" in args: VERBOSE = True args.remove("--verbose") if len(args) < 5: print(banner(subtitle="Template Renderer")) print("USAGE: ") print(" %s [--verbose] source_folder dest_folder templates_dir partials_dir" % args[0]) sys.exit(0) else: if ASYNC: render_slides_async(args[1], args[2], args[3], args[4], VERBOSE) else: render_slides(args[1], args[2], args[3], args[4], VERBOSE)
def runScript(ASYNC=False): VERBOSE = False args = sys.argv if "--verbose" in args: VERBOSE = True args.remove("--verbose") if len(args) < 5: print(banner(subtitle="Template Renderer")) print("USAGE: ") print( " %s [--verbose] source_folder dest_folder templates_dir partials_dir" % args[0]) sys.exit(0) else: if ASYNC: render_slides_async(args[1], args[2], args[3], args[4], VERBOSE) else: render_slides(args[1], args[2], args[3], args[4], VERBOSE)
def runScript(): parser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter, description = banner(subtitle=".ctl File Generator")) parser.add_argument("--src", nargs=1, help="path to folder containing zip files to process", required=True) parser.add_argument("--out", nargs=1, help="path for output ctl files (will be created if it does not exist)", required=True) parser.add_argument("--root", nargs=1, help="root directory for the project (used for versioning)", required=True) parser.add_argument("--u", nargs=1, help="Veeva username", required=True) parser.add_argument("--pwd", nargs=1, help="Veeva password", required=True) parser.add_argument("--email", nargs=1, help="Optional email for errors") if len(sys.argv) == 1: parser.print_help() return else: args = parser.parse_args() email = None if args.email is not None: email = args.email[0] parseFolder(args.src[0], out=args.out[0], root=args.root[0], username=args.u[0], password=args.pwd[0], email=email)
def runScript(ASYNC=False): VERBOSE = False ROOT_ONLY = False args = sys.argv if "--verbose" in args: VERBOSE = True args.remove("--verbose") if "--root-only" in args: ROOT_ONLY = True args.remove("--root-only") if len(args) < 4: print(banner(subtitle="Asset Injector")) print("USAGE: ") print(" %s root source dest [--root-only] [--verbose]" % args[0]) sys.exit(0) root = args[1] src = args[2] dest = args[3] if not os.path.exists(os.path.join(root,src)): print("Source does not exist!") sys.exit(1) if not os.path.exists(os.path.join(root,dest)): os.makedirs(os.path.join(root,dest)) if ROOT_ONLY: # dump files into the root inject(root, src, dest, verbose=VERBOSE) else: subdirs = [os.path.join(dest,sd) for sd in next(os.walk(os.path.join(root,dest)))[1]] if ASYNC: inject_async(root, src, subdirs, verbose=VERBOSE) else: inject(root, src, subdirs, verbose=VERBOSE)
def runScript(): parser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter, description = banner(subtitle="Screenshot Generator")) parser.add_argument("source", nargs=1, help="Source folder") parser.add_argument("config", nargs='?', help="Path to config file", default=CONFIG_FILENAME) parser.add_argument("--root", nargs=1, help="Project root folder", required=False) parser.add_argument("--verbose", action="store_true", help="Chatty Cathy", required=False) parser.add_argument("--shared-assets", action="store_true", help="Use Veeva shared assets", required=False) if len(sys.argv) == 1: parser.print_help() return 2 args = parser.parse_args() VERBOSE = args.verbose # parse the root filder if args.root is not None: root_dir = args.root[0] else: root_dir = os.getcwd() # parse config filename if args.config is not None: config_file_name = args.config else: config_file_name = CONFIG_FILENAME #parse config file path config_path = os.path.join(root_dir, config_file_name) source_path = os.path.join(root_dir, args.source[0]) # fake Veeva shared assets for the screenshots if args.shared_assets: fake_shared_assets(config_path, root_dir) take_screenshots_async(source_path, config_path, VERBOSE) if args.shared_assets: cleanup_fake_shared_assets(config_path, root_dir)
def runScript(ASYNC=False): VERBOSE = False args = sys.argv if "--verbose" in args: VERBOSE = True args.remove("--verbose") if len(args) < 2: print(banner(subtitle="Slide Packager")) print("USAGE: ") print(" %s src_dir [--verbose] [dest]" % args[0]) print(" (dest defaults to src_dir/_zips)") sys.exit(0) def okay_to_add(path): IGNORES = ["_zips", "_ctls"] return functools.reduce(lambda acc, current: acc and (current != path), IGNORES, True) root_dir = args[1] srcs = [ os.path.join(root_dir, sd) for sd in next(os.walk(root_dir))[1] if okay_to_add(sd) ] if len(srcs) < 1: print("No slides found!") sys.exit(1) if len(args) >= 3: dest = args[2] else: dest = os.path.join(args[1], "_zips") if ASYNC: zip_slides_async(root_dir, srcs, dest, verbose=VERBOSE) else: zip_slides_sync(root_dir, srcs, dest, verbose=VERBOSE)
def runScript(ASYNC=False): parser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter, description = banner(subtitle="Template Renderer")) parser.add_argument("source", nargs=1, help="Source folder") parser.add_argument("destination", nargs=1, help="Destination folder") parser.add_argument("templates", nargs=1, help="Templates folder") parser.add_argument("partials", nargs=1, help="Partials folder") parser.add_argument("--notparallel", action="store_true", help="Run without concurrency") parser.add_argument("--root", nargs=1, help="Project root folder", required=False) parser.add_argument("--verbose", action="store_true", help="Chatty Cathy", required=False) if len(sys.argv) == 1: parser.print_help() return 2 else: args = parser.parse_args() VERBOSE = args.verbose ASYNC = (not args.notparallel) SOURCE = args.source[0] DEST = args.destination[0] TEMPS = args.templates[0] PARTS = args.partials[0] if args.root is not None: ROOT = args.root[0] SOURCE = os.path.join(ROOT,SOURCE) DEST = os.path.join(ROOT,DEST) TEMPS = os.path.join(ROOT,TEMPS) PARTS = os.path.join(ROOT,PARTS) if ASYNC: render_slides_async(SOURCE, DEST, TEMPS, PARTS, VERBOSE) else: render_slides(SOURCE, DEST, TEMPS, PARTS, VERBOSE)
def runScript(): ## TODO make work with --root flag def doesFileExist(fname): exists = os.path.exists(fname) if not exists: print("%s does not exist!" % fname) return exists def allExists(folders): return reduce(lambda acc, arg: acc and doesFileExist(arg), folders, True) parser = argparse.ArgumentParser( formatter_class=argparse.RawDescriptionHelpFormatter, description=banner(subtitle="(PRE)-fixer")) parser.add_argument("prefix", nargs=1, help="prefix string") parser.add_argument("source", nargs="+", help="folder(s) to process") parser.add_argument("--root", nargs=1, help="Project root folder", required=False) parser.add_argument("--verbose", action="store_true", required=False) if len(sys.argv) == 1: parser.print_help() return 2 else: args = parser.parse_args() the_prefix = args.prefix[0] folders = args.source if not allExists(folders): return for folder in folders: prefix_refs(the_prefix, find_slides(folder), folder) prefix_folder(the_prefix, folder)
def runScript(ASYNC=False): VERBOSE = False args = sys.argv if "--verbose" in args: VERBOSE = True args.remove("--verbose") if len(args) < 2: print(banner(subtitle="Slide Packager")) print("USAGE: ") print(" %s src_dir [--verbose] [dest]" % args[0]) print(" (dest defaults to src_dir/_zips)") sys.exit(0) def okay_to_add(path): IGNORES = ["_zips", "_ctls"] return functools.reduce(lambda acc,current: acc and (current != path), IGNORES, True) root_dir = args[1] srcs = [os.path.join(root_dir,sd) for sd in next(os.walk(root_dir))[1] if okay_to_add(sd)] if len(srcs) < 1: print("No slides found!") sys.exit(1) if len(args) >= 3: dest = args[2] else: dest = os.path.join(args[1],"_zips") if ASYNC: zip_slides_async(root_dir, srcs, dest, verbose=VERBOSE) else: zip_slides_sync(root_dir, srcs, dest, verbose=VERBOSE)
def runScript(ASYNC=False): # should use is_slide() to check that a folder is actually a slide folder def okay_to_add(path): IGNORES = ["_zips", "_ctls"] return functools.reduce(lambda acc, current: acc and (current != path), IGNORES, True) parser = argparse.ArgumentParser( formatter_class=argparse.RawDescriptionHelpFormatter, description=banner(subtitle="Slide Packager")) parser.add_argument("source", nargs=1, help="Source folder") parser.add_argument( "destination", nargs='?', help= "Destination folder (if none is specified, defaults to source/_zips)") parser.add_argument("--root", nargs=1, help="Project root directiory", required=False) parser.add_argument("--verbose", action="store_true", help="Chatty Cathy", required=False) parser.add_argument("--notparallel", action="store_true", help="Run without concurrency", required=False) if len(sys.argv) == 1: parser.print_help() return 2 else: args = parser.parse_args() VERBOSE = args.verbose ASYNC = (not args.notparallel) SOURCE = args.source[0] if args.destination is None: dest = os.path.join(SOURCE, "_zips") else: dest = args.destination #?? oh god this isn't a list! if args.root is None: root_dir = os.getcwd() else: root_dir = args.root[0] DEST = dest ROOT = root_dir SOURCE_PATH = os.path.abspath(os.path.join(ROOT, SOURCE)) srcs = [ os.path.join(SOURCE, sd) for sd in next(os.walk(SOURCE_PATH))[1] if okay_to_add(sd) ] if len(srcs) < 1: print("No slides found!") sys.exit(1) if ASYNC: zip_slides_async(root_dir, srcs, dest, verbose=VERBOSE) else: zip_slides(root_dir, srcs, dest, verbose=VERBOSE)
def runScript(): ## TODO: make work with --root flag def does_file_exist(fname): exists = os.path.exists(fname) if not exists: print("%s does not exist!" % fname) return exists def all_exists(folders): return reduce(lambda acc, arg: acc and does_file_exist(arg), folders, True) parser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter, description = banner(subtitle="Re-Linker")) parser.add_argument("--root", nargs=1, help="Project root folder", required=False) parser.add_argument("--verbose", action="store_true", required=False, help="Chatty Cathy") group = parser.add_mutually_exclusive_group() group.add_argument("--mv", nargs=3, metavar=("old_name", "new_name", "source"), help="recursively rename references to an old slide name with a new slide name") group.add_argument("--veev2rel", nargs="+", metavar="source", help="recursively replace veeva links with relative links") group.add_argument("--rel2veev", nargs="+", metavar="source", help="recursively replace relative links with veeva link") group.add_argument("--integrate-all", nargs="+", metavar="source", help="recursively resolve relative links and replace hrefs with veeva") if len(sys.argv) == 1: parser.print_help() return 2 args = parser.parse_args() verbose = args.verbose composer = veeva_composer("veeva:") if args.mv is not None: old, new, folder = args.mv if not all_exists([folder]): return 128 else: return parse_folder(folder, actions=[mv_refs(composer, old, new)], verbose=verbose) if args.veev2rel is not None: folders = args.veev2rel if not all_exists(folders): return 128 else: for folder in folders: parse_folder(folder, actions=[veev2rel(composer)], verbose=verbose) return if args.rel2veev is not None: folders = args.rel2veev if not all_exists(folders): return 128 else: for folder in folders: parse_folder(folder, actions=[rel2veev(composer)], verbose=verbose) return if args.integrate_all is not None: folders = args.integrate_all if not all_exists(folders): return 128 else: for folder in folders: parse_folder(folder, actions=[integrate_all(composer)], verbose=verbose) return
def runScript(): ## TODO: make work with --root flag def does_file_exist(fname): exists = os.path.exists(fname) if not exists: print("%s does not exist!" % fname) return exists def all_exists(folders): return reduce(lambda acc, arg: acc and does_file_exist(arg), folders, True) parser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter, description = banner(subtitle="Re-Linker")) parser.add_argument("--root", nargs=1, help="Project root folder", required=False) parser.add_argument("--verbose", action="store_true", required=False, help="Chatty Cathy") group = parser.add_mutually_exclusive_group() group.add_argument("--mv", nargs=3, metavar=("old_name", "new_name", "source"), help="recursively rename references to an old slide name with a new slide name") group.add_argument("--veev2rel", nargs="+", metavar="source", help="recursively replace veeva links with relative links") group.add_argument("--rel2veev", nargs="+", metavar="source", help="recursively replace relative links with veeva link") group.add_argument("--integrate-all", nargs="+", metavar="source", help="recursively resolve relative links and replace hrefs with veeva") group.add_argument("--share-assets", nargs="+", metavar="source", help="recursively replace links to global assets with veeva ../shared/ prefix") if len(sys.argv) == 1: parser.print_help() return 2 args = parser.parse_args() verbose = args.verbose composer = veeva_composer("veeva:") if args.mv is not None: old, new, folder = args.mv if not all_exists([folder]): return 128 else: return parse_folder(folder, actions=[mv_refs(composer, old, new)], verbose=verbose) if args.veev2rel is not None: folders = args.veev2rel if not all_exists(folders): return 128 else: for folder in folders: parse_folder(folder, actions=[veev2rel(composer)], verbose=verbose) return if args.rel2veev is not None: folders = args.rel2veev if not all_exists(folders): return 128 else: for folder in folders: parse_folder(folder, actions=[rel2veev(composer)], verbose=verbose) return if args.integrate_all is not None: folders = args.integrate_all if not all_exists(folders): return 128 else: for folder in folders: parse_folder(folder, actions=[integrate_all(composer)], verbose=verbose) return if args.share_assets is not None: if args.root: veeva_root = args.root[0] else: veeva_root = os.getcwd() config_file = os.path.join(veeva_root, CONFIG_FILENAME) if not os.path.exists(config_file): print("Relink.py: could not load config file", file=sys.stderr) return 128 else: with open(config_file) as f: config = json.load(f) global_assets = config['MAIN']['globals_dir'] folders = args.share_assets if not all_exists(folders): return 128 else: for folder in folders: parse_folder(folder, actions=[share_assets(global_assets,composer)], verbose=verbose)
def runScript(): def doesFileExist(fname): exists = os.path.exists(fname) if not exists: print("%s does not exist!" % fname) return exists def allExists(folders): return reduce(lambda acc, arg: acc and doesFileExist(arg), folders, True) parser = argparse.ArgumentParser( formatter_class=argparse.RawDescriptionHelpFormatter, description=banner(subtitle="Re-Linker")) parser.add_argument("--mv", nargs=3, help="recursively rename slide refs", metavar=("OLD_NAME", "NEW_NAME", "FOLDER")) parser.add_argument( "--veev2rel", nargs="+", help="recursively replace veeva links with relative links", metavar="FOLDER") parser.add_argument( "--rel2veev", nargs="+", help="recursively replace relative links with veeva links", metavar="FOLDER") parser.add_argument( "--integrate_all", nargs="+", help="recursively resolve relative links and replace hrefs with veeva", metavar="FOLDER") if len(sys.argv) == 1: parser.print_help() return else: args = parser.parse_args() if args.mv is not None: old, new, folder = args.mv if not allExists([folder]): return else: return parseFolder(folder, actions=[mvRefs(old, new)]) if args.veev2rel is not None: folders = args.veev2rel if not allExists(folders): return else: for folder in folders: parseFolder(folder, actions=[veev2rel]) return if args.rel2veev is not None: folders = args.rel2veev if not allExists(folders): return else: for folder in folders: parseFolder(folder, actions=[rel2veev]) return if args.integrate_all is not None: folders = args.integrate_all if not allExists(folders): return else: for folder in folders: parseFolder(folder, actions=[integrateAll]) return
def runScript(): parser = argparse.ArgumentParser( formatter_class=argparse.RawDescriptionHelpFormatter, description=banner(subtitle=".ctl File Generator")) parser.add_argument("source", nargs=1, help="path to folder containing zip files to process") parser.add_argument( "destination", nargs=1, help="path for output ctl files (will be created if it does not exist)" ) parser.add_argument("--u", metavar="USERNAME", nargs=1, help="Veeva username", required=True) parser.add_argument("--pwd", metavar="PASSWORD", nargs=1, help="Veeva password", required=True) parser.add_argument("--email", nargs=1, help="Optional email for errors", required=False) parser.add_argument("--verbose", action="store_true", help="Chatty Cathy", required=False) parser.add_argument( "--root", nargs=1, help= "Optional root directory for the project (used for versioning) current working directory used if none specified", required=False) parser.add_argument("--novalidate", action="store_true", help="Don't check to see if each zip file is a slide") parser.add_argument("--htmlonly", action="store_true", help="Only check for metadata on html files") if len(sys.argv) == 1: parser.print_help() return 2 else: args = parser.parse_args() email = None if args.email is not None: email = args.email[0] if args.root is None: ROOT = os.getcwd() else: ROOT = args.root[0] SOURCE = args.source[0] DEST = args.destination[0] parseFolder(SOURCE, out=DEST, root=ROOT, username=args.u[0], password=args.pwd[0], email=email, novalidate=args.novalidate, htmlonly=args.htmlonly)