Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: utils.py
- Revision:
- 24:25bff2709c20
- Parent:
- 22:9e85236d8716
- Child:
- 29:1210849dba19
--- a/utils.py Sat Jul 16 22:51:17 2016 +0100
+++ b/utils.py Mon Aug 01 09:10:17 2016 +0100
@@ -21,7 +21,7 @@
import math
from os import listdir, remove, makedirs
from shutil import copyfile
-from os.path import isdir, join, exists, split, relpath, splitext
+from os.path import isdir, join, exists, split, relpath, splitext, abspath, commonprefix, normpath
from subprocess import Popen, PIPE, STDOUT, call
import json
from collections import OrderedDict
@@ -167,12 +167,32 @@
class NotSupportedException(Exception):
pass
+class InvalidReleaseTargetException(Exception):
+ pass
+
def split_path(path):
base, file = split(path)
name, ext = splitext(file)
return base, name, ext
+def get_path_depth(path):
+ """ Given a path, return the number of directory levels present.
+ This roughly translates to the number of path separators (os.sep) + 1.
+ Ex. Given "path/to/dir", this would return 3
+ Special cases: "." and "/" return 0
+ """
+ normalized_path = normpath(path)
+ path_depth = 0
+ head, tail = split(normalized_path)
+
+ while(tail and tail != '.'):
+ path_depth += 1
+ head, tail = split(head)
+
+ return path_depth
+
+
def args_error(parser, message):
print "\n\n%s\n\n" % message
parser.print_help()
@@ -307,3 +327,14 @@
append = append.ljust(total_width)
output += append
return output
+
+# fail if argument provided is a parent of the specified directory
+def argparse_dir_not_parent(other):
+ def parse_type(not_parent):
+ abs_other = abspath(other)
+ abs_not_parent = abspath(not_parent)
+ if abs_not_parent == commonprefix([abs_not_parent, abs_other]):
+ raise argparse.ArgumentTypeError("{0} may not be a parent directory of {1}".format(not_parent, other))
+ else:
+ return not_parent
+ return parse_type
