def update_solution_file(details: ReleaseDetails, visual_studio_sln: str) -> None: if os.path.isfile(visual_studio_sln): replace_text_in_file(visual_studio_sln, details.old_single_header, details.new_single_header) else: print(f"Info: No Visual Studio solution file: {visual_studio_sln}")
def update_starter_project(self) -> None: STARTER_PATH_OLD_SINGLE_HEADER = F"{release_constants.starter_project_dir}/lib/{self.details.old_single_header}" STARTER_PATH_NEW_SINGLE_HEADER = F"{release_constants.starter_project_dir}/lib/{self.details.new_single_header}" # Make sure starter project folder is clean project_dir = release_constants.starter_project_dir GitUtilities.reset_and_clean_working_directory(project_dir) shutil.copyfile(self.details.release_new_single_header, STARTER_PATH_NEW_SINGLE_HEADER) # Delete the last release: if os.path.exists(STARTER_PATH_OLD_SINGLE_HEADER): os.remove(STARTER_PATH_OLD_SINGLE_HEADER) # Update the version in the "redirect" header: replace_text_in_file( F"{release_constants.starter_project_dir}/lib/ApprovalTests.hpp", self.details.old_version.get_version_text(), self.details.new_version.get_version_text()) # Update the version number in the Visual Studio project: replace_text_in_file( F"{release_constants.starter_project_dir}/visual-studio-2017/StarterProject.vcxproj", self.details.old_single_header, self.details.new_single_header)
def test_file_reading_and_writing(self) -> None: text = '<caterpillar>blue</caterpillar>' file_name = 'bug.txt' write_file(file_name, text) replace_text_in_file(file_name, 'caterpillar', 'butterfly') new_text = read_file(file_name) self.assertEqual(new_text, '<butterfly>blue</butterfly>') os.remove(file_name)
def prepare_release_notes(details: ReleaseDetails) -> None: replace_text_in_file(release_constants.xxx_release_notes_path, 'v.x.y.z', details.new_version_as_text()) shutil.move(release_constants.xxx_release_notes_path, details.new_release_notes_path) # Make sure the above move has finished, before we create the new xxx file: time.sleep(1) shutil.copyfile(release_constants.template_release_notes_path, release_constants.xxx_release_notes_path)
def update_starter_project(details: ReleaseDetails) -> None: STARTER_PATH_OLD_SINGLE_HEADER = F"{details.locations.starter_project_dir}/lib/{details.old_single_header}" STARTER_PATH_NEW_SINGLE_HEADER = F"{details.locations.starter_project_dir}/lib/{details.new_single_header}" # Make sure starter project folder is clean project_dir = details.locations.starter_project_dir GitUtilities.reset_and_clean_working_directory(project_dir) shutil.copyfile(details.release_new_single_header, STARTER_PATH_NEW_SINGLE_HEADER) # Delete the last release: if os.path.exists(STARTER_PATH_OLD_SINGLE_HEADER): os.remove(STARTER_PATH_OLD_SINGLE_HEADER) else: raise RuntimeError(F""" ---------------------------------------------------------------- ERROR: Old header file does not exist: {STARTER_PATH_OLD_SINGLE_HEADER} Starting state of Starter Project does not match '{details.old_version.get_version_text()}' Check whether: 1. There were uncommitted changes to version.ini in main project, from a previous release preparation step. 2. The Starter Project repo needs pulling. 3. This is a CI build of a release tag - in which case the updated Starter Project has not yet been pushed, and this failure can be ignored. ---------------------------------------------------------------- """) # Update the version in the "redirect" header: replace_text_in_file( F"{details.locations.starter_project_dir}/lib/{details.project_details.simulated_single_header_file}", details.old_version.get_version_text(), details.new_version.get_version_text()) # Update the version number in the Visual Studio projects: PrepareStarterProjectRelease.update_solution_file( details, F"{details.locations.starter_project_dir}/visual-studio-2017/StarterProject.vcxproj" ) PrepareStarterProjectRelease.update_solution_file( details, F"{details.locations.starter_project_dir}/visual-studio-2019/StarterProject2019.vcxproj" )
def update_starter_project(self) -> None: STARTER_PATH_OLD_SINGLE_HEADER = F"{self.details.locations.starter_project_dir}/lib/{self.details.old_single_header}" STARTER_PATH_NEW_SINGLE_HEADER = F"{self.details.locations.starter_project_dir}/lib/{self.details.new_single_header}" # Make sure starter project folder is clean project_dir = self.details.locations.starter_project_dir GitUtilities.reset_and_clean_working_directory(project_dir) shutil.copyfile(self.details.release_new_single_header, STARTER_PATH_NEW_SINGLE_HEADER) # Delete the last release: if os.path.exists(STARTER_PATH_OLD_SINGLE_HEADER): os.remove(STARTER_PATH_OLD_SINGLE_HEADER) else: raise RuntimeError(F""" ---------------------------------------------------------------- ERROR: Old header file does not exist: {STARTER_PATH_OLD_SINGLE_HEADER} Starting state of Starter Project does not match '{self.details.old_version.get_version_text()}' Check whether: 1. There were uncommitted changes to version.ini in main project, from a previous release preparation step. 2. The Starter Project repo needs pulling. ---------------------------------------------------------------- """) # Update the version in the "redirect" header: replace_text_in_file( F"{self.details.locations.starter_project_dir}/lib/{self.details.project_details.simulated_single_header_file}", self.details.old_version.get_version_text(), self.details.new_version.get_version_text()) # Update the version number in the Visual Studio project: visual_studio_2017_sln = F"{self.details.locations.starter_project_dir}/visual-studio-2017/StarterProject.vcxproj" if os.path.isfile(visual_studio_2017_sln): replace_text_in_file(visual_studio_2017_sln, self.details.old_single_header, self.details.new_single_header) else: print(f"Info: No Visual Studio solution file: {visual_studio_2017_sln}")
def update_readme_and_docs(details: ReleaseDetails) -> None: with use_directory(".."): replace_text_in_file("mdsource/README.source.md", details.old_version_as_text(), details.new_version_as_text())
def update_pom(details: ReleaseDetails) -> None: with use_directory(release_constants.starter_project_dir): old = details.old_version.get_version_text_without_v() new = details.new_version.get_version_text_without_v() replace_text_in_file("pom.xml", old, new)
def update_readme_and_docs(details: ReleaseDetails) -> None: replace_text_in_file("README.source.md", details.old_version.get_version_text_without_v(), details.new_version.get_version_text_without_v())