11# SPDX-License-Identifier: Apache-2.0
22"""Classes for docker-extract."""
33import logging
4- import os
54import subprocess # nosec
65from abc import ABC , abstractmethod
76from pathlib import Path
@@ -53,11 +52,9 @@ class DockerImagePuller(ImagePuller):
5352
5453 def get_image_name (self ) -> str :
5554 """Get the name of the tarball."""
56- name = "" .join (self .req .split ("/" )) + ".tar"
5755 # Replace colons with underscores in the name.
5856 # See https://github.com/containers/podman/issues/489
59- name = name .replace (":" , "_" )
60- return name
57+ return ("" .join (self .req .split ("/" )) + ".tar" ).replace (":" , "_" )
6158
6259 def generate_udocker_loading_command (self ) -> str :
6360 """Generate the udocker loading command."""
@@ -70,14 +67,14 @@ def save_docker_image(self) -> None:
7067 ImagePuller ._run_command_pull (cmd_pull )
7168 _LOGGER .info (f"Image successfully pulled: { self .req } " )
7269 if self .save_directory :
73- dest = os . path . join (self .save_directory , self .get_image_name ())
70+ dest = Path (self .save_directory , self .get_image_name ())
7471 if self .save_directory and self .force_pull :
75- os . remove ( dest )
72+ dest . unlink ( )
7673 cmd_save = [
7774 self .cmd ,
7875 "save" ,
7976 "-o" ,
80- dest ,
77+ str ( dest ) ,
8178 self .req ,
8279 ]
8380 subprocess .run (cmd_save , check = True ) # nosec
@@ -111,10 +108,8 @@ def save_docker_image(self) -> None:
111108 save_directory : str | Path
112109 if self .save_directory :
113110 save_directory = self .save_directory
114- if (
115- os .path .exists (os .path .join (save_directory , self .get_image_name ()))
116- and not self .force_pull
117- ):
111+ target = Path (save_directory , self .get_image_name ())
112+ if target .exists () and not self .force_pull :
118113 _LOGGER .info (f"Already cached { self .req } with Singularity." )
119114 return
120115 _LOGGER .info (f"Pulling { self .req } with Singularity..." )
@@ -127,7 +122,7 @@ def save_docker_image(self) -> None:
127122 cmd_pull .extend (
128123 [
129124 "--name" ,
130- os . path . join ( save_directory , self . get_image_name () ),
125+ str ( target ),
131126 f"docker://{ self .req } " ,
132127 ]
133128 )
0 commit comments