Move "match_src_files" to FS module

This commit is contained in:
Ivan Kravets committed 2019-08-12 20:32:26 +03:00
1 parent 6a90388649
commit 04ebdf428b
4 files changed
+53 -48

No files matched your search

+42 -1
View File
@@ -14,14 +14,16 @@
import json
import os
import re
import shutil
import stat
import sys
from glob import glob
import click
from platformio import exception
from platformio.compat import get_file_contents
from platformio.compat import get_file_contents, glob_escape
class cd(object):
@@ -105,6 +107,45 @@ def ensure_udev_rules():
return True
def path_endswith_ext(path, extensions):
if not isinstance(extensions, list):
extensions = [extensions]
for ext in extensions:
if path.endswith("." + ext):
return True
return False
def match_src_files(src_dir, src_filter=None, src_exts=None):
def _append_build_item(items, item, src_dir):
if not src_exts or path_endswith_ext(item, src_exts):
items.add(item.replace(src_dir + os.sep, ""))
src_filter = src_filter or ""
if isinstance(src_filter, (list, tuple)):
src_filter = " ".join(src_filter)
matches = set()
# correct fs directory separator
src_filter = src_filter.replace("/", os.sep).replace("\\", os.sep)
for (action, pattern) in re.findall(r"(\+|\-)<([^>]+)>", src_filter):
items = set()
for item in glob(os.path.join(glob_escape(src_dir), pattern)):
if os.path.isdir(item):
for root, _, files in os.walk(item, followlinks=True):
for f in files:
_append_build_item(items, os.path.join(root, f),
src_dir)
else:
_append_build_item(items, item, src_dir)
if action == "+":
matches |= items
else:
matches -= items
return sorted(list(matches))
def rmtree(path):
def _onerror(_, name, __):