aboutsummaryrefslogtreecommitdiff
path: root/test/gorilla.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/gorilla.py')
-rwxr-xr-xtest/gorilla.py92
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:])))