@@ -23,10 +23,20 @@ def from_dir(path: Path, parent=None, relative=None, *args, **kwargs):
2323 if not path .is_dir ():
2424 raise ValueError ("Path is not a directory: %s" % path )
2525
26- if relative :
26+ if relative is True :
27+ relative = path
28+ elif relative :
2729 relative = Path (relative ).resolve ()
2830
31+ if relative :
32+ kwargs ['name' ] = str (path .relative_to (relative ))
33+ else :
34+ kwargs ['name' ] = str (path )
35+
2936 data = []
37+ data .append (CPIOData .from_path (path = path , relative = relative , * args , ** kwargs ))
38+ if logger := kwargs .get ('logger' ):
39+ logger .warning (data [0 ])
3040 for child in path .iterdir ():
3141 if parent :
3242 child_path = parent / child
@@ -42,7 +52,6 @@ def from_dir(path: Path, parent=None, relative=None, *args, **kwargs):
4252 data .extend (CPIOData .from_dir (path = child_path , parent = parent , relative = relative , * args , ** kwargs ))
4353 else :
4454 data .append (CPIOData .from_path (path = child_path , relative = relative , * args , ** kwargs ))
45-
4655 return data
4756
4857 @staticmethod
@@ -55,10 +64,19 @@ def from_path(path: Path, relative: None, *args, **kwargs):
5564 """
5665 from pycpio .header import CPIOHeader
5766
58- path = Path (path ). resolve ()
67+ path = Path (path )
5968 if logger := kwargs .get ('logger' ):
6069 logger .debug (f"Creating CPIO entry from path: { path } " )
6170
71+ relative = Path (relative ).resolve () if relative else None
72+ if logger := kwargs .get ('logger' ):
73+ logger .debug ("Creating CPIO entry relative to path: %s" , relative )
74+
75+ if not path .is_symlink ():
76+ path = path .resolve ()
77+ if not path .exists ():
78+ raise ValueError ("Path does not exist: %s" % path )
79+
6280 kwargs ['path' ] = path
6381 if name := kwargs .pop ('name' , None ):
6482 kwargs ['name' ] = name
@@ -70,11 +88,13 @@ def from_path(path: Path, relative: None, *args, **kwargs):
7088
7189 kwargs ['mode' ] = mode_bytes_from_path (path )
7290
91+ data = b''
92+
7393 header = CPIOHeader (* args , ** kwargs )
74- data = CPIOData .get_subtype (b'' , header , * args , ** kwargs )
94+ data = CPIOData .get_subtype (data , header , * args , ** kwargs )
7595
7696 if logger := kwargs .get ('logger' ):
77- logger .info (f"Created CPIO entry from path: { data } " )
97+ logger .debug (f"Created CPIO entry from path: { data } " )
7898
7999 return data
80100
0 commit comments