ums.utils.functions

 1import os
 2
 3from typing import List, Callable
 4
 5from ums.utils.const import SHARE_PATH
 6
 7def list_path(path:str) -> List[str]:
 8	if os.path.isdir(path):
 9		items = []
10		for item in os.listdir(path):
11			full = os.path.join(path, item)
12			if os.path.isdir(full):
13				items.extend(list_path(full))
14			elif os.path.isfile(full):
15				items.append(full)
16		return items
17	else:
18		return []
19	
20def list_shared(filter:Callable=lambda p,n,e: True) -> List[str]:
21	files = []
22	for f in list_path(SHARE_PATH):
23		r = f[len(SHARE_PATH)+1:]
24
25		if r[0] == '.' or '/.' in r:
26			# hidden files
27			continue
28		
29		if '/' in r and '.' in r:
30			path, name, ending = r[:r.rfind('/')], r[r.rfind('/')+1:r.rfind('.')], r[r.rfind('.')+1:]
31		elif '/' in r:
32			path, name, ending = r[:r.rfind('/')], r[r.rfind('/')+1:], ""
33		elif '.' in r:
34			path, name, ending = "", r[:r.rfind('.')], r[r.rfind('.')+1:]
35		else:
36			path, name, ending = "", r, ""
37
38		if filter(path, name, ending):
39			files.append(r)
40	return files
41
42def list_shared_data():
43	return list_shared(lambda p,n,e: e != "json")
44
45def list_shared_schema():
46	return list_shared(lambda p,n,e: e == "json")
def list_path(path: str) -> List[str]:
 8def list_path(path:str) -> List[str]:
 9	if os.path.isdir(path):
10		items = []
11		for item in os.listdir(path):
12			full = os.path.join(path, item)
13			if os.path.isdir(full):
14				items.extend(list_path(full))
15			elif os.path.isfile(full):
16				items.append(full)
17		return items
18	else:
19		return []
def list_shared(filter: Callable = <function <lambda>>) -> List[str]:
21def list_shared(filter:Callable=lambda p,n,e: True) -> List[str]:
22	files = []
23	for f in list_path(SHARE_PATH):
24		r = f[len(SHARE_PATH)+1:]
25
26		if r[0] == '.' or '/.' in r:
27			# hidden files
28			continue
29		
30		if '/' in r and '.' in r:
31			path, name, ending = r[:r.rfind('/')], r[r.rfind('/')+1:r.rfind('.')], r[r.rfind('.')+1:]
32		elif '/' in r:
33			path, name, ending = r[:r.rfind('/')], r[r.rfind('/')+1:], ""
34		elif '.' in r:
35			path, name, ending = "", r[:r.rfind('.')], r[r.rfind('.')+1:]
36		else:
37			path, name, ending = "", r, ""
38
39		if filter(path, name, ending):
40			files.append(r)
41	return files
def list_shared_data():
43def list_shared_data():
44	return list_shared(lambda p,n,e: e != "json")
def list_shared_schema():
46def list_shared_schema():
47	return list_shared(lambda p,n,e: e == "json")