Skip to content

Commit 0e8f1ef

Browse files
authored
Merge branch 'master' into singularity-support
2 parents ddb22ab + 028c883 commit 0e8f1ef

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

cwltool/pack.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,8 @@ def import_embed(d, seen):
9595
import_embed(d[k], seen)
9696

9797

98-
def pack(document_loader, processobj, uri, metadata):
99-
# type: (Loader, Union[Dict[Text, Any], List[Dict[Text, Any]]], Text, Dict[Text, Text]) -> Dict[Text, Any]
98+
def pack(document_loader, processobj, uri, metadata, rewrite_out=None):
99+
# type: (Loader, Union[Dict[Text, Any], List[Dict[Text, Any]]], Text, Dict[Text, Text], Dict[Text, Text]) -> Dict[Text, Any]
100100

101101
document_loader = SubLoader(document_loader)
102102
document_loader.idx = {}
@@ -114,15 +114,20 @@ def loadref(b, u):
114114
# type: (Text, Text) -> Union[Dict, List, Text]
115115
return document_loader.resolve_ref(u, base_url=b)[0]
116116

117+
ids = set() # type: Set[Text]
118+
find_ids(processobj, ids)
119+
117120
runs = {uri}
118121
find_run(processobj, loadref, runs)
119122

120-
ids = set() # type: Set[Text]
121123
for f in runs:
122124
find_ids(document_loader.resolve_ref(f)[0], ids)
123125

124126
names = set() # type: Set[Text]
125-
rewrite = {} # type: Dict[Text, Text]
127+
if rewrite_out is None:
128+
rewrite = {} # type: Dict[Text, Text]
129+
else:
130+
rewrite = rewrite_out
126131

127132
mainpath, _ = urllib.parse.urldefrag(uri)
128133

@@ -131,8 +136,10 @@ def rewrite_id(r, mainuri):
131136
if r == mainuri:
132137
rewrite[r] = "#main"
133138
elif r.startswith(mainuri) and r[len(mainuri)] in ("#", "/"):
134-
path, frag = urllib.parse.urldefrag(r)
135-
rewrite[r] = "#"+frag
139+
if r[len(mainuri):].startswith("#main/"):
140+
rewrite[r] = "#" + uniquename(r[len(mainuri)+1:], names)
141+
else:
142+
rewrite[r] = "#" + uniquename("main/"+r[len(mainuri)+1:], names)
136143
else:
137144
path, frag = urllib.parse.urldefrag(r)
138145
if path == mainpath:
@@ -144,8 +151,7 @@ def rewrite_id(r, mainuri):
144151
sortedids = sorted(ids)
145152

146153
for r in sortedids:
147-
if r in document_loader.idx:
148-
rewrite_id(r, uri)
154+
rewrite_id(r, uri)
149155

150156
packed = {"$graph": [], "cwlVersion": metadata["cwlVersion"]
151157
} # type: Dict[Text, Any]

0 commit comments

Comments
 (0)