1 |
#!/bin/bash |
2 |
|
3 |
dir="." |
4 |
|
5 |
if [ ! -z "$1" ]; then |
6 |
dir="$1" |
7 |
fi |
8 |
|
9 |
extensions=$(find $dir -maxdepth 1 -type d -not -wholename $dir -not -name . -not -name .git -not -name .extbuild -not -name .extbuilds) |
10 |
failed_builds=() |
11 |
extbuilds_final_dir=$(pwd)/.extbuilds |
12 |
|
13 |
for extension in $extensions; do |
14 |
name=$(basename $extension) |
15 |
echo "PROCESS $name" |
16 |
|
17 |
cd $extension |
18 |
echo "PWD $(pwd)" |
19 |
|
20 |
if [ ! -f extension.json ]; then |
21 |
echo "No metadata found for extension: $name" |
22 |
failed_builds+=($name) |
23 |
continue |
24 |
fi |
25 |
|
26 |
metadata=$(cat extension.json) |
27 |
main_directory=$(echo $metadata | jq -r '.main_directory') |
28 |
build_command=$(echo $metadata | jq -r '.build_command') |
29 |
resources=$(echo $metadata | jq -r '.resources') |
30 |
version=$(cat package.json | jq -r '.version') |
31 |
|
32 |
npm install -D |
33 |
|
34 |
if [ -z "$BUN" ] || [ "$BUN" != "1" ]; then |
35 |
echo "PREPARE $name" |
36 |
rm -f "tsconfig.json" |
37 |
ln -s "tsconfig.node.json" "tsconfig.json" |
38 |
else |
39 |
echo "Bun extension build with this script is not supported yet" |
40 |
continue |
41 |
fi |
42 |
|
43 |
if [ $? -eq 0 ]; then |
44 |
if [ -z "$build_command" ] || test "$build_command" = "null"; then |
45 |
echo "NOBUILD $name" |
46 |
else |
47 |
echo "BUILD $name" |
48 |
eval $build_command |
49 |
|
50 |
if [ $? -ne 0 ]; then |
51 |
echo "FAIL $name" |
52 |
failed_builds+=($name) |
53 |
continue |
54 |
fi |
55 |
fi |
56 |
fi |
57 |
|
58 |
if [ $? -ne 0 ]; then |
59 |
echo "FAIL $name" |
60 |
failed_builds+=($name) |
61 |
else |
62 |
echo "PACKAGE $name" |
63 |
root="${name}-${version}" |
64 |
extbuild_dir=".extbuild/$root" |
65 |
|
66 |
echo "MKDIR $extbuild_dir" |
67 |
mkdir -p $extbuild_dir/$main_directory |
68 |
echo "COPY $main_directory/* $extbuild_dir/$main_directory" |
69 |
cp -r $main_directory/* $extbuild_dir/$main_directory |
70 |
echo "COPY package.json $extbuild_dir" |
71 |
cp package.json $extbuild_dir |
72 |
echo "COPY extension.json $extbuild_dir" |
73 |
cp extension.json $extbuild_dir |
74 |
echo "COPY $resources/ $extbuild_dir" |
75 |
cp -r $resources/ $extbuild_dir |
76 |
|
77 |
if [ -f README.md ]; then |
78 |
echo "COPY README.md $extbuild_dir" |
79 |
cp README.md $extbuild_dir |
80 |
fi |
81 |
|
82 |
if [ -f README ]; then |
83 |
echo "COPY README $extbuild_dir" |
84 |
cp README $extbuild_dir |
85 |
fi |
86 |
|
87 |
if [ -f LICENSE ]; then |
88 |
echo "COPY LICENSE $extbuild_dir" |
89 |
cp LICENSE $extbuild_dir |
90 |
fi |
91 |
|
92 |
echo "TAR $root.tar.gz" |
93 |
cd .extbuild |
94 |
tar -czvf $root.tar.gz $root |
95 |
mv $root.tar.gz .. |
96 |
cd .. |
97 |
|
98 |
if [ $? -ne 0 ]; then |
99 |
echo "FAIL $name" |
100 |
failed_builds+=($name) |
101 |
else |
102 |
echo "SUCCESS $name" |
103 |
mkdir -p "$extbuilds_final_dir/$name" |
104 |
count=1 |
105 |
|
106 |
if [ -e "$extbuilds_final_dir/$name/$root.tar.gz" ]; then |
107 |
while [ -e "$extbuilds_final_dir/$name/$root-$count.tar.gz" ]; do |
108 |
((count++)) |
109 |
done |
110 |
|
111 |
prevcount=$((count - 1)) |
112 |
|
113 |
sum1=$(tarsum "$root.tar.gz") |
114 |
sum2=$(tarsum "$extbuilds_final_dir/$name/$root-$prevcount.tar.gz") |
115 |
|
116 |
if [ -e "$extbuilds_final_dir/$name/$root-$prevcount.tar.gz" ] && test "$sum1" = "$sum2"; then |
117 |
((count--)) |
118 |
fi |
119 |
|
120 |
sum2=$(tarsum "$extbuilds_final_dir/$name/$root.tar.gz") |
121 |
|
122 |
if [ $count -eq 1 ] && test "$sum1" = "$sum2"; then |
123 |
count="" |
124 |
else |
125 |
count="-$count" |
126 |
fi |
127 |
else |
128 |
count="" |
129 |
fi |
130 |
|
131 |
if [ ! -e "$extbuilds_final_dir/$name/$root$count.tar.gz" ]; then |
132 |
mv "$root.tar.gz" "$extbuilds_final_dir/$name/$root$count.tar.gz" |
133 |
echo "SAVE $root$count.tar.gz" |
134 |
else |
135 |
echo "SKIP $root$count.tar.gz" |
136 |
rm "$root.tar.gz" |
137 |
fi |
138 |
fi |
139 |
fi |
140 |
|
141 |
cd .. |
142 |
done |
143 |
|
144 |
if [ ${#failed_builds[@]} -eq 0 ]; then |
145 |
echo "All extensions built successfully" |
146 |
else |
147 |
echo "Failed to build extensions: ${failed_builds[@]}" |
148 |
exit 1 |
149 |
fi |