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}")
示例#2
0
    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)
示例#3
0
 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)
示例#4
0
    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}")
示例#7
0
 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())
示例#8
0
 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)
示例#9
0
 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())