Created
January 10, 2019 12:13
-
-
Save qiugang/7bbe0163b1476b438b0830dcbd4738f2 to your computer and use it in GitHub Desktop.
andres_detect.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf-8 -*- | |
import os | |
import re | |
import sys, getopt | |
pattern = re.compile('R.layout.*\\b') | |
res_result = [] | |
def start_task(pin_name): | |
dir = os.path.join(os.getcwd(), 'src/', pin_name) | |
print("process...") | |
find_res(dir) | |
print(res_result) | |
move_task(pin_name) | |
def find_res(dir): | |
files = os.listdir(dir) | |
for f in files: | |
fc = os.path.join(dir, f) | |
if os.path.isdir(fc): | |
find_res(fc) | |
else: | |
if fc.endswith(".java"): | |
sub_res = match_layout(os.path.join(dir, fc)) | |
for xml_str in sub_res: | |
res_result.append(xml_str) | |
else: | |
pass | |
def match_layout(file_path): | |
res = [] | |
target = open(file_path) | |
for s in target.readlines(): | |
if "R.layout" in s: | |
include_line = pattern.findall(s)[0] | |
if "," in include_line: | |
include_line = include_line.split(',')[0] | |
if "." in include_line: | |
include_line = include_line.split('.')[2] | |
res.append(include_line + ".xml") | |
else: | |
pass | |
return res | |
def move_task(pin_name): | |
if len(res_result) == 0: | |
print("detect no layout res...") | |
return | |
print("target pin name: {name}".format(name = pin_name)) | |
print("start moving...") | |
origin_res_dir = os.path.join(os.getcwd(), 'src/main/res/layout/') | |
target_res_dir = os.path.join(os.getcwd(),'src/', pin_name, 'main/res/layout') | |
if os.path.exists(target_res_dir) == False: | |
os.makedirs(target_res_dir) | |
for layout_xml_name in res_result: | |
try: | |
os.rename(os.path.join(origin_res_dir, layout_xml_name), | |
os.path.join(target_res_dir, layout_xml_name)) | |
except: | |
print("{xml_name} not exist".format(xml_name = layout_xml_name)) | |
def main(argv): | |
dir = '' | |
try: | |
opts, args = getopt.getopt(argv, "p:", ["pin_name"]) | |
except getopt.GetoptError: | |
print 'detect_layout_res.py -p <pin_name>' | |
sys.exit(2) | |
for opt, arg in opts: | |
if opt == '--h': | |
print 'detect_layout_res.py -p <pin_name>' | |
sys.exit() | |
elif opt in ("-p", "--pin_name"): | |
dir = arg | |
if dir == '': | |
print 'detect_layout_res.py -p <pin_name>' | |
else: | |
print(dir) | |
start_task(dir) | |
if __name__ == "__main__": | |
main(sys.argv[1:]) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment