import os
import re
import shutil
import subprocess
from argparse import ArgumentParser
# mobileprovision system root
provision_root = os.path.join(os.environ["HOME"], "Library/MobileDevice/Provisioning Profiles")
def get_file_path_list(folder_path, pattern):
    output_list = []
    for root, _, files in os.walk(folder_path):
        for file_name in files:
            if file_name.endswith(pattern):
                output_list.append(os.path.join(root, file_name))
    return output_list     
def get_file_name_list(folder_path, pattern):
    output_list = []
    for root, _, files in os.walk(folder_path):
        for file_name in files:
            if file_name.endswith(pattern):
                output_list.append(file_name)
    return output_list  
def is_file_exists(file_path):
    return os.path.isfile(file_path) or os.path.islink(file_path)
def is_dir_exists(dir_path):
    return os.path.isdir(dir_path)
#提高权限
if is_dir_exists(provision_root):
    os.chmod(provision_root, 0o0777)
else:
    os.makedirs(provision_root, mode=0o777, exist_ok=True)
#核心代码,这一行定义了一个 shellCommod 变量,用于构建一个包含两个 grep 命令的 shell 命令。这个命令会首先查找包含字符串"UUID"的行以及其后一行,然后通过管道将结果传递给第二个 grep 命令。第二个 grep 命令使用正则表达式'[-A-Z0-9]\\{36\\}'来匹配一个36个字符长度的UUID(包含大写字母、数字和破折号)。并将其移动到Library/MobileDevice/Provisioning目录
def install_mobile_provision(mobile_provision_path):
    if not is_file_exists(mobile_provision_path):
        print(f"error:mobileprovision not exists:{mobile_provision_path}")
        return
    print(f">>install mobileprovision from:{mobile_provision_path}")
    shellCommod = "grep UUID -A1 -a " + mobile_provision_path + " | grep -io '[-A-Z0-9]\\{36\\}'"
    uuid = subprocess.check_output(shellCommod, shell=True).strip().decode("ascii")
    print(f">>install uuid={uuid}")
    dest_path = os.path.join(provision_root, f"{uuid}.mobileprovision")
    if not is_file_exists(dest_path):
        shutil.copy(mobile_provision_path, dest_path)
def get_current_installed_mobile_provisions():
    print("===print all mobileprovisions on this machine===")
    for file_name in get_file_name_list(provision_root, ".mobileprovision"):
        print(f">{file_name}")
def install_all_mp(base_folder):
    print("===install *.mobileprovision from P4===")
    for file_path in get_file_path_list(base_folder, ".mobileprovision"):
        install_mobile_provision(file_path)
    get_current_installed_mobile_provisions()
if __name__ == '__main__':
    parser = ArgumentParser()
    parser.add_argument(
        "-path",
        "--search-path",
        help="mobileprovision search path",
        dest="base_folder",
        default="",
    )
    options = parser.parse_args()
    install_all_mp(options.base_folder)
                
					10-16
					 1万+
					1万+
					
				
			 1万+
					1万+
					
				
					05-19
					 2742
					2742
					
				
			 2742
					2742
					
				 
                   
                   
                   
                   
       
           
                 
                 
                 
                 
                 
                
               
                 
                 
                 
                 
                
               
                 
                 扫一扫
扫一扫
                     
              
             
                  
 被折叠的  条评论
		 为什么被折叠?
被折叠的  条评论
		 为什么被折叠?
		 
		  到【灌水乐园】发言
到【灌水乐园】发言                                
		 
		 
    
   
    
   
             
            


 
            