@@ -143,13 +143,19 @@ def export_release(
143143 expected_stix_versions = ", " .join (VALID_STIX_VERSIONS )
144144 raise ValueError (f"Invalid STIX version: { stix_version } . Expected one of: { expected_stix_versions } " )
145145
146- attack_version = normalize_attack_version (version or release_info .LATEST_VERSION )
146+ has_explicit_local_stix_base_dir = stix_base_dir is not None or os .environ .get ("STIX_BASE_DIR" ) is not None
147+ attack_version = normalize_attack_version (version ) if version else None
148+ release_version = attack_version or normalize_attack_version (release_info .LATEST_VERSION )
147149 release_domains = _validate_release_domains (domains )
148150 local_release_dir = Path (
149- stix_base_dir or os .environ .get ("STIX_BASE_DIR" ) or _default_release_dir (attack_version , stix_version )
151+ stix_base_dir or os .environ .get ("STIX_BASE_DIR" ) or _default_release_dir (release_version , stix_version )
150152 )
151153 local_release_dir = local_release_dir .resolve ()
152- release_output_dir = Path (output_dir ) / attack_version
154+ release_output_dir = (
155+ Path (output_dir )
156+ if has_explicit_local_stix_base_dir and attack_version is None
157+ else Path (output_dir ) / release_version
158+ )
153159
154160 local_stix_files = {domain : _release_stix_file (local_release_dir , domain ) for domain in release_domains }
155161 missing_domains = [domain for domain , stix_file in local_stix_files .items () if not stix_file .is_file ()]
@@ -163,6 +169,13 @@ def export_release(
163169 )
164170 return
165171
172+ if attack_version is None :
173+ missing_domains_text = ", " .join (missing_domains )
174+ raise FileNotFoundError (
175+ f"Missing local STIX file(s) for domain(s): { missing_domains_text } . "
176+ "Pass --version to download missing ATT&CK release bundles."
177+ )
178+
166179 with tempfile .TemporaryDirectory () as temporary_directory :
167180 temporary_release_dir = _download_missing_release_domains (
168181 missing_domains = missing_domains ,
@@ -186,7 +199,7 @@ def export_release(
186199
187200def _export_release_domains (
188201 * ,
189- version : str ,
202+ version : Optional [ str ] ,
190203 output_dir : Path ,
191204 stix_files : Dict [str , Path ],
192205 versioned_output_dir : bool ,
0 commit comments