ScriptCollection 4.0.28__py3-none-any.whl → 4.0.34__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ScriptCollection/AnionBuildPlatform.py +66 -20
- ScriptCollection/Executables.py +1 -1
- ScriptCollection/ScriptCollectionCore.py +1 -1
- ScriptCollection/TFCPS/TFCPS_CreateRelease.py +3 -5
- ScriptCollection/TFCPS/TFCPS_MergeToMain.py +7 -13
- ScriptCollection/TFCPS/TFCPS_MergeToStable.py +23 -37
- ScriptCollection/TFCPS/TFCPS_Tools_General.py +16 -0
- {scriptcollection-4.0.28.dist-info → scriptcollection-4.0.34.dist-info}/METADATA +1 -1
- {scriptcollection-4.0.28.dist-info → scriptcollection-4.0.34.dist-info}/RECORD +12 -12
- {scriptcollection-4.0.28.dist-info → scriptcollection-4.0.34.dist-info}/WHEEL +0 -0
- {scriptcollection-4.0.28.dist-info → scriptcollection-4.0.34.dist-info}/entry_points.txt +0 -0
- {scriptcollection-4.0.28.dist-info → scriptcollection-4.0.34.dist-info}/top_level.txt +0 -0
@@ -9,7 +9,6 @@ from .ScriptCollectionCore import ScriptCollectionCore
|
|
9
9
|
|
10
10
|
class AnionBuildPlatformConfiguration:
|
11
11
|
build_repositories_folder:str
|
12
|
-
project_to_build:str
|
13
12
|
additional_arguments_file:str
|
14
13
|
verbosity:LogLevel
|
15
14
|
source_branch:str
|
@@ -18,14 +17,12 @@ class AnionBuildPlatformConfiguration:
|
|
18
17
|
|
19
18
|
def __init__(self,
|
20
19
|
build_repositories_folder:str,
|
21
|
-
project_to_build:str,
|
22
20
|
additional_arguments_file:str,
|
23
21
|
verbosity:LogLevel,
|
24
22
|
source_branch:str,
|
25
23
|
common_remote_name:str,
|
26
24
|
update_dependencies:bool):
|
27
25
|
self.build_repositories_folder=build_repositories_folder
|
28
|
-
self.project_to_build=project_to_build
|
29
26
|
self.additional_arguments_file=additional_arguments_file
|
30
27
|
self.verbosity=verbosity
|
31
28
|
self.source_branch=source_branch
|
@@ -46,11 +43,13 @@ class AnionBuildPlatform:
|
|
46
43
|
|
47
44
|
def run(self) -> None:
|
48
45
|
# Checkout source branch
|
49
|
-
build_repo_folder:str=
|
46
|
+
build_repo_folder:str=self.__configuration.build_repositories_folder
|
47
|
+
GeneralUtilities.assert_condition(build_repo_folder.endswith("Build"),f"buildrepositoriesfolder {build_repo_folder} must end with 'Build'")
|
50
48
|
self.__sc.assert_is_git_repository(build_repo_folder)
|
51
|
-
|
49
|
+
product_name=os.path.basename(build_repo_folder)[:-len("Build")]
|
50
|
+
repository:str=os.path.join(build_repo_folder,"Submodules",product_name)
|
52
51
|
self.__sc.assert_is_git_repository(repository)
|
53
|
-
self.__sc.
|
52
|
+
self.__sc.git_commit(build_repo_folder,"Updated changes")
|
54
53
|
self.__sc.git_checkout(repository,self.__configuration.source_branch)
|
55
54
|
|
56
55
|
# Pull changes from remote
|
@@ -60,19 +59,61 @@ class AnionBuildPlatform:
|
|
60
59
|
|
61
60
|
#Update dependencies
|
62
61
|
if self.__configuration.update_dependencies:
|
63
|
-
self.__update_dependencies()
|
62
|
+
self.__update_dependencies(product_name)
|
64
63
|
|
65
64
|
#Do release
|
66
65
|
scripts_folder:str=os.path.join(build_repo_folder,"Scripts","CreateRelease")
|
67
|
-
|
68
|
-
|
66
|
+
|
67
|
+
merge_to_main_arguments=""
|
68
|
+
#if self.__configuration.project_to_build is not None:
|
69
|
+
# merge_to_main_arguments+=f" --productname {self.__configuration.project_to_build}"
|
70
|
+
if self.__configuration.source_branch is not None:
|
71
|
+
merge_to_main_arguments+=f" --mergesourcebranch {self.__configuration.source_branch}"
|
72
|
+
#if self.__configuration.additional_arguments_file is not None:
|
73
|
+
# merge_to_main_arguments+=f" --additionalargumentsfile {self.__configuration.additional_arguments_file}"
|
74
|
+
#if self.__configuration.main_branch is not None:
|
75
|
+
# merge_to_main_arguments+=f" --mainbranch {self.__configuration.main_branch}"
|
76
|
+
#if self.__configuration.common_remote_name is not None:
|
77
|
+
# merge_to_main_arguments+=f" --commonremotename {self.__configuration.common_remote_name}"
|
78
|
+
if self.__configuration.verbosity is not None:
|
79
|
+
merge_to_main_arguments+=f" --verbosity {self.__configuration.verbosity.value}"
|
80
|
+
self.__sc.run_program("python",f"MergeToMain.py{merge_to_main_arguments}",scripts_folder,print_live_output=True)
|
81
|
+
|
82
|
+
merge_to_stable_arguments=""
|
83
|
+
#if self.__configuration.project_to_build is not None:
|
84
|
+
# merge_to_stable_arguments+=f" --productname {self.__configuration.project_to_build}"
|
85
|
+
#if self.__configuration.additional_arguments_file is not None:
|
86
|
+
# merge_to_stable_arguments+=f" --additionalargumentsfile {self.__configuration.additional_arguments_file}"
|
87
|
+
#if self.__configuration.source_branch is not None:
|
88
|
+
# merge_to_stable_arguments+=f" --sourcebranch {self.__configuration.source_branch}"
|
89
|
+
#if self.__configuration.main_branch is not None:
|
90
|
+
# merge_to_stable_arguments+=f" --targetbranch {self.__configuration.main_branch}"
|
91
|
+
#if self.__configuration.reference_repo is not None:
|
92
|
+
# merge_to_stable_arguments+=f" --referencerepo {self.__configuration.referencerepo}"
|
93
|
+
#if self.__configuration.common_remote_name is not None:
|
94
|
+
# merge_to_stable_arguments+=f" --commonremotename {self.__configuration.common_remote_name}"
|
95
|
+
#if self.__configuration.build_repo_main_branch_name is not None:
|
96
|
+
# merge_to_stable_arguments+=f" --buildrepomainbranchname {self.__configuration.build_repo_main_branch_name}"
|
97
|
+
#if self.__configuration.reference_repo_main_branch_name is not None:
|
98
|
+
# merge_to_stable_arguments+=f" --referencerepomainbranchname {self.__configuration.reference_repo_main_branch_name}"
|
99
|
+
#if self.__configuration.reference_remote_name is not None:
|
100
|
+
# merge_to_stable_arguments+=f" --referenceremotename {self.__configuration.reference_remote_name}"
|
101
|
+
#if self.__configuration.build_repo_remote_name is not None:
|
102
|
+
# merge_to_stable_arguments+=f" --buildreporemotename {self.__configuration.build_repo_remote_name}"
|
103
|
+
#if self.__configuration.artifacts_target_folder is not None:
|
104
|
+
# merge_to_stable_arguments+=f" --artifactstargetfolder {self.__configuration.artifacts_target_folder}"
|
105
|
+
#if self.__configuration.common_remote_url is not None:
|
106
|
+
# merge_to_stable_arguments+=f" --commonremoteurl {self.__configuration.common_remote_url}"
|
107
|
+
if self.__configuration.verbosity is not None:
|
108
|
+
merge_to_stable_arguments+=f" --verbosity {self.__configuration.verbosity.value}"
|
109
|
+
self.__sc.run_program("python",f"MergeToStable.py{merge_to_stable_arguments}",scripts_folder,print_live_output=True)
|
69
110
|
|
70
111
|
#prepare for next-release
|
71
112
|
self.__sc.git_checkout(repository,self.__configuration.source_branch)
|
72
113
|
|
73
|
-
def __update_dependencies(self) -> None:
|
114
|
+
def __update_dependencies(self,product_name:str) -> None:
|
74
115
|
self.__sc.log.log("Update dependencies...")
|
75
|
-
repository:str=os.path.join(self.__configuration,
|
116
|
+
repository:str=os.path.join(self.__configuration,product_name+"Build","Submodules",product_name)
|
76
117
|
self.__sc.assert_no_uncommitted_changes(repository)
|
77
118
|
self.__sc.run_program("python","UpdateDependencies.py",os.path.join(repository,"Other","Scripts"))
|
78
119
|
codeunits:list[str]=self._tFCPS_Tools_General.get_codeunits(repository)
|
@@ -110,15 +151,16 @@ class AnionBuildPlatform:
|
|
110
151
|
class TFCPS_AnionBuildPlatform_CLI:
|
111
152
|
|
112
153
|
@staticmethod
|
113
|
-
def get_with_overwritable_defaults(default_project_to_build:str=None,default_loglevel:LogLevel=None,default_additionalargumentsfile:str=None,default_build_repositories_folder:str=None,default_source_branch:str=None,default_remote_name:str=None)->AnionBuildPlatform:
|
154
|
+
def get_with_overwritable_defaults(default_project_to_build:str=None,default_loglevel:LogLevel=None,default_additionalargumentsfile:str=None,default_build_repositories_folder:str=None,default_source_branch:str=None,default_main_branch:str=None,default_remote_name:str=None)->AnionBuildPlatform:
|
114
155
|
parser = argparse.ArgumentParser()
|
115
156
|
verbosity_values = ", ".join(f"{lvl.value}={lvl.name}" for lvl in LogLevel)
|
116
157
|
parser.add_argument('-b', '--buildrepositoriesfolder', required=False,default=None)
|
117
158
|
parser.add_argument('-p', '--projecttobuild', required=False, default=None)
|
118
159
|
parser.add_argument('-a', '--additionalargumentsfile', required=False, default=None)
|
119
|
-
parser.add_argument('-v', '--verbosity', required=False,
|
120
|
-
parser.add_argument('-s', '--sourcebranch', required=False
|
121
|
-
parser.add_argument('-
|
160
|
+
parser.add_argument('-v', '--verbosity', required=False, help=f"Sets the loglevel. Possible values: {verbosity_values}")
|
161
|
+
parser.add_argument('-s', '--sourcebranch', required=False)#other/next-release
|
162
|
+
parser.add_argument('-m', '--mainbranch', required=False)#main
|
163
|
+
parser.add_argument('-r', '--defaultremotename', required=False)#origin
|
122
164
|
parser.add_argument('-u', '--updatedependencies', required=False, action='store_true', default=False)
|
123
165
|
args=parser.parse_args()
|
124
166
|
|
@@ -128,14 +170,18 @@ class TFCPS_AnionBuildPlatform_CLI:
|
|
128
170
|
if args.buildrepositoriesfolder is not None:
|
129
171
|
default_build_repositories_folder=args.buildrepositoriesfolder
|
130
172
|
|
173
|
+
scripts_folder=os.getcwd()
|
174
|
+
|
131
175
|
if default_build_repositories_folder is None:
|
132
|
-
|
133
|
-
if os.path.basename(
|
134
|
-
default_build_repositories_folder=os.path.dirname(
|
176
|
+
parent_parent_folder=GeneralUtilities.resolve_relative_path("../..",scripts_folder)
|
177
|
+
if os.path.basename(parent_parent_folder).endswith("Build"):
|
178
|
+
default_build_repositories_folder=os.path.dirname(parent_parent_folder)
|
135
179
|
GeneralUtilities.assert_not_null(default_build_repositories_folder,"buildrepositoriesfolder is not set")
|
136
180
|
|
137
181
|
if default_project_to_build is None:
|
138
|
-
|
182
|
+
parent_parent_folder=GeneralUtilities.resolve_relative_path("../..",scripts_folder)
|
183
|
+
if os.path.basename(parent_parent_folder).endswith("Build"):
|
184
|
+
default_project_to_build=os.path.basename(parent_parent_folder)[:-len("Build")]
|
139
185
|
GeneralUtilities.assert_not_null(default_project_to_build,"projecttobuild is not set")
|
140
186
|
|
141
187
|
if args.verbosity is not None:
|
@@ -153,6 +199,6 @@ class TFCPS_AnionBuildPlatform_CLI:
|
|
153
199
|
default_remote_name=args.defaultremotename
|
154
200
|
GeneralUtilities.assert_not_null(default_remote_name,"defaultremotename is not set")
|
155
201
|
|
156
|
-
config:AnionBuildPlatformConfiguration=AnionBuildPlatformConfiguration(default_build_repositories_folder,
|
202
|
+
config:AnionBuildPlatformConfiguration=AnionBuildPlatformConfiguration(default_build_repositories_folder,default_additionalargumentsfile,default_loglevel,default_source_branch,default_remote_name,args.updatedependencies)
|
157
203
|
tFCPS_MergeToMain:AnionBuildPlatform=AnionBuildPlatform(config)
|
158
204
|
return tFCPS_MergeToMain
|
ScriptCollection/Executables.py
CHANGED
@@ -859,6 +859,6 @@ def CreateRelease()->int:
|
|
859
859
|
arguments=f"CreateRelease.py --buildrepositoriesfolder {build_repo_folder} --verbosity {verbosity} --sourcebranch {args.sourcebranch}"
|
860
860
|
if args.updatedependencies:
|
861
861
|
arguments=arguments+" --updatedependencies"
|
862
|
-
sc.run_program("python", arguments, scripts_folder)
|
862
|
+
sc.run_program("python", arguments, scripts_folder,print_live_output=True)
|
863
863
|
|
864
864
|
return 0
|
@@ -17,7 +17,6 @@ class TFCPS_CreateReleaseConfiguration:
|
|
17
17
|
build_repository:str
|
18
18
|
repository:str
|
19
19
|
reference_repository:str
|
20
|
-
reference_repo:str
|
21
20
|
common_remote_name:str
|
22
21
|
build_repo_main_branch_name:str
|
23
22
|
reference_repo_main_branch_name:str
|
@@ -26,7 +25,7 @@ class TFCPS_CreateReleaseConfiguration:
|
|
26
25
|
artifacts_target_folder:str
|
27
26
|
common_remote_url:str
|
28
27
|
|
29
|
-
def __init__(self, current_file: str, product_name: str,branch_to_be_released:str,log_level:LogLevel,additional_arguments_file:str,main_branch:str,stable_branch:str,
|
28
|
+
def __init__(self, current_file: str, product_name: str,branch_to_be_released:str,log_level:LogLevel,additional_arguments_file:str,main_branch:str,stable_branch:str,common_remote_name:str,build_repo_main_branch_name:str,reference_repo_main_branch_name:str,reference_remote_name:str,build_repo_remote_name:str,artifacts_target_folder:str,common_remote_url:str):
|
30
29
|
self.product_name = product_name
|
31
30
|
self.branch_to_be_released=branch_to_be_released
|
32
31
|
self.additional_arguments_file=additional_arguments_file
|
@@ -36,7 +35,6 @@ class TFCPS_CreateReleaseConfiguration:
|
|
36
35
|
self.build_repository=ScriptCollectionCore().search_repository_folder(current_file)
|
37
36
|
self.repository=os.path.join(self.build_repository,"Submodules",product_name)
|
38
37
|
self.reference_repository=os.path.join(self.build_repository,"Submodules",product_name+"Reference")
|
39
|
-
self.reference_repo=reference_repo
|
40
38
|
self.common_remote_name=common_remote_name
|
41
39
|
self.build_repo_main_branch_name=build_repo_main_branch_name
|
42
40
|
self.reference_repo_main_branch_name=reference_repo_main_branch_name
|
@@ -87,8 +85,8 @@ class TFCPS_CreateRelease:
|
|
87
85
|
if main_branch_commit_id == stable_branch_commit_id:
|
88
86
|
self.sc.log.log("Merge to stable-branch will not be done because there are no changed which can be released.")
|
89
87
|
else:
|
90
|
-
self.sc.log.log("Merge to stable-branch...",LogLevel.Information)
|
91
|
-
mergeToStableConfiguration:MergeToStableConfiguration=MergeToStableConfiguration(tfcps_CreateReleaseConfiguration.log_level,tfcps_CreateReleaseConfiguration.main_branch,tfcps_CreateReleaseConfiguration.stable_branch,tfcps_CreateReleaseConfiguration.repository,tfcps_CreateReleaseConfiguration.build_repository,tfcps_CreateReleaseConfiguration.
|
88
|
+
self.sc.log.log("Merge to stable-branch...",LogLevel.Information)
|
89
|
+
mergeToStableConfiguration:MergeToStableConfiguration=MergeToStableConfiguration(tfcps_CreateReleaseConfiguration.log_level,tfcps_CreateReleaseConfiguration.main_branch,tfcps_CreateReleaseConfiguration.stable_branch,tfcps_CreateReleaseConfiguration.repository,tfcps_CreateReleaseConfiguration.build_repository,tfcps_CreateReleaseConfiguration.common_remote_name,tfcps_CreateReleaseConfiguration.build_repo_main_branch_name,tfcps_CreateReleaseConfiguration.reference_repo_main_branch_name,tfcps_CreateReleaseConfiguration.reference_remote_name,tfcps_CreateReleaseConfiguration.build_repo_remote_name,tfcps_CreateReleaseConfiguration.artifacts_target_folder,tfcps_CreateReleaseConfiguration.common_remote_url,tfcps_CreateReleaseConfiguration.additional_arguments_file)
|
92
90
|
tFCPS_MergeToStable:TFCPS_MergeToStable=TFCPS_MergeToStable(mergeToStableConfiguration)
|
93
91
|
tFCPS_MergeToStable.merge_to_stable_branch()
|
94
92
|
|
@@ -80,16 +80,14 @@ class TFCPS_MergeToMain:
|
|
80
80
|
class TFCPS_MergeToMain_CLI:
|
81
81
|
|
82
82
|
@staticmethod
|
83
|
-
def get_with_overwritable_defaults(file:str,
|
83
|
+
def get_with_overwritable_defaults(file:str,default_merge_source_branch:str=None,default_loglevel:LogLevel=None,default_additionalargumentsfile:str=None,default_main_branch:str=None,default_common_remote_name:str=None)->TFCPS_MergeToMain:
|
84
84
|
parser = argparse.ArgumentParser()
|
85
85
|
verbosity_values = ", ".join(f"{lvl.value}={lvl.name}" for lvl in LogLevel)
|
86
|
-
parser.add_argument('-n', '--productname', required=False,default=None)
|
87
86
|
parser.add_argument('-s', '--mergesourcebranch', required=False)
|
88
|
-
parser.add_argument('-
|
89
|
-
parser.add_argument('-
|
90
|
-
parser.add_argument('-
|
91
|
-
parser.add_argument('-
|
92
|
-
parser.add_argument('-v', '--verbosity', required=False, default=3, help=f"Sets the loglevel. Possible values: {verbosity_values}")
|
87
|
+
parser.add_argument('-a', '--additionalargumentsfile', required=False)
|
88
|
+
parser.add_argument('-t', '--mainbranch', required=False)
|
89
|
+
parser.add_argument('-r', '--commonremotename', required=False)
|
90
|
+
parser.add_argument('-v', '--verbosity', required=False, help=f"Sets the loglevel. Possible values: {verbosity_values}")
|
93
91
|
args=parser.parse_args()
|
94
92
|
|
95
93
|
sc:ScriptCollectionCore=ScriptCollectionCore()
|
@@ -97,11 +95,7 @@ class TFCPS_MergeToMain_CLI:
|
|
97
95
|
build_repo=GeneralUtilities.resolve_relative_path("../../..",file)
|
98
96
|
sc.assert_is_git_repository(build_repo)
|
99
97
|
|
100
|
-
|
101
|
-
default_product_name=args.productname
|
102
|
-
if default_product_name is None:
|
103
|
-
default_product_name=os.path.basename(build_repo)[:-len("Build")]
|
104
|
-
GeneralUtilities.assert_not_null(default_product_name,"productname is not set")
|
98
|
+
default_product_name=os.path.basename(build_repo)[:-len("Build")]
|
105
99
|
|
106
100
|
if args.mergesourcebranch is not None:
|
107
101
|
default_merge_source_branch=args.mergesourcebranch#other/next-release
|
@@ -109,7 +103,7 @@ class TFCPS_MergeToMain_CLI:
|
|
109
103
|
|
110
104
|
if args.verbosity is not None:
|
111
105
|
default_loglevel=LogLevel(int( args.verbosity))
|
112
|
-
GeneralUtilities.assert_not_null(
|
106
|
+
GeneralUtilities.assert_not_null(default_loglevel,"verbosity is not set")
|
113
107
|
|
114
108
|
if args.additionalargumentsfile is not None:
|
115
109
|
default_additionalargumentsfile=args.additionalargumentsfile
|
@@ -17,31 +17,27 @@ class MergeToStableConfiguration:
|
|
17
17
|
target_branch:str#stable
|
18
18
|
repository:str
|
19
19
|
build_repo:str
|
20
|
-
reference_repo:str
|
21
20
|
common_remote_name:str
|
22
21
|
build_repo_main_branch_name:str
|
23
22
|
reference_repo_main_branch_name:str
|
24
23
|
reference_remote_name:str
|
25
24
|
build_repo_remote_name:str
|
26
25
|
artifacts_target_folder:str
|
27
|
-
product_name:str
|
28
26
|
common_remote_url:str
|
29
27
|
additional_arguments_file:str
|
30
28
|
|
31
|
-
def __init__(self,loglevel:LogLevel,source_branch:str,target_branch:str,repository:str,build_repo:str,
|
29
|
+
def __init__(self,loglevel:LogLevel,source_branch:str,target_branch:str,repository:str,build_repo:str,common_remote_name:str,build_repo_main_branch_name:str,reference_repo_main_branch_name:str,reference_remote_name:str,build_repo_remote_name:str,artifacts_target_folder:str,common_remote_url:str,additional_arguments_file:str):
|
32
30
|
self.log_level=loglevel
|
33
31
|
self.source_branch=source_branch
|
34
32
|
self.target_branch=target_branch
|
35
33
|
self.repository=repository
|
36
34
|
self.build_repo=build_repo
|
37
|
-
self.reference_repo=reference_repo
|
38
35
|
self.common_remote_name=common_remote_name
|
39
36
|
self.build_repo_main_branch_name=build_repo_main_branch_name
|
40
37
|
self.reference_repo_main_branch_name=reference_repo_main_branch_name
|
41
38
|
self.reference_remote_name=reference_remote_name
|
42
39
|
self.build_repo_remote_name=build_repo_remote_name
|
43
40
|
self.artifacts_target_folder=artifacts_target_folder
|
44
|
-
self.product_name=product_name
|
45
41
|
self.common_remote_url=common_remote_url
|
46
42
|
self.additional_arguments_file=additional_arguments_file
|
47
43
|
|
@@ -60,7 +56,7 @@ class TFCPS_MergeToStable:
|
|
60
56
|
def merge_to_stable_branch(self):
|
61
57
|
self.sc.log.loglevel=self.createRelease_configuration.log_level
|
62
58
|
self.sc.log.log("Merge to stable-branch...")
|
63
|
-
product_name:str=self.createRelease_configuration.
|
59
|
+
product_name:str=os.path.basename(self.createRelease_configuration.repository)
|
64
60
|
|
65
61
|
GeneralUtilities.assert_condition(self.sc.git_get_commit_id(self.createRelease_configuration.repository,self.createRelease_configuration.source_branch)!=self.sc.git_get_commit_id(self.createRelease_configuration.repository,self.createRelease_configuration.target_branch),"Source- and target-branch must not be the same commit.")
|
66
62
|
|
@@ -69,8 +65,9 @@ class TFCPS_MergeToStable:
|
|
69
65
|
self.sc.git_checkout(self.createRelease_configuration.repository, self.createRelease_configuration.source_branch)
|
70
66
|
self.sc.assert_no_uncommitted_changes(self.createRelease_configuration.repository)
|
71
67
|
|
72
|
-
self.
|
73
|
-
self.sc.
|
68
|
+
reference_repo=self.createRelease_configuration.repository+"Reference"
|
69
|
+
self.sc.assert_is_git_repository(reference_repo)
|
70
|
+
self.sc.assert_no_uncommitted_changes(reference_repo)
|
74
71
|
|
75
72
|
self.sc.assert_is_git_repository(self.createRelease_configuration.build_repo)
|
76
73
|
self.sc.assert_no_uncommitted_changes(self.createRelease_configuration.build_repo)
|
@@ -96,7 +93,7 @@ class TFCPS_MergeToStable:
|
|
96
93
|
GeneralUtilities.ensure_directory_exists(target_folder)
|
97
94
|
codeunit_version:str=self.tFCPS_Tools_General.get_version_of_codeunit(os.path.join(self.createRelease_configuration.repository,codeunit,f"{codeunit}.codeunit.xml"))
|
98
95
|
target_file:str=os.path.join(target_folder,f"{codeunit}.v{codeunit_version}.Artifacts.zip")
|
99
|
-
self.sc.
|
96
|
+
self.sc.run_program_argsasarray("tar",[f"-cf",target_file,"-C",source_folder, "."])
|
100
97
|
|
101
98
|
#push artifacts
|
102
99
|
push_script:str=os.path.join( self.createRelease_configuration.build_repo,"Scripts","CreateRelease",f"PushArtifacts.{codeunit}.py")
|
@@ -108,7 +105,7 @@ class TFCPS_MergeToStable:
|
|
108
105
|
|
109
106
|
# update codeunit-reference
|
110
107
|
self.sc.log.log(f"Release artifacts of codeunit {codeunit}...")
|
111
|
-
reference_folder:str=os.path.join(
|
108
|
+
reference_folder:str=os.path.join(reference_repo,"ReferenceContent")
|
112
109
|
repository:str=self.createRelease_configuration.repository
|
113
110
|
project_version:str=self.tFCPS_Tools_General.get_version_of_project(repository)
|
114
111
|
projectname:str=self.createRelease_configuration.product_name
|
@@ -119,33 +116,33 @@ class TFCPS_MergeToStable:
|
|
119
116
|
self.__export_codeunit_reference_content_to_reference_repository("Latest", True, reference_folder, repository, codeunit, projectname, codeunit_version, public_repository_url, main_branch_name)
|
120
117
|
|
121
118
|
# Generate reference
|
122
|
-
self.__generate_entire_reference(projectname, project_version, reference_folder)
|
119
|
+
self.__generate_entire_reference(projectname, project_version, reference_folder,reference_repo)
|
123
120
|
|
124
121
|
self.sc.log.log("Finishing merging to stable...")
|
125
|
-
self.sc.git_commit(
|
122
|
+
self.sc.git_commit(reference_repo,f"Added reference for v{project_version}")
|
126
123
|
|
127
124
|
self.sc.git_merge(self.createRelease_configuration.repository, self.createRelease_configuration.source_branch,self.createRelease_configuration.target_branch, True,True,None,True,True)
|
128
125
|
|
129
126
|
self.sc.assert_no_uncommitted_changes(self.createRelease_configuration.repository)
|
130
|
-
self.sc.assert_no_uncommitted_changes(
|
127
|
+
self.sc.assert_no_uncommitted_changes(reference_repo)
|
131
128
|
self.sc.git_commit(self.createRelease_configuration.build_repo,"Updated submodules")
|
132
129
|
|
133
130
|
self.sc.git_push_with_retry(self.createRelease_configuration.repository,self.createRelease_configuration.common_remote_name,self.createRelease_configuration.source_branch,self.createRelease_configuration.source_branch)
|
134
131
|
self.sc.git_push_with_retry(self.createRelease_configuration.repository,self.createRelease_configuration.common_remote_name,self.createRelease_configuration.target_branch,self.createRelease_configuration.target_branch)
|
135
132
|
self.sc.git_push_with_retry(self.createRelease_configuration.build_repo,self.createRelease_configuration.build_repo_remote_name,self.createRelease_configuration.build_repo_main_branch_name,self.createRelease_configuration.build_repo_main_branch_name)
|
136
|
-
self.sc.git_push_with_retry(
|
133
|
+
self.sc.git_push_with_retry(reference_repo,self.createRelease_configuration.reference_remote_name,self.createRelease_configuration.reference_repo_main_branch_name,self.createRelease_configuration.reference_repo_main_branch_name)
|
137
134
|
|
138
|
-
def __remove_outdated_version(self):
|
135
|
+
def __remove_outdated_version(self,reference_repo:str):
|
139
136
|
now = GeneralUtilities.get_now()
|
140
137
|
for unsupported_version in self.tFCPS_Tools_General.get_unsupported_versions(self.createRelease_configuration.repository, now):
|
141
|
-
unsupported_reference_folder = f"{
|
138
|
+
unsupported_reference_folder = f"{reference_repo}/ReferenceContent/v{unsupported_version[0]}"
|
142
139
|
GeneralUtilities.ensure_directory_does_not_exist(unsupported_reference_folder)
|
143
140
|
|
144
141
|
|
145
142
|
@GeneralUtilities.check_arguments
|
146
|
-
def __generate_entire_reference(self, projectname: str, project_version: str, reference_folder: str) -> None:
|
143
|
+
def __generate_entire_reference(self, projectname: str, project_version: str, reference_folder: str,reference_repo:str) -> None:
|
147
144
|
self.sc.log.log("Remove outdated versions...")
|
148
|
-
self.__remove_outdated_version()
|
145
|
+
self.__remove_outdated_version(reference_repo)
|
149
146
|
self.sc.log.log("Generate reference...")
|
150
147
|
all_available_version_identifier_folders_of_reference: list[str] = list(folder for folder in GeneralUtilities.get_direct_folders_of_folder(reference_folder))
|
151
148
|
all_available_version_identifier_folders_of_reference = sorted(all_available_version_identifier_folders_of_reference, key=cmp_to_key(TFCPS_Tools_General.sort_reference_folder))
|
@@ -280,22 +277,21 @@ class TFCPS_MergeToStable:
|
|
280
277
|
class TFCPS_MergeToStable_CLI:
|
281
278
|
|
282
279
|
@staticmethod
|
283
|
-
def get_with_overwritable_defaults(file:str,
|
280
|
+
def get_with_overwritable_defaults(file:str,default_loglevel:LogLevel=None,default_source_branch:str=None,default_additionalargumentsfile:str=None,default_target_branch:str=None,common_remote_name:str=None,build_repo_main_branch_name:str=None,reference_repo_main_branch_name:str=None,reference_remote_name:str=None,build_repo_remote_name:str=None,artifacts_target_folder:str=None,common_remote_url:str=None)->TFCPS_MergeToMain:
|
284
281
|
parser = argparse.ArgumentParser()
|
285
282
|
verbosity_values = ", ".join(f"{lvl.value}={lvl.name}" for lvl in LogLevel)
|
286
|
-
parser.add_argument('-n', '--productname', required=False,default=None)
|
287
283
|
parser.add_argument('-a', '--additionalargumentsfile', required=False, default=None)
|
288
|
-
parser.add_argument('-s', '--sourcebranch', required=False
|
289
|
-
parser.add_argument('-t', '--targetbranch', required=False
|
284
|
+
parser.add_argument('-s', '--sourcebranch', required=False)#default="main"
|
285
|
+
parser.add_argument('-t', '--targetbranch', required=False)#default="stable"
|
290
286
|
parser.add_argument( '--referencerepo', required=False, default=None)
|
291
287
|
parser.add_argument( '--commonremotename', required=False, default=None)
|
292
|
-
parser.add_argument( '--buildrepomainbranchname', required=False
|
293
|
-
parser.add_argument( '--referencerepomainbranchname', required=False
|
288
|
+
parser.add_argument( '--buildrepomainbranchname', required=False)#default="main"
|
289
|
+
parser.add_argument( '--referencerepomainbranchname', required=False)#default="main"
|
294
290
|
parser.add_argument( '--referenceremotename', required=False, default=None)
|
295
291
|
parser.add_argument( '--buildreporemotename', required=False, default=None)
|
296
292
|
parser.add_argument( '--artifactstargetfolder', required=False, default=None)
|
297
293
|
parser.add_argument( '--commonremoteurl', required=False, default=None)
|
298
|
-
parser.add_argument('-v', '--verbosity', required=False,
|
294
|
+
parser.add_argument('-v', '--verbosity', required=False, help=f"Sets the loglevel. Possible values: {verbosity_values}")
|
299
295
|
args=parser.parse_args()
|
300
296
|
|
301
297
|
sc:ScriptCollectionCore=ScriptCollectionCore()
|
@@ -303,11 +299,7 @@ class TFCPS_MergeToStable_CLI:
|
|
303
299
|
build_repo=GeneralUtilities.resolve_relative_path("../../..",file)
|
304
300
|
sc.assert_is_git_repository(build_repo)
|
305
301
|
|
306
|
-
|
307
|
-
default_product_name=args.productname
|
308
|
-
if default_product_name is None:
|
309
|
-
default_product_name=os.path.basename(build_repo)[:-len("Build")]
|
310
|
-
GeneralUtilities.assert_not_null(default_product_name,"productname is not set")
|
302
|
+
default_product_name=os.path.basename(build_repo)[:-len("Build")]
|
311
303
|
|
312
304
|
if args.verbosity is not None:
|
313
305
|
default_loglevel=LogLevel(int( args.verbosity))
|
@@ -323,12 +315,6 @@ class TFCPS_MergeToStable_CLI:
|
|
323
315
|
if args.targetbranch is not None:
|
324
316
|
default_target_branch=args.targetbranch
|
325
317
|
GeneralUtilities.assert_not_null(default_target_branch,"targetbranch is not set")
|
326
|
-
|
327
|
-
if args.referencerepo is not None:
|
328
|
-
default_reference_repo=args.referencerepo
|
329
|
-
if default_reference_repo is None:
|
330
|
-
default_reference_repo=os.path.join(build_repo,"Submodules",f"{default_product_name}Reference")
|
331
|
-
GeneralUtilities.assert_not_null(default_reference_repo,"referencerepo is not set")
|
332
318
|
|
333
319
|
if args.commonremotename is not None:
|
334
320
|
common_remote_name=args.commonremotename
|
@@ -358,6 +344,6 @@ class TFCPS_MergeToStable_CLI:
|
|
358
344
|
GeneralUtilities.assert_not_null(common_remote_url,"commonremoteurl is not set")
|
359
345
|
|
360
346
|
repository=os.path.join(build_repo,"Submodules",default_product_name)
|
361
|
-
config:MergeToStableConfiguration=MergeToStableConfiguration(default_loglevel,default_source_branch,default_target_branch,repository,build_repo,
|
347
|
+
config:MergeToStableConfiguration=MergeToStableConfiguration(default_loglevel,default_source_branch,default_target_branch,repository,build_repo,common_remote_name,build_repo_main_branch_name,reference_repo_main_branch_name,reference_remote_name,build_repo_remote_name,artifacts_target_folder,common_remote_url,default_additionalargumentsfile)
|
362
348
|
tFCPS_MergeToMain:TFCPS_MergeToStable=TFCPS_MergeToStable(config)
|
363
349
|
return tFCPS_MergeToMain
|
@@ -1087,3 +1087,19 @@ class TFCPS_Tools_General:
|
|
1087
1087
|
GeneralUtilities.ensure_file_exists(file)
|
1088
1088
|
GeneralUtilities.append_line_to_file(file, "Version;SupportBegin;SupportEnd")
|
1089
1089
|
GeneralUtilities.append_line_to_file(file, f"{version_of_product};{GeneralUtilities.datetime_to_string(supported_from)};{GeneralUtilities.datetime_to_string(supported_until)}")
|
1090
|
+
|
1091
|
+
|
1092
|
+
@GeneralUtilities.check_arguments
|
1093
|
+
def add_github_release(self, productname: str, projectversion: str, build_artifacts_folder: str, github_username: str, repository_folder: str, additional_attached_files: list[str]) -> None:
|
1094
|
+
self.__sc.assert_is_git_repository(repository_folder)
|
1095
|
+
self.__sc.log.log(f"Create GitHub-release for {productname}...")
|
1096
|
+
github_repo = f"{github_username}/{productname}"
|
1097
|
+
artifact_files = []
|
1098
|
+
codeunits = self.get_codeunits(repository_folder)
|
1099
|
+
for codeunit in codeunits:
|
1100
|
+
artifact_files.append(self.__sc.find_file_by_extension(f"{build_artifacts_folder}/{productname}/{projectversion}/{codeunit}", "Productive.Artifacts.zip"))
|
1101
|
+
if additional_attached_files is not None:
|
1102
|
+
for additional_attached_file in additional_attached_files:
|
1103
|
+
artifact_files.append(additional_attached_file)
|
1104
|
+
changelog_file = os.path.join(repository_folder, "Other", "Resources", "Changelog", f"v{projectversion}.md")
|
1105
|
+
self.__sc.run_program_argsasarray("gh", ["release", "create", f"v{projectversion}", "--repo", github_repo, "--notes-file", changelog_file, "--title", f"Release v{projectversion}"]+artifact_files)
|
@@ -1,6 +1,6 @@
|
|
1
|
-
ScriptCollection/AnionBuildPlatform.py,sha256=
|
1
|
+
ScriptCollection/AnionBuildPlatform.py,sha256=57bEfg-AKkSzdZ81JyAJZ48dw4nhZioCqGrFMkp_fWk,12501
|
2
2
|
ScriptCollection/CertificateUpdater.py,sha256=GXPxmYaW-ufOqsiP9kUYdtI6eNg1-GzrrCqsZdwW_HY,9199
|
3
|
-
ScriptCollection/Executables.py,sha256=
|
3
|
+
ScriptCollection/Executables.py,sha256=31RgdqQDRBpY955m9NSBms5M15jwHAMQFBBtUwKbSME,41891
|
4
4
|
ScriptCollection/GeneralUtilities.py,sha256=9Xd9aKPj3TkpVtdHXzFMILrRoXAfJCph69XRTstdsBo,49280
|
5
5
|
ScriptCollection/ImageUpdater.py,sha256=qTe3yoqzQJY7LZdXBbjbWvrsSQaeHy1VwmOxaRzU2ig,29305
|
6
6
|
ScriptCollection/ProcessesRunner.py,sha256=3mu4ZxzZleQo0Op6o9EYTCFiJfb6kx5ov2YfZfT89mU,1395
|
@@ -9,18 +9,18 @@ ScriptCollection/ProgramRunnerEpew.py,sha256=TJdDx9zIMSiCaXh8X-ekrMlbXfGtmd0Mmyx
|
|
9
9
|
ScriptCollection/ProgramRunnerMock.py,sha256=uTu-aFle1W_oKjeQEmuPsFPQpvo0kRf2FrRjAPIwT5Y,37
|
10
10
|
ScriptCollection/ProgramRunnerPopen.py,sha256=BPY7-ZMIlqT7JOKz8qlB5c0laF2Js-ijzqk09GxZC48,3821
|
11
11
|
ScriptCollection/SCLog.py,sha256=dxGOI4E9lG5v9jk_LajXCkM5nghliCDV8YB8Ihn160s,4541
|
12
|
-
ScriptCollection/ScriptCollectionCore.py,sha256=
|
12
|
+
ScriptCollection/ScriptCollectionCore.py,sha256=T7qnI3TQjEKhZDIuAk1N9bcWquCaBUyn53MINb88KVE,140598
|
13
13
|
ScriptCollection/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
14
14
|
ScriptCollection/TFCPS/TFCPS_CodeUnitSpecific_Base.py,sha256=Cj89Xhzf5CRSDVH_-0JachQMsPHfjkz8jtRi_BpiGvY,25979
|
15
15
|
ScriptCollection/TFCPS/TFCPS_CodeUnit_BuildCodeUnit.py,sha256=4rYKgTAga11NiDx8YUqz3K_Q4eX_n3kC6lvNdXEa24s,7389
|
16
16
|
ScriptCollection/TFCPS/TFCPS_CodeUnit_BuildCodeUnits.py,sha256=DGaQk85r8P5ANDhga9pEcTiJSRpZrDykfUOFhJR-bYY,5551
|
17
|
-
ScriptCollection/TFCPS/TFCPS_CreateRelease.py,sha256=
|
17
|
+
ScriptCollection/TFCPS/TFCPS_CreateRelease.py,sha256=bcJlfI062Eoq7MOIhun-_iNG7SdO1ZIuC_cylaoLI1s,6332
|
18
18
|
ScriptCollection/TFCPS/TFCPS_Generic.py,sha256=O-0guM_LJCcZmPZJhMgTvXD2RXUJEBWWv6Bt6hDFhvM,1943
|
19
|
-
ScriptCollection/TFCPS/TFCPS_MergeToMain.py,sha256=
|
20
|
-
ScriptCollection/TFCPS/TFCPS_MergeToStable.py,sha256=
|
19
|
+
ScriptCollection/TFCPS/TFCPS_MergeToMain.py,sha256=41g219jaBRZ2VQCrWM4-Trvervrt8b5oATPwIIGNpag,7244
|
20
|
+
ScriptCollection/TFCPS/TFCPS_MergeToStable.py,sha256=MQvfHe2kUzf9c_NiPqTWOWIGuurjLTgOqa5SsTt-ndE,21699
|
21
21
|
ScriptCollection/TFCPS/TFCPS_PreBuildCodeunitsScript.py,sha256=CxdwUklhZVuJGp0vcokoH_KMXFzmlUlZwj77xFYijho,2242
|
22
22
|
ScriptCollection/TFCPS/TFCPS_Tools_Dependencies.py,sha256=o7HI3ki3WWqlAiUsrh3Lky_w6UhYh9hdjYPGOhubQGA,414
|
23
|
-
ScriptCollection/TFCPS/TFCPS_Tools_General.py,sha256=
|
23
|
+
ScriptCollection/TFCPS/TFCPS_Tools_General.py,sha256=PmS034kSaSeL2P_h-6nWi_-RsPmKS08NGk51EfmDeEU,69477
|
24
24
|
ScriptCollection/TFCPS/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
25
25
|
ScriptCollection/TFCPS/Docker/TFCPS_CodeUnitSpecific_Docker.py,sha256=-g8h2gCf9rh0KJXUBeQD5d0qLJgBU3Q8DNZXM1UXC04,5259
|
26
26
|
ScriptCollection/TFCPS/Docker/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -35,8 +35,8 @@ ScriptCollection/TFCPS/NodeJS/TFCPS_CodeUnitSpecific_NodeJS.py,sha256=dnuDlQXThF
|
|
35
35
|
ScriptCollection/TFCPS/NodeJS/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
36
36
|
ScriptCollection/TFCPS/Python/TFCPS_CodeUnitSpecific_Python.py,sha256=q7msAxCb5VIZ-xhFg1MfzUvWomQRKYldqmW42KFhyMU,6868
|
37
37
|
ScriptCollection/TFCPS/Python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
38
|
-
scriptcollection-4.0.
|
39
|
-
scriptcollection-4.0.
|
40
|
-
scriptcollection-4.0.
|
41
|
-
scriptcollection-4.0.
|
42
|
-
scriptcollection-4.0.
|
38
|
+
scriptcollection-4.0.34.dist-info/METADATA,sha256=UV6dfp9wWH4jRxEjV6psN77JBoCFfjRwVpEvQVuD1cs,7688
|
39
|
+
scriptcollection-4.0.34.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
40
|
+
scriptcollection-4.0.34.dist-info/entry_points.txt,sha256=NeU26D6q7d8n2cmKQiOvHK21w1C7D2kxoNRJaKiyZ5w,4295
|
41
|
+
scriptcollection-4.0.34.dist-info/top_level.txt,sha256=hY2hOVH0V0Ce51WB76zKkIWTUNwMUdHo4XDkR2vYVwg,17
|
42
|
+
scriptcollection-4.0.34.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|