diff options
| author | Josh Ferrell <josh@vector35.com> | 2025-08-26 15:49:45 -0400 |
|---|---|---|
| committer | Alexander Taylor <alex@vector35.com> | 2025-11-04 22:08:25 -0500 |
| commit | ae1dbe7e69e3a1d5cc69fa5362fba1b85ba5b6b8 (patch) | |
| tree | 034f72677b3751a8d467d229192646f5ce1b40e0 /python/project.py | |
| parent | 21324fa57b44ba77e46be4952a02484cb8c3ef5c (diff) | |
Add project file dependencies
Diffstat (limited to 'python/project.py')
| -rw-r--r-- | python/project.py | 60 |
1 files changed, 59 insertions, 1 deletions
diff --git a/python/project.py b/python/project.py index e8ab5198..7df3d2b5 100644 --- a/python/project.py +++ b/python/project.py @@ -202,10 +202,68 @@ class ProjectFile: """ Get this file's path in its parent project - :return: The path on disk of the file or None + :return: The path in the project or None """ return core.BNProjectFileGetPathInProject(self._handle) + def add_dependency(self, file: 'ProjectFile') -> bool: + """ + Add a ProjectFile as a dependency of this file + + :return: True on success, False otherwise + """ + return core.BNProjectFileAddDependency(self._handle, file._handle) + + def remove_dependency(self, file: 'ProjectFile') -> bool: + """ + Remove a ProjectFile as a dependency of this file + + :return: True on success, False otherwise + """ + return core.BNProjectFileRemoveDependency(self._handle, file._handle) + + def get_dependencies(self) -> List['ProjectFile']: + """ + Get the list of files that this file depends on + + :return: List of ProjectFiles that this file depends on + """ + count = ctypes.c_size_t() + value = core.BNProjectFileGetDependencies(self._handle, count) + if value is None: + raise ProjectException("Failed to get list of project file dependencies") + result = [] + try: + for i in range(count.value): + file_handle = core.BNNewProjectFileReference(value[i]) + if file_handle is None: + raise ProjectException("core.BNNewProjectFileReference returned None") + result.append(ProjectFile(file_handle)) + return result + finally: + core.BNFreeProjectFileList(value, count.value) + + def get_required_by(self) -> List['ProjectFile']: + """ + Get the list of files that depend on this file + + :return: List of ProjectFiles that depend on this file + """ + count = ctypes.c_size_t() + value = core.BNProjectFileGetRequiredBy(self._handle, count) + if value is None: + raise ProjectException("Failed to get list of project files that depend on file") + result = [] + try: + for i in range(count.value): + file_handle = core.BNNewProjectFileReference(value[i]) + if file_handle is None: + raise ProjectException("core.BNNewProjectFileReference returned None") + result.append(ProjectFile(file_handle)) + return result + finally: + core.BNFreeProjectFileList(value, count.value) + class ProjectFolder: """ |
