-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathfcstd-repack
More file actions
executable file
·36 lines (33 loc) · 888 Bytes
/
fcstd-repack
File metadata and controls
executable file
·36 lines (33 loc) · 888 Bytes
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
#!/bin/bash
set -eu -o pipefail
set_dir(){ _dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"; }; set_dir
safe_source () { source $1; set_dir; }
# end of bash boilerplate
# Description
#
# Repacks previously unpacked FreeCAD fcstd files
doc=$1
for doc in "$@"; do
[[ -d $doc ]] || { echo "Not a directory: $doc"; continue; }
dname=${doc#$_dir/}
fname=${dname%.d}
files_in_order=$(cat ${doc}.pack-order | tr -s '\n' ' ')
echo -n "Packing ${doc#$_dir/}"
cd $doc
zip -q -3 -r ../${fname}.new $files_in_order
if [[ $? -eq 0 ]]; then
cd ..
backup="/tmp/$fname.prev"
if [[ -f $fname ]]; then
mv $fname $backup
info="(backup: $backup)"
fi
mv $fname.new $fname
echo " [OK] $info"
rm -rf $doc
rm ${doc}.pack-order
else
echo " [FAIL]"
cd ..
fi
done