craft_parts.utils.file_utils module¶
File-related utilities.
- class craft_parts.utils.file_utils.NonBlockingRWFifo(path)[source]¶
Bases:
object
A non-blocking FIFO for reading and writing.
- Parameters:
path (
str
)
- property path: str¶
Return the path to the FIFO file.
- craft_parts.utils.file_utils.calculate_hash(filename, *, algorithm)[source]¶
Calculate the hash of the given file.
- Parameters:
filename (
Path
) – The path to the file to digest.algorithm (
str
) – The algorithm to use, as defined byhashlib
.
- Return type:
str
- Returns:
The file hash.
- Raises:
ValueError – If the algorithm is unsupported.
- craft_parts.utils.file_utils.copy(source, destination, *, follow_symlinks=False, permissions=None)[source]¶
Copy source and destination files.
This function overwrites the destination if it already exists, and also tries to copy ownership information.
- Parameters:
source (
str
) – The source to be copied to destination.destination (
str
) – Where to put the copy.follow_symlinks (
bool
) – Whether or not symlinks should be followed.permissions (
Optional
[list
[Permissions
]]) – The permissions definitions that should be applied to the new file.
- Raises:
CopyFileNotFound – If source doesn’t exist.
- Return type:
None
- craft_parts.utils.file_utils.create_similar_directory(source, destination, permissions=None)[source]¶
Create a directory with the same permission bits and owner information.
- Parameters:
source (
str
) – Directory from which to copy name, permission bits, and owner information.destination (
str
) – Directory to create and to which thesource
information will be copied.permissions (
Optional
[list
[Permissions
]]) – The permission definitions to apply to the new directory. If omitted, the new directory will have the same permissions and ownership ofsource
.
- Return type:
None
- craft_parts.utils.file_utils.link(source, destination, *, follow_symlinks=False)[source]¶
Hard-link source and destination files.
- Parameters:
source (
str
) – The source to which destination will be linked.destination (
str
) – The destination to be linked to source.follow_symlinks (
bool
) – Whether or not symlinks should be followed.
- Raises:
CopyFileNotFound – If source doesn’t exist.
- Return type:
None
- craft_parts.utils.file_utils.link_or_copy(source, destination, *, follow_symlinks=False, permissions=None)[source]¶
Hard-link source and destination files. Copy if it fails to link.
Hard-linking may fail (e.g. a cross-device link, or permission denied), so as a backup plan we just copy it. Note that we always copy the file if its
permissions
will change.- Parameters:
source (
str
) – The source to which destination will be linked.destination (
str
) – The destination to be linked to source.follow_symlinks (
bool
) – Whether or not symlinks should be followed.permissions (
Optional
[list
[Permissions
]]) – The permissions definitions that should be applied to the new file.
- Return type:
None
- craft_parts.utils.file_utils.link_or_copy_tree(source_tree, destination_tree, ignore=None, copy_function=<function link_or_copy>)[source]¶
Copy a source tree into a destination, hard-linking if possible.
- Parameters:
source_tree (
str
) – Source directory to be copied.destination_tree (
str
) – Destination directory. If this directory already exists, the files in source_tree will take precedence.ignore (
Optional
[Callable
[[str
,list
[str
]],list
[str
]]]) – If given, called with two params, source dir and dir contents, for every dir copied. Should return list of contents to NOT copy.copy_function (
Callable
[...
,None
]) – Callable that actually copies.
- Return type:
None