From f9ea03470e3a0bbe67ccb0a531dcf0e39aec1e90 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Mon, 30 Mar 2020 14:08:41 +0300 Subject: Move scripts/rcc to top level - add rcc generator for use when importing as subproject --- rcc | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100755 rcc (limited to 'rcc') diff --git a/rcc b/rcc new file mode 100755 index 0000000..00d453f --- /dev/null +++ b/rcc @@ -0,0 +1,48 @@ +#!/usr/bin/env python3 + +import argparse +import sys +import rcc_format + +def none(filelist, args): + rcc_format.write_header(args.output, args.namespace) + + for f in filelist: + with open(f.path, 'rb') as contents: + rcc_format.write_item(args.output, f.variable, contents.read()) + + rcc_format.write_entries(args.output, filelist) + print("constexpr auto compression = embed::None;", file=args.output) + + rcc_format.write_footer(args.output, args.namespace) + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description='Resource Compiler for C++', + epilog='For a full list of compression options, check {mode} --help.', + ) + + mode = parser.add_subparsers(help='compression mode') + + none_mode = mode.add_parser('-') + none_mode.set_defaults(func=none) + + zstd_mode = mode.add_parser('Zstd', + description='use Zstd compression', + epilog='A dictionary is recommended if compressing many small files. size(source)/size(dictionary) should be >= 10' + ) + zstd_mode.add_argument('--binary', type=str, default='zstd', help='zstd binary name') + zstd_mode.add_argument('--train', type=argparse.FileType('wb'), help='train dictionary and exit') + zstd_mode.add_argument('-d', '--dict', type=argparse.FileType('rb'), help='use dictionary, recommended for many similar small files') + zstd_mode.add_argument('--dsize', type=int, default=512, help='dictionary size, used for training') + zstd_mode.add_argument('-l', '--level', type=int, default=19, help='compression level') + zstd_mode.set_defaults(func=rcc_format.zstd) + + parser.add_argument('input', type=argparse.FileType('rt'), help='input file (.xrc)') + parser.add_argument('-o', '--output', type=argparse.FileType('wt'), default=sys.stdout, help='output header file') + parser.add_argument('-n', '--namespace', type=str, default='resources', help='namespace') + + args=parser.parse_args() + + args.func(rcc_format.filelist(args.input), args) + -- cgit v1.2.1