|
| 1 | +import argparse |
1 | 2 | import json |
2 | 3 | import multiprocessing |
3 | 4 | import os |
|
6 | 7 |
|
7 | 8 | from modules.versions.versions import create_version_archive |
8 | 9 |
|
9 | | -ARCHIVE_DIR = "attack-version-archives" |
10 | | - |
11 | 10 |
|
12 | 11 | def main(): |
13 | 12 | """Process previous versions of ATT&CK website.""" |
| 13 | + parser = argparse.ArgumentParser( |
| 14 | + description="Process previous versions of ATT&CK website and create version archives" |
| 15 | + ) |
| 16 | + parser.add_argument( |
| 17 | + "--archive-dir", |
| 18 | + "-a", |
| 19 | + default="attack-version-archives", |
| 20 | + help="Directory where version archives will be created (default: attack-version-archives)", |
| 21 | + ) |
| 22 | + |
| 23 | + args = parser.parse_args() |
| 24 | + archive_dir = args.archive_dir |
| 25 | + |
| 26 | + # Create archive directory if it doesn't exist |
| 27 | + os.makedirs(archive_dir, exist_ok=True) |
| 28 | + |
14 | 29 | with open("data/versions.json", "r") as f: |
15 | 30 | version_json = json.load(f) |
16 | 31 |
|
17 | | - logger.info("Processing previous versions of ATT&CK website") |
| 32 | + logger.info(f"Processing previous versions of ATT&CK website to {archive_dir}") |
18 | 33 |
|
19 | 34 | processes = [] |
20 | 35 | for version_data in version_json["previous"]: |
21 | | - archive_path = os.path.join(ARCHIVE_DIR, f"website-{version_data['name']}.tar.gz") |
| 36 | + archive_path = os.path.join(archive_dir, f"website-{version_data['name']}.tar.gz") |
22 | 37 | if os.path.exists(archive_path): |
23 | 38 | logger.info(f"Archive already exists for {version_data['name']}: {archive_path} -- skipping.") |
24 | 39 | continue |
25 | 40 |
|
26 | 41 | p = multiprocessing.Process( |
27 | 42 | target=create_version_archive, |
28 | | - args=(version_data, ARCHIVE_DIR), |
| 43 | + args=(version_data, archive_dir), |
29 | 44 | name=f"Process-{version_data['name']}", |
30 | 45 | ) |
31 | 46 | processes.append(p) |
|
0 commit comments