diff --git a/total_cost.py b/total_cost.py index 3dfb7f6..afcadf1 100644 --- a/total_cost.py +++ b/total_cost.py @@ -1,3 +1,4 @@ +#/usr/bin/python from json.decoder import JSONDecodeError import json import re @@ -21,9 +22,8 @@ def from_dict(d): global ITEMS ITEMS[name] = instance -def to_json(): - global ITEMS - if ITEMS: +def to_json(init=False): + if not init: ret = list(map(to_dict,ITEMS.values())) with open('__cache__','w') as file: json.dump(ret,file) @@ -124,23 +124,23 @@ class complex_item(item): self.naive_complexity = False return len(self.all_sub) - def get_raw_material_cost(self,ret = {}): + def get_raw_material_cost(self,numb=1,ret = {}): for name,count in self.sub_components.items(): component = ITEMS[name] if isinstance(component,raw_material): prev = ret.get(name,0) - ret[name] = prev + count + ret[name] = prev + count*numb elif isinstance(component,complex_item): - component.get_raw_material_cost(ret) + component.get_raw_material_cost(count*numb,ret) return ret - def get_component_cost(self,ret = {}): + def get_component_cost(self,numb=1,ret = {}): for name,count in self.sub_components.items(): component = ITEMS[name] if isinstance(component,complex_item): prev = ret.get(name,0) - ret[name] = prev + count - component.get_component_cost(ret) + ret[name] = prev + count*numb + component.get_component_cost(count*numb,ret) return ret def get_build_info(self): @@ -149,18 +149,22 @@ class complex_item(item): build_order = component_view.items() build_order = sorted(build_order,key = lambda item: ITEMS[item[0]].complexity) return material_view,build_order -def main(): +def main(args): + print(args) + import argparse import os + parser = argparse.ArgumentParser() + parser.add_argument('query') + args = parser.parse_args(args) if not os.path.exists('__cache__'): - to_json() + to_json(init=True) try: from_json() except JSONDecodeError: - to_json() + to_json(init=True) from_json() - name = sys.argv[1] - recursive_fill_in(name) - print(*ITEMS[name].get_build_info(),sep='\n') + recursive_fill_in(args.query) + print(*ITEMS[args.query].get_build_info(),sep='\n') to_json() if __name__ == "__main__": - main() \ No newline at end of file + main(sys.argv[1:]) \ No newline at end of file