MCPcopy Create free account
hub / github.com/doldecomp/mkdd / Object

Class Object

tools/project.py:51–127  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

49
50
51class Object:
52 def __init__(self, completed: bool, name: str, **options: Any) -> None:
53 self.name = name
54 self.completed = completed
55 self.options: Dict[str, Any] = {
56 "add_to_all": None,
57 "asflags": None,
58 "asm_dir": None,
59 "cflags": None,
60 "extab_padding": None,
61 "extra_asflags": [],
62 "extra_cflags": [],
63 "extra_clang_flags": [],
64 "lib": None,
65 "mw_version": None,
66 "progress_category": None,
67 "scratch_preset_id": None,
68 "shift_jis": None,
69 "source": name,
70 "src_dir": None,
71 }
72 self.options.update(options)
73
74 # Internal
75 self.src_path: Optional[Path] = None
76 self.asm_path: Optional[Path] = None
77 self.src_obj_path: Optional[Path] = None
78 self.asm_obj_path: Optional[Path] = None
79 self.ctx_path: Optional[Path] = None
80
81 def resolve(self, config: "ProjectConfig", lib: Library) -> "Object":
82 # Use object options, then library options
83 obj = Object(self.completed, self.name, **lib)
84 for key, value in self.options.items():
85 if value is not None or key not in obj.options:
86 obj.options[key] = value
87
88 # Use default options from config
89 def set_default(key: str, value: Any) -> None:
90 if obj.options[key] is None:
91 obj.options[key] = value
92
93 set_default("add_to_all", True)
94 set_default("asflags", config.asflags)
95 set_default("asm_dir", config.asm_dir)
96 set_default("extab_padding", None)
97 set_default("mw_version", config.linker_version)
98 set_default("scratch_preset_id", config.scratch_preset_id)
99 set_default("shift_jis", config.shift_jis)
100 set_default("src_dir", config.src_dir)
101
102 # Validate progress categories
103 def check_category(category: str):
104 if not any(category == c.id for c in config.progress_categories):
105 sys.exit(
106 f"Progress category '{category}' missing from config.progress_categories"
107 )
108

Callers 2

configure.pyFile · 0.90
resolveMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected