22from typing import Union
33from datetime import datetime
44import sys
5+ import json
6+
7+ kits_root = r"\\isis\inst$\kits$\CompGroup\ICP"
58
69def format_build_num_without_dash (build_num ):
710 return f"BUILD{ build_num } "
811
912def format_build_num_with_dash (build_num ):
1013 return f"BUILD-{ build_num } "
1114
12- kits_root = r"\\isis\inst$\kits$\CompGroup\ICP"
13- epics_builds = ["EPICS_CLEAN_win10_x64" , "EPICS_CLEAN_win7_x64" , "EPICS_win7_x64" , "EPICS_CLEAN_win10_x86" , "EPICS_STATIC_CLEAN_win7_x64" ]
14- epics_build_dirs = [(f"EPICS\\ { build } " , format_build_num_with_dash ) for build in epics_builds ]
15- build_dirs = [("Client_E4" , format_build_num_without_dash ), ("genie_python_3" , format_build_num_with_dash )] + epics_build_dirs
16-
1715def get_latest_build (dir , directory_formatter ) -> Union [None , str ]:
1816 latest_build = None
1917 with open (os .path .join (dir , "LATEST_BUILD.txt" )) as latest_build_file :
@@ -36,37 +34,53 @@ def modified_in_last_x_days(dir, x_days):
3634 timedelta_since_last_modification = datetime_now - datetime_of_last_modification
3735 return timedelta_since_last_modification .days < x_days
3836
39- def was_modified_recently (latest_build ):
40- x_days = 5
37+ def was_modified_recently (latest_build , num_days ):
4138 last_modified_datetime = get_formatted_last_modified_datetime (latest_build )
42- modified_recently = modified_in_last_x_days (latest_build , x_days )
39+ modified_recently = modified_in_last_x_days (latest_build , num_days )
4340 if modified_recently :
44- print (f"SUCCESS: { latest_build } has been modified in the last { x_days } days. Last modified: { last_modified_datetime } " )
41+ print (f"SUCCESS: { latest_build } has been modified in the last { num_days } days. Last modified: { last_modified_datetime } " )
4542 else :
46- print (f"WARNING: { latest_build } modified longer than { x_days } ago. Last modified: { last_modified_datetime } " )
43+ print (f"WARNING: { latest_build } modified longer than { num_days } ago. Last modified: { last_modified_datetime } " )
4744 return modified_recently
4845
49- def check_build_dir (build_dir , directory_formatter ):
46+ def check_build_dir (build_dir , num_days , directory_formatter ):
5047 latest_build = get_latest_build (build_dir , directory_formatter )
5148 modified_recently = False
5249 if latest_build is None :
5350 print (f"WARNING: Could not get latest build dir from { build_dir } " )
5451 else :
55- modified_recently = was_modified_recently (latest_build )
52+ modified_recently = was_modified_recently (latest_build , num_days )
5653 return modified_recently
5754
5855def check_build_dirs (build_dirs ):
5956 build_dirs_not_modified_recently = []
6057 for build_dir in build_dirs :
6158 directory = build_dir [0 ]
62- directory_formatter = build_dir [1 ]
59+ stale_days_limit = int (build_dir [1 ])
60+ directory_formatter = build_dir [2 ]
6361 build_dir_full_path = os .path .join (kits_root , directory )
64- modified_recently = check_build_dir (build_dir_full_path , directory_formatter )
62+ modified_recently = check_build_dir (build_dir_full_path , stale_days_limit , directory_formatter )
6563 if not modified_recently :
6664 build_dirs_not_modified_recently .append (build_dir_full_path )
6765 return build_dirs_not_modified_recently
6866
6967if __name__ == "__main__" :
68+ builds_to_check = os .getenv ("BUILDS_TO_CHECK" )
69+ if builds_to_check is None :
70+ print (f"ERROR: BUILDS_TO_CHECK enviroment variable not set" )
71+ sys .exit (1 )
72+ try :
73+ builds_by_stale_times = json .loads (builds_to_check )
74+ except ValueError as e :
75+ print (f"ERROR: parameter is not valid JSON.\n Parameter:{ builds_to_check } \n Specific Error: { e .args } " )
76+ sys .exit (1 )
77+ build_dirs = []
78+ for time , builds_by_stale_time in builds_by_stale_times .items ():
79+ for build in builds_by_stale_time :
80+ directory_formatter = format_build_num_with_dash
81+ if build == "Client_E4" :
82+ directory_formatter = format_build_num_without_dash
83+ build_dirs .append ((build ,time ,directory_formatter ))
7084 build_dirs_not_modified_recently = check_build_dirs (build_dirs )
7185 if build_dirs_not_modified_recently :
7286 sys .exit (1 )
0 commit comments