Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
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)
Пример #4
0
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)
Пример #5
0
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)
Пример #6
0
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)
Пример #7
0
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
Пример #8
0
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
Пример #9
0
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])
Пример #10
0
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])
Пример #11
0
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)
Пример #12
0
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)
Пример #13
0
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)
Пример #14
0
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)
Пример #15
0
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)
Пример #16
0
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)
Пример #17
0
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])
Пример #18
0
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])
Пример #19
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))
Пример #20
0
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)
Пример #21
0
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
Пример #22
0
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)
Пример #23
0
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)
Пример #24
0
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)
Пример #25
0
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)
Пример #26
0
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)
Пример #27
0
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)
Пример #28
0
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)
Пример #29
0
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)
Пример #30
0
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)
Пример #31
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))
Пример #32
0
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)
Пример #33
0
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)
Пример #34
0
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)
Пример #35
0
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
Пример #36
0
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)
Пример #37
0
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
Пример #38
0
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)
Пример #39
0
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)