diff --git a/docs/tar.md b/docs/tar.md index cc3a368..6f225d2 100644 --- a/docs/tar.md +++ b/docs/tar.md @@ -95,7 +95,7 @@ Rule that executes BSD `tar`. Most users should use the [`tar`](#tar) macro, rat ## mtree_mutate
-mtree_mutate(name, mtree, strip_prefix, mtime, owner, ownername, awk_script, kwargs)
+mtree_mutate(name, mtree, strip_prefix, package_dir, mtime, owner, ownername, awk_script, kwargs)
 
Modify metadata in an mtree file. @@ -108,6 +108,7 @@ Modify metadata in an mtree file. | name | name of the target, output will be [name].mtree. | none | | mtree | input mtree file, typically created by mtree_spec. | none | | strip_prefix | prefix to remove from all paths in the tar. Files and directories not under this prefix are dropped. | None | +| package_dir | directory prefix to add to all paths in the tar. | None | | mtime | new modification time for all entries. | None | | owner | new uid for all entries. | None | | ownername | new uname for all entries. | None | diff --git a/lib/tar.bzl b/lib/tar.bzl index 30ad7ae..ad8e508 100644 --- a/lib/tar.bzl +++ b/lib/tar.bzl @@ -130,6 +130,7 @@ def mtree_mutate( name, mtree, strip_prefix = None, + package_dir = None, mtime = None, owner = None, ownername = None, @@ -141,6 +142,7 @@ def mtree_mutate( name: name of the target, output will be `[name].mtree`. mtree: input mtree file, typically created by `mtree_spec`. strip_prefix: prefix to remove from all paths in the tar. Files and directories not under this prefix are dropped. + package_dir: directory prefix to add to all paths in the tar. mtime: new modification time for all entries. owner: new uid for all entries. ownername: new uname for all entries. @@ -150,6 +152,8 @@ def mtree_mutate( vars = [] if strip_prefix: vars.append("-v strip_prefix='{}'".format(strip_prefix)) + if package_dir: + vars.append("-v package_dir='{}'".format(package_dir)) if mtime: vars.append("-v mtime='{}'".format(mtime)) if owner: diff --git a/lib/tests/tar/BUILD.bazel b/lib/tests/tar/BUILD.bazel index 1ec8976..68002d7 100644 --- a/lib/tests/tar/BUILD.bazel +++ b/lib/tests/tar/BUILD.bazel @@ -337,6 +337,7 @@ mtree_mutate( name = "modified1", mtree = "source-casync.mtree", strip_prefix = "xattr", + package_dir = "test", ) diff_test( diff --git a/lib/tests/tar/expected1.mtree b/lib/tests/tar/expected1.mtree index 2ee0ab4..76dfdfe 100644 --- a/lib/tests/tar/expected1.mtree +++ b/lib/tests/tar/expected1.mtree @@ -1,4 +1,4 @@ -xattr.go type=file mode=0664 size=984 uid=1000 gid=1000 uname=vbatts gname=vbatts time=1512774394.470900767 sha512256digest=a2700b603df30c3b0a91bdcf9045e64aea42f62647b0128ea154f51a0c48991e -xattr_test.go type=file mode=0664 size=859 uid=1000 gid=1000 uname=vbatts gname=vbatts time=1512774394.470900767 sha512256digest=91294ea554801b75f6a9e33c268807c9620b531eb813ea24512dd4eeaf0592e4 -xattr_unsupported.go type=file mode=0664 size=509 uid=1000 gid=1000 uname=vbatts gname=vbatts time=1512774394.470900767 sha512256digest=81ced06a1cdf88c4936d10bbf8d46edc2d42dc26efeed3691ddbeeb469865f8a -xattr_unsupported_test.go type=file mode=0664 size=877 uid=1000 gid=1000 uname=vbatts gname=vbatts time=1512774394.470900767 sha512256digest=46605a03a985c7a3a4ab1a488f81382db4865f77b90b6a2b32693af39a8e1fba +test/xattr.go type=file mode=0664 size=984 uid=1000 gid=1000 uname=vbatts gname=vbatts time=1512774394.470900767 sha512256digest=a2700b603df30c3b0a91bdcf9045e64aea42f62647b0128ea154f51a0c48991e +test/xattr_test.go type=file mode=0664 size=859 uid=1000 gid=1000 uname=vbatts gname=vbatts time=1512774394.470900767 sha512256digest=91294ea554801b75f6a9e33c268807c9620b531eb813ea24512dd4eeaf0592e4 +test/xattr_unsupported.go type=file mode=0664 size=509 uid=1000 gid=1000 uname=vbatts gname=vbatts time=1512774394.470900767 sha512256digest=81ced06a1cdf88c4936d10bbf8d46edc2d42dc26efeed3691ddbeeb469865f8a +test/xattr_unsupported_test.go type=file mode=0664 size=877 uid=1000 gid=1000 uname=vbatts gname=vbatts time=1512774394.470900767 sha512256digest=46605a03a985c7a3a4ab1a488f81382db4865f77b90b6a2b32693af39a8e1fba