diff options
Diffstat (limited to 'test/gorilla.py')
-rwxr-xr-x | test/gorilla.py | 92 |
1 files changed, 0 insertions, 92 deletions
diff --git a/test/gorilla.py b/test/gorilla.py deleted file mode 100755 index 5bf64f5..0000000 --- a/test/gorilla.py +++ /dev/null @@ -1,92 +0,0 @@ -#!/usr/bin/env python3 -# -# Copyright (C) 2021 jahoti <jahoti@tilde.team> -# Licensing information is collated in the `copyright` file - -""" -A partial re-implementation of Hydrilla in Python, for testing purposes. - -This will eventually be replaced with a build of the actual thing. -""" - -import json, os, sys - -def load_db(path): - DB = {'script': {}, 'bag': {}, 'page': {}} - if path[-1] != os.sep: - path += os.sep - - DB['path'] = path - for file in os.listdir(path): - subdir = path + file - - if (os.st.S_IFMT(os.stat(subdir).st_mode) & os.st.S_IFDIR) == 0: - continue - - with open(subdir + os.sep + 'index.json') as f: - data = json.load(f) - - type_, data['file'] = data['type'], file - name_key = 'pattern' if type_ == 'page' else 'name' - - DB[type_][data[name_key]] = data - del data['type'], data[name_key] - if type_ == 'script': - with open(path + file + os.sep + data['location']) as f: - data['text'] = f.read() - - return DB - - -def mkhachette(patterns): - patterns = set(patterns) - if '*' in patterns: - patterns.remove('*') - patterns.update(DB['page'].keys()) - - scripts, bags, pages, new_bags = {}, {}, {}, [] - for pattern in patterns: - pages[pattern] = data = DB['page'][pattern] - type_, name = data['payload'] - if type_ == 'script': - scripts[name] = DB['script'][name] - else: - new_bags.append(name) - - while new_bags: - name = new_bags.pop(0) - if name in bags: - continue - - bags[name] = data = DB['bag'][name]['components'] - for type_, name in data: - if type_ == 'script': - scripts[name] = DB['script'][name] - else: - new_bags.append(name) - - items, path = [], DB['path'] - for script, data in scripts.items(): - item = {'hash': data['sha256']} - with open(path + data['file'] + os.sep + data['location']) as f: - item['text'] = f.read() - - items.append({'s' + script: item}) - - for bag, data in bags.items(): - items.append({'b' + bag: [[type_[0], name] for type_, name in data]}) - - for page, data in pages.items(): - type_, name = data['payload'] - items.append({'p' + page: {'components': [type_[0], name]}}) - - return items - - -if __name__ == '__main__': - if len(sys.argv) < 3 or not os.path.isdir(sys.argv[1]): - sys.stderr.write('Usage: %s [hydrilla content path] (page pattern (page pattern (...)))' % sys.argv[0]) - sys.exit(1) - - DB = load_db(sys.argv[1]) - print(json.dumps(mkhachette(sys.argv[2:]))) |