123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- # -*- coding:utf-8 -*-
- import os
- import re # 正则表达式;
- import sys
- import time
- import datetime
- import shutil
- from ssat_sdk.basessh2 import baseSSH2
- cts_ssh2 = baseSSH2()
- def Init(host, user, pwd):
- cts_ssh2.init_ssh2(user, pwd, host)
- def get_props(path, prefix):
- cmd = "grep -rn 'ro.product.model\|ro.product.brand\|ro.product.name\|ro.build.flavor\|ro.build.date\|ro.build.fingerprint\|ro.build.date.utc\|ro.build.description\|ro.build.version.incremental' %s*/build.prop" % path
- bolean, data = cts_ssh2.execute_cmd(cmd)
- # 按换行分组;
- props = data.split('\n')
- # 正则表达式;
- p = re.compile(r"(\w*)_(.*)_(\w*)/build.prop:(\d+):(.*)=(.*)", re.DOTALL)
- ps = re.compile(r"(\d+):(.*)=(.*)", re.DOTALL) # 短正则;
- # list
- brand_props = {}
- for prop in props:
- # 减去多余字符串;
- print u"完整属性:",prop
- prop = prop.replace(path + prefix, "")
-
- if prop.__len__() == 0:
- continue
-
- prop_group = {}
- # 版本号_品牌名_日期/build.prop:行号:属性=值
- mo = p.search(prop)
- # 如果目录下只有一个品牌;
- if mo is None:
- print u"长正则失败,使用短正则(目录只有一文件夹):", prop
- mo = ps.search(prop)
- # 统一命名为none
- prop_group['brand'] = 'none'
- prop_group['version'] = 'none'
- prop_group['date'] = 'none'
- prop_group['property'] = {'name':mo.group(2), 'value':mo.group(3)}
- if prop_group['property']['value'].find("test-keys"):
- prop_group['property']['value'] = prop_group['property']['value'].replace("test-keys", "release-keys")
- # 字典数组;
- if 'none' in brand_props:
- brand_props['none']['property'].append(prop_group['property'])
- else:
- brand_props['none'] = {}
- brand_props['none']['property'] = []
- brand_props['none']['property'].append(prop_group['property'])
- continue
- prop_group['brand'] = mo.group(2)
- prop_group['version'] = mo.group(1)
- prop_group['date'] = mo.group(3)
- prop_group['property'] = {'name':mo.group(5), 'value':mo.group(6)}
- if prop_group['property']['value'].find("test-keys"):
- prop_group['property']['value'] = prop_group['property']['value'].replace("test-keys", "release-keys")
- # 字典数组;
- if mo.group(2) in brand_props:
- brand_props[mo.group(2)]['property'].append(prop_group['property'])
- else:
- brand_props[mo.group(2)] = {}
- brand_props[mo.group(2)]['property'] = []
- brand_props[mo.group(2)]['property'].append(prop_group['property'])
- # 替换none;
- if 'none' in brand_props:
- for item in brand_props['none']['property']:
- if item['name'] == 'ro.product.brand':
- brand_props[item['value']] = brand_props['none']
- del brand_props['none']
- break
- return brand_props
- def save_props(brand_props, save_path):
- # 如果保存路径不存在,创建;
- if not os.path.exists(save_path):
- os.makedirs(save_path)
-
- # 遍历字典;
- prop_file = save_path
- for brand in brand_props:
- prop_file = "%s\\%s.prop" % (save_path, brand.lower())
- print u"prop文件:",prop_file
- with open(prop_file, 'ab+') as f:
- for prop in brand_props[brand]['property']:
- line = "%s=%s\n" % (prop['name'], prop['value'])
- f.write(line)
- if __name__ == "__main__":
- print u"build-prop"
- Init("10.118.1.89", "your name", "your password")
- if 1: # 41目录
- prefix = "V8-T841T01-LF1V"
- save_path = r"F:\Q3-buildprop\41"
- if os.path.exists(save_path):
- shutil.rmtree(save_path)
- brand_props = get_props(r"/home/ftpdata/SoftwareRelease/TEST/RT2841/CTS认证/RT2841P送测资料/SPL20200705/Approved/", prefix)
- save_props(brand_props, save_path)
- brand_props = get_props(r"/home/ftpdata/SoftwareRelease/TEST/RT2841/CTS认证/RT2841P送测资料/SPL20200705/WITH_HBBTV/Approved/", prefix)
- save_props(brand_props, save_path)
- if 1: # 51目录
- prefix = "V8-T851T01-LF1V"
- save_path = r"F:\Q3-buildprop\51"
- if os.path.exists(save_path):
- shutil.rmtree(save_path)
- brand_props = get_props(r"/home/ftpdata/SoftwareRelease/TEST/RT2851/CTS认证/RT2851P送测资料/SPL20200705/Approved/", prefix)
- save_props(brand_props, save_path)
- brand_props = get_props(r"/home/ftpdata/SoftwareRelease/TEST/RT2851/CTS认证/RT2851P送测资料/SPL20200705/WITH_HBBTV/Approved/", prefix)
- save_props(brand_props, save_path)
|