You've already forked M5Stack_Linux_Libs
mirror of
https://github.com/m5stack/M5Stack_Linux_Libs.git
synced 2026-05-20 11:01:38 -07:00
66 lines
1.7 KiB
Python
66 lines
1.7 KiB
Python
#
|
|
# sort components according to priority.conf file
|
|
#
|
|
# @file from https://github.com/Neutree/c_cpp_project_framework
|
|
# @author neucrack
|
|
# @license Apache 2.0
|
|
#
|
|
# @usage: python sort_components.py priority.conf component_dir1 component_dir2 ... component_dir4
|
|
#
|
|
|
|
import sys, os
|
|
|
|
conf_file = sys.argv[1]
|
|
components = sys.argv[2:]
|
|
|
|
if not os.path.exists(conf_file):
|
|
exit(2)
|
|
|
|
try:
|
|
conf = ""
|
|
f = open(conf_file)
|
|
while True:
|
|
line = f.readline()
|
|
if not line:
|
|
break
|
|
line = line.strip()
|
|
if line.startswith("#") or line == "":
|
|
continue
|
|
conf += line +" "
|
|
f.close()
|
|
except Exception as e:
|
|
print("[ERROR] "+str(e))
|
|
exit(1)
|
|
|
|
components_ordered = conf.split()
|
|
dict_order = {}
|
|
for i,component in enumerate(components_ordered):
|
|
dict_order[component] = i
|
|
|
|
final_components = []
|
|
components_not_ordered = []
|
|
for component in components: # all components
|
|
name = os.path.basename(component)
|
|
if name in dict_order.keys(): # have priority in config file
|
|
find_pos = False
|
|
if len(final_components) == 0:
|
|
find_pos = True
|
|
final_components.append(component)
|
|
else:
|
|
for j,tmp in enumerate(final_components):
|
|
tmp_name = os.path.basename(tmp)
|
|
if dict_order[name] < dict_order[tmp_name]:
|
|
find_pos = True
|
|
final_components.insert(j, component)
|
|
break
|
|
if not find_pos:
|
|
final_components.append(component)
|
|
else: # no priority in config file
|
|
components_not_ordered.append(component)
|
|
final_components += components_not_ordered
|
|
|
|
for i in final_components:
|
|
print(i, end = ";")
|
|
|
|
|