From c83ff2b86c769c7970350b23eba97ef1286e06fe Mon Sep 17 00:00:00 2001 From: liyuanr Date: Sat, 19 Sep 2020 20:12:10 +0800 Subject: [PATCH 1/4] Replace content of_service tool --- tools/replaceService.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100755 tools/replaceService.py diff --git a/tools/replaceService.py b/tools/replaceService.py new file mode 100755 index 00000000..a1ebe9a0 --- /dev/null +++ b/tools/replaceService.py @@ -0,0 +1,40 @@ +#!/usr/bin/env python3 + +# repalce "tar_scm_kernel" with "tar_scm" in _service and insert extract_file into _service +# USAGE:python3 replaceService.py + +import sys +import os +import shutil + +def handle_service(service): + #replace tar_scm_kenel with tar_scm and insert extract_file + file = service + "/" + "_service" + temp_file = file + '.temp' + with open(file, mode='r') as fr, open(temp_file, mode='w') as fw: + origin_line = '' + update_line = '' + insert_lines = ' \n' + ' *.tar\n' + ' */*\n' + ' \n' + lines = fr.readlines() + # some service files have been changed already + # so only files having tar_scm_kernel will be inserted extract_file + lens = len(lines) + for l in lines: + if origin_line in l: + #insert extract_file + lines.insert(lens-2,insert_lines) + fr.close() + for line in lines: + # replace tar_scm_kenel with tar_scm + fw.write(line.replace(origin_line,update_line)) + fw.close() + os.remove(file) + os.rename(temp_file, file) +if __name__ == '__main__': + obs_dir = sys.argv[1] + for dir in sorted(os.listdir(obs_dir)): + package = dir + if package.startswith('.'): + continue + service_dir = obs_dir + "/" + package + handle_service(service_dir) -- Gitee From 5c8b4b72763098c90e4078f91da9c5d85cbd6ff2 Mon Sep 17 00:00:00 2001 From: liyuanr Date: Mon, 21 Sep 2020 16:53:17 +0800 Subject: [PATCH 2/4] fix bugs of replaceService.py --- tools/replaceService.py | 75 ++++++++++++++++++++++++++++++++--------- 1 file changed, 60 insertions(+), 15 deletions(-) diff --git a/tools/replaceService.py b/tools/replaceService.py index a1ebe9a0..1c3438dc 100755 --- a/tools/replaceService.py +++ b/tools/replaceService.py @@ -1,40 +1,85 @@ #!/usr/bin/env python3 # repalce "tar_scm_kernel" with "tar_scm" in _service and insert extract_file into _service -# USAGE:python3 replaceService.py +# USAGE:python3 replaceService.py or python3 replaceService.py +# if you want to save the names of packages which do not have _service files or do not use tar_scm_kernel +# you can use python3 replaceService.py +# is the path you define to save the packages names +# if not you can use python3 replaceService.py +# is the path of your OBS project import sys import os import shutil -def handle_service(service): - #replace tar_scm_kenel with tar_scm and insert extract_file +def handle_service(service,save): file = service + "/" + "_service" - temp_file = file + '.temp' + temp_file = file + ".temp" + + if(not os.path.exists(file)): + if (save != ""): + is_exist = save_not_exist_packages(service,save) + return + else: + lens_origin,lens_insert = replace_service(file,temp_file) + if (save != ""): + save_not_replace_packages(lens_origin,lens_insert,service,save) + os.remove(file) + os.rename(temp_file, file) + +def save_not_exist_packages(service,save): + """save the names of packages which do not have the _service file""" + not_exist_file = save + "/not_exist_file" + print("not exist:" + service) + with open(not_exist_file, mode='a+') as fw: + fw.write(service+"\n") + fw.close() + +def save_not_replace_packages(lens_origin,lens_insert,service,save): + """"save the names of packages which do not use tar_scm_kernel or have been replaced """ + not_change_file = save + "/not_change_file" + with open(not_change_file, mode='a+') as fw: + if (lens_origin == lens_insert): + print("not change:" + service) + fw.write(service+"\n") + fw.close() + +def replace_service(file,temp_file): + """replace tar_scm_kenel to tar_scm and insert extract_file""" with open(file, mode='r') as fr, open(temp_file, mode='w') as fw: origin_line = '' update_line = '' + #hit_line = '' insert_lines = ' \n' + ' *.tar\n' + ' */*\n' + ' \n' lines = fr.readlines() - # some service files have been changed already - # so only files having tar_scm_kernel will be inserted extract_file - lens = len(lines) + lens_origin = len(lines) + #print(lens_origin) + """ + some service files have been replacesd already or do not use tar_scm_kernel + so only files having tar_scm_kernel will be inserted extract_file + """ for l in lines: if origin_line in l: - #insert extract_file - lines.insert(lens-2,insert_lines) + #print(service+" changes and inserts extract file") + lines.insert(lens_origin-2,insert_lines) + lens_insert = len(lines) + #print(lens_insert) fr.close() for line in lines: - # replace tar_scm_kenel with tar_scm fw.write(line.replace(origin_line,update_line)) fw.close() - os.remove(file) - os.rename(temp_file, file) + return lens_origin,lens_insert + if __name__ == '__main__': obs_dir = sys.argv[1] - for dir in sorted(os.listdir(obs_dir)): - package = dir + if (len(sys.argv)>2): + save_dir = sys.argv[2] + else: + save_dir = "" + for package in sorted(os.listdir(obs_dir)): + #print(dir) if package.startswith('.'): continue service_dir = obs_dir + "/" + package - handle_service(service_dir) + #print(service_dir) + handle_service(service_dir,save_dir) -- Gitee From fb256e335d22fe35311d3ca69c5fbb8430b1a487 Mon Sep 17 00:00:00 2001 From: liyuanr Date: Mon, 21 Sep 2020 17:03:11 +0800 Subject: [PATCH 3/4] fix codesmell --- tools/replaceService.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/tools/replaceService.py b/tools/replaceService.py index 1c3438dc..08d53972 100755 --- a/tools/replaceService.py +++ b/tools/replaceService.py @@ -18,7 +18,7 @@ def handle_service(service,save): if(not os.path.exists(file)): if (save != ""): - is_exist = save_not_exist_packages(service,save) + save_not_exist_packages(service,save) return else: lens_origin,lens_insert = replace_service(file,temp_file) @@ -54,10 +54,8 @@ def replace_service(file,temp_file): lines = fr.readlines() lens_origin = len(lines) #print(lens_origin) - """ - some service files have been replacesd already or do not use tar_scm_kernel - so only files having tar_scm_kernel will be inserted extract_file - """ + """some service files have been replacesd already or do not use tar_scm_kernel""" + """so only files having tar_scm_kernel will be inserted extract_file""" for l in lines: if origin_line in l: #print(service+" changes and inserts extract file") -- Gitee From 8d6224196f9bfdc85f53acf34d4dbbf048470751 Mon Sep 17 00:00:00 2001 From: liyuanr Date: Mon, 21 Sep 2020 17:15:56 +0800 Subject: [PATCH 4/4] fix codesmell --- tools/replaceService.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/replaceService.py b/tools/replaceService.py index 08d53972..a6dc5e84 100755 --- a/tools/replaceService.py +++ b/tools/replaceService.py @@ -54,8 +54,8 @@ def replace_service(file,temp_file): lines = fr.readlines() lens_origin = len(lines) #print(lens_origin) - """some service files have been replacesd already or do not use tar_scm_kernel""" - """so only files having tar_scm_kernel will be inserted extract_file""" + #some service files have been replacesd already or do not use tar_scm_kernel + #so only files having tar_scm_kernel will be inserted extract_file for l in lines: if origin_line in l: #print(service+" changes and inserts extract file") -- Gitee