summaryrefslogtreecommitdiff
path: root/bin/make_archives.sh
blob: 02bec66a2a156484e5d983c41974dc7c9182f6cf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/bin/bash

CSV_FILE="tricks.csv"
VIDEO_DIR="videos"
DEMO_DIR="demos"
ARCHIVE_DIR="public/archives"

mkdir -p "$ARCHIVE_DIR"

declare -A montage_videos
declare -A montage_demos

while IFS=',' read -r name players train_videos ingame_videos demos montage; do
    key="$(echo "$montage" | xargs)"
    videos_raw=$(echo "$ingame_videos" | xargs)
    demos_raw=$(echo "$demos" | xargs)
    key="$(echo "$key" | sed 's/ /_/g')"

    videos=""
    IFS=';' read -ra video_items <<< "$videos_raw"
    for item in "${video_items[@]}"; do
        videos+="${VIDEO_DIR}/${item}.mp4 "
    done

    demos=""
    IFS=';' read -ra demo_items <<< "$demos_raw"
    for item in "${demo_items[@]}"; do
        demos+="${DEMO_DIR}/${item} "
    done

    if [[ -z "$key" ]]; then
        key="Unused"
    fi

    if [[ -n "${montage_videos[$key]}" ]]; then
        montage_videos[$key]="${montage_videos[$key]} $videos"
    else
        montage_videos[$key]="$videos"
    fi

    if [[ -n "${montage_demos[$key]}" ]]; then
        montage_demos[$key]="${montage_demos[$key]} $demos"
    else
        montage_demos[$key]="$demos"
    fi
done < <(tail -n +2 "$CSV_FILE")

for montage in "${!montage_videos[@]}"; do
    [[ -n "${montage_videos[$montage]}" ]] \
        && zip -r "${ARCHIVE_DIR}/${montage}_videos.zip" ${montage_videos[$montage]}
    continue
done

for montage in "${!montage_demos[@]}"; do
    [[ -n "${montage_demos[$montage]}" ]] \
        && zip -r "${ARCHIVE_DIR}/${montage}_demos.zip" ${montage_demos[$montage]}
done