-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmakeConfig
More file actions
executable file
·83 lines (71 loc) · 2.42 KB
/
makeConfig
File metadata and controls
executable file
·83 lines (71 loc) · 2.42 KB
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/usr/bin/env bash
declare -a content_files
declare -a parent_directories
is_data_directory() {
local dir_name=$(basename "$1" | tr '[:upper:]' '[:lower:]')
case "$dir_name" in
meshes|mygui|animations|textures|icons|bookart|scripts|playlists|sound|music|l10n)
return 0 # true
;;
*)
return 1 # false
;;
esac
}
is_content_file() {
local file=$(echo "$1" | tr '[:upper:]' '[:lower:]')
case "$file" in
*.esp|*.esm|*.omwaddon|*.omwscripts|*.omwgame)
return 0 # true
;;
*)
return 1 # false
;;
esac
}
echo "Scanning current directory and subdirectories for OpenMW content..."
# Process data directories first
while IFS= read -r -d '' dir; do
if is_data_directory "$dir"; then
# Get the parent directory of this data directory
parent_dir=$(dirname "$dir")
# Remove leading ./ if present and avoid adding current directory "."
if [[ "$parent_dir" != "." && ! " ${parent_directories[@]} " =~ " ${parent_dir} " ]]; then
parent_directories+=("$parent_dir")
fi
fi
done < <(find -L . -type d -print0 2>/dev/null)
# Process content files
while IFS= read -r -d '' file; do
if is_content_file "$file"; then
# Add filename to content files
filename=$(basename "$file")
if [[ ! " ${content_files[@]} " =~ " ${filename} " ]]; then
content_files+=("$filename")
fi
# Also add parent directory to parent_directories
parent_dir=$(dirname "$file")
if [[ "$parent_dir" != "." && ! " ${parent_directories[@]} " =~ " ${parent_dir} " ]]; then
parent_directories+=("$parent_dir")
fi
fi
done < <(find -L . -type f -print0 2>/dev/null)
# Sort arrays for consistent output
IFS=$'\n' sorted_parent_dirs=($(sort -u <<<"${parent_directories[*]}"))
IFS=$'\n' sorted_content_files=($(sort -u <<<"${content_files[*]}"))
echo ""
echo "=== Generated openmw.cfg entries ==="
echo ""
# Output parent directories (data entries)
for dir in "${sorted_parent_dirs[@]}"; do
# Remove leading ./ if present
clean_dir="${dir#./}"
echo "data=$clean_dir"
done
# Output content files
for file in "${sorted_content_files[@]}"; do
echo "content=$file"
done
echo ""
echo "Total data entries found: ${#sorted_parent_dirs[@]}"
echo "Total content files found: ${#sorted_content_files[@]}"