aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2019-11-24 19:39:13 -0500
committerXavier Claessens <xclaesse@gmail.com>2019-11-25 14:55:19 -0500
commita6f7a1d8c43b26a2607022e41ee3f1b8fe98e8d6 (patch)
tree40fa831a0903a54571cd266105eca3f1cd97ca8c
parent696358957617dff59f40d5ff7befa9924982578c (diff)
downloadmeson-a6f7a1d8c43b26a2607022e41ee3f1b8fe98e8d6.zip
meson-a6f7a1d8c43b26a2607022e41ee3f1b8fe98e8d6.tar.gz
meson-a6f7a1d8c43b26a2607022e41ee3f1b8fe98e8d6.tar.bz2
fs: Add parent() and name() methods
-rw-r--r--docs/markdown/Fs-module.md10
-rw-r--r--mesonbuild/modules/fs.py17
-rw-r--r--test cases/common/227 fs module/meson.build3
3 files changed, 29 insertions, 1 deletions
diff --git a/docs/markdown/Fs-module.md b/docs/markdown/Fs-module.md
index 45cb589..3569b50 100644
--- a/docs/markdown/Fs-module.md
+++ b/docs/markdown/Fs-module.md
@@ -68,6 +68,8 @@ fs.samefile(x, z) # true
## Filename modification
+The files need not actually exist yet for this method, as it's just string manipulation.
+
### replace_suffix
The `replace_suffix` method is a *string manipulation* convenient for filename modifications.
@@ -101,4 +103,10 @@ original = '/opt/foo.dll.a'
new = fs.replace_suffix(original, '') # /opt/foo.dll
```
-The files need not actually exist yet for this method, as it's just string manipulation. \ No newline at end of file
+### parent
+
+Returns the parent directory (i.e. dirname).
+
+### name
+
+Returns the last component of the path (i.e. basename).
diff --git a/mesonbuild/modules/fs.py b/mesonbuild/modules/fs.py
index 86861ae..6e1f5f7 100644
--- a/mesonbuild/modules/fs.py
+++ b/mesonbuild/modules/fs.py
@@ -118,6 +118,23 @@ class FSModule(ExtensionModule):
new = original.with_suffix(args[1])
return ModuleReturnValue(str(new), [])
+ @stringArgs
+ @noKwargs
+ def parent(self, state: 'ModuleState', args: typing.Sequence[str], kwargs: dict) -> ModuleReturnValue:
+ if len(args) != 1:
+ MesonException('method takes exactly one argument.')
+ original = PurePath(args[0])
+ new = original.parent
+ return ModuleReturnValue(str(new), [])
+
+ @stringArgs
+ @noKwargs
+ def name(self, state: 'ModuleState', args: typing.Sequence[str], kwargs: dict) -> ModuleReturnValue:
+ if len(args) != 1:
+ MesonException('method takes exactly one argument.')
+ original = PurePath(args[0])
+ new = original.name
+ return ModuleReturnValue(str(new), [])
def initialize(*args, **kwargs) -> FSModule:
return FSModule(*args, **kwargs)
diff --git a/test cases/common/227 fs module/meson.build b/test cases/common/227 fs module/meson.build
index 3c452d0..131dcf3 100644
--- a/test cases/common/227 fs module/meson.build
+++ b/test cases/common/227 fs module/meson.build
@@ -69,4 +69,7 @@ if not is_windows and build_machine.system() != 'cygwin'
assert(fs.samefile('a_symlink', 'meson.build'), 'symlink samefile fail')
endif
+assert(fs.parent('foo/bar') == 'foo', 'failed to get dirname')
+assert(fs.name('foo/bar') == 'bar', 'failed to get basename')
+
subdir('subdir')