-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathprep_dist.sh
More file actions
executable file
·98 lines (87 loc) · 2.87 KB
/
prep_dist.sh
File metadata and controls
executable file
·98 lines (87 loc) · 2.87 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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#!/bin/bash
if [ -z "$1" ]; then
echo "Usage: $0 <target> [--binary-name <name>]"
exit 1
fi
TARGET=$1
BINARY_NAME="pact"
OUTPUT_DIR="dist"
while [[ $# -gt 0 ]]; do
key="$1"
case $key in
--binary-name)
BINARY_NAME="$2"
shift
shift
;;
--output-dir)
OUTPUT_DIR="$2"
shift
shift
;;
*)
shift
;;
esac
done
# Rename targets to friendlier names end user names
DIST_TARGET_NAME=${TARGET}
DIST_TARGET_NAME=${DIST_TARGET_NAME//-unknown-/-}
DIST_TARGET_NAME=${DIST_TARGET_NAME//-pc-/-}
DIST_TARGET_NAME=${DIST_TARGET_NAME//-apple-darwin/-macos}
echo "DIST_TARGET_NAME: ${DIST_TARGET_NAME}"
mkdir -p ${OUTPUT_DIR}
## Proces executables
echo "Processing executables"
cp target/${TARGET}/release/${BINARY_NAME} ${OUTPUT_DIR}/${BINARY_NAME}-${DIST_TARGET_NAME}
## Process shared libs
echo "Processing shared libraries"
for file in target/${TARGET}/release/*.{a,so,dll,dll.lib,dylib}; do
echo "Processing $file for $DIST_TARGET_NAME"
# Check if the file exists
if [ ! -f "$file" ]; then
echo "File $file does not exist. Skipping..."
continue
fi
# get file extension
extension="${file##*.}"
# get filename without extension
filename="${file%.*}"
# remove both extensions if filename ends with .dll.lib
if [[ $file == *".dll.lib" ]]; then
filename="${filename%.*}"
extension="dll.${extension}"
fi
DIST_TARGET_FILE="${filename}-${DIST_TARGET_NAME}.${extension}"
echo "Renaming $file to $DIST_TARGET_FILE"
cp "$file" "${DIST_TARGET_FILE}"
# get full filename without base path
new_file_name="${DIST_TARGET_FILE##*/}"
mv "${DIST_TARGET_FILE}" "${OUTPUT_DIR}/${new_file_name}"
done
# Check if files exist in dist folder
echo "Checking dist folder for files"
if [ ! -f "${OUTPUT_DIR}/${BINARY_NAME}-${DIST_TARGET_NAME}" ]; then
echo "Error: ${BINARY_NAME}-${DIST_TARGET_NAME} does not exist in ${OUTPUT_DIR}"
exit 1
fi
for file in ${OUTPUT_DIR}/*; do
if [ ! -f "$file" ]; then
echo "Error: $file does not exist in ${OUTPUT_DIR}"
exit 1
fi
if [[ "$OSTYPE" == "darwin"* ]]; then
if [[ "$file" == *"${DIST_TARGET_NAME}.dylib" ]] || [[ "$file" == *"${DIST_TARGET_NAME}.a" ]]; then
echo "Found dylib file: $file"
fi
elif [[ "$OSTYPE" == "msys" || "$OSTYPE" == "cygwin" ]]; then
if [[ "$file" == *"${DIST_TARGET_NAME}.dll" || "$file" == *"${DIST_TARGET_NAME}.dll.lib" ]]; then
echo "Found DLL file: $file"
fi
elif [[ "$OSTYPE" == "linux"* ]]; then
if [[ "$file" == *"${DIST_TARGET_NAME}.so" ]] || [[ "$file" == *"${DIST_TARGET_NAME}.a" ]]; then
echo "Found shared library file: $file"
fi
fi
done
echo DIST_TARGET_NAME=${DIST_TARGET_NAME} >> $GITHUB_ENV