@@ -93,7 +93,8 @@ def run(args: argparse.Namespace) -> int:
93
93
target_version = target_version ,
94
94
imports = imports ,
95
95
)
96
- write_cwl_document (upgraded_document , Path (path ).name , args .dir )
96
+ if upgraded_document is not None :
97
+ write_cwl_document (upgraded_document , Path (path ).name , args .dir )
97
98
return 0
98
99
99
100
@@ -109,7 +110,11 @@ def upgrade_document(
109
110
if target_version not in supported_versions :
110
111
_logger .error (f"Unsupported target cwlVersion: { target_version } " )
111
112
return
113
+
112
114
version = document ["cwlVersion" ]
115
+ main_updater = None
116
+ inner_updater = None
117
+
113
118
if version == "cwl:draft-3" or version == "draft-3" :
114
119
if target_version == "v1.0" :
115
120
main_updater = draft3_to_v1_0
@@ -123,11 +128,9 @@ def upgrade_document(
123
128
elif target_version == "latest" :
124
129
main_updater = draft3_to_v1_2
125
130
inner_updater = _draft3_to_v1_2
126
- else :
127
- pass # does not happen
128
131
elif version == "v1.0" :
129
132
if target_version == "v1.0" :
130
- _logger .info ("Skipping v1.0 document as requested." )
133
+ _logger .info ("Not upgrading v1.0 document as requested." )
131
134
return
132
135
elif target_version == "v1.1" :
133
136
main_updater = v1_0_to_v1_1
@@ -138,22 +141,30 @@ def upgrade_document(
138
141
elif target_version == "latest" :
139
142
main_updater = v1_0_to_v1_2
140
143
inner_updater = _v1_0_to_v1_2
141
- else :
142
- pass # does not happen
143
144
elif version == "v1.1" :
144
145
if target_version == "v1.1" :
145
- _logger .info ("Skipping v1.1 document as requested." )
146
+ _logger .info ("Not upgrading v1.1 document as requested." )
146
147
return
147
148
elif target_version == "v1.2" :
148
149
main_updater = v1_1_to_v1_2
149
150
inner_updater = _v1_1_to_v1_2
150
151
elif target_version == "latest" :
151
152
main_updater = v1_1_to_v1_2
152
153
inner_updater = _v1_1_to_v1_2
153
- else :
154
- pass # does not happen? How to do the case that base version is v1.0?
154
+ elif version == "v1.2" :
155
+ if target_version == "v1.2" :
156
+ _logger .info ("Not upgrading v1.2 document as requested." )
157
+ return
158
+ elif target_version == "latest" :
159
+ return
155
160
else :
156
- _logger .error (f"Unsupported cwlVersion: { version } " )
161
+ _logger .error (f"Unknown cwlVersion in source document: { version } " )
162
+ return
163
+
164
+ if main_updater is None or inner_updater is None :
165
+ _logger .error (f"Cannot downgrade from cwlVersion { version } to { target_version } " )
166
+ return
167
+
157
168
process_imports (document , imports , inner_updater , output_dir )
158
169
return main_updater (document , output_dir )
159
170
0 commit comments