def extension(self) -> str:
return {
- OutputFormat.confext: ".raw",
- OutputFormat.cpio: ".cpio",
- OutputFormat.disk: ".raw",
- OutputFormat.esp: ".raw",
- OutputFormat.portable: ".raw",
- OutputFormat.sysext: ".raw",
- OutputFormat.tar: ".tar",
- OutputFormat.uki: ".efi",
- OutputFormat.addon: ".efi",
+ OutputFormat.confext: "raw",
+ OutputFormat.cpio: "cpio",
+ OutputFormat.disk: "raw",
+ OutputFormat.esp: "raw",
+ OutputFormat.portable: "raw",
+ OutputFormat.sysext: "raw",
+ OutputFormat.tar: "tar",
+ OutputFormat.uki: "efi",
+ OutputFormat.addon: "efi",
}.get(self, "") # fmt: skip
def use_outer_compression(self) -> bool:
return self != Compression.none
def extension(self) -> str:
- return {Compression.zstd: ".zst"}.get(self, f".{self}")
+ return {Compression.zstd: "zst"}.get(self, str(self))
def oci_media_type_suffix(self) -> str:
suffix = {
output_format: OutputFormat
manifest_format: list[ManifestFormat]
output: str
+ output_extension: str
compress_output: Compression
compress_level: int
output_dir: Optional[Path]
@property
def output_with_format(self) -> str:
- return self.output + self.output_format.extension()
+ ext = self.output_extension
+
+ if not ext:
+ return self.output
+
+ return f"{self.output}.{ext}"
@property
def output_with_compression(self) -> str:
output = self.output_with_format
if self.compress_output and self.output_format.use_outer_compression():
- output += self.compress_output.extension()
+ output += f".{self.compress_output.extension()}"
return output
output = f"{self.output}.tar"
if self.compress_output:
- output += self.compress_output.extension()
+ output += f".{self.compress_output.extension()}"
return output
default_factory_depends=("image_id", "image_version"),
help="Output name",
),
+ ConfigSetting(
+ dest="output_extension",
+ metavar="EXTENSION",
+ section="Output",
+ parse=config_make_filename_parser(
+ "OutputExtension= or --output-extension= requires a valid extension with no path components."
+ ),
+ help="Output extension",
+ default_factory=lambda ns: ns.output_format.extension(),
+ default_factory_depends=("output_format",),
+ ),
ConfigSetting(
dest="compress_output",
metavar="ALG",
specific output format, compression and image version used, the full
output name might be `image_7.8.raw.xz`.
+`OutputExtension=`, `--output-extension=`
+: Use the specified extension for the output file. Defaults to the appropriate
+ extension based on the output format. Only includes the file extension, not
+ any compression extension which will be appended to this extension if compression
+ is enabled.
+
`CompressOutput=`, `--compress-output=`
: Configure compression for the resulting image or archive. The argument can be
either a boolean or a compression algorithm (**xz**, **zstd**). **zstd**