-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathjustfile
153 lines (135 loc) · 5.49 KB
/
justfile
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
export VERSION := `cargo metadata --no-deps -q --format-version=1 | grep -Eo '"version":"[0-9]+\.[0-9]+\.[0-9]+"' | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+'`
export NAME := `cargo metadata --no-deps -q --format-version=1 | grep -Eo '"name":".+","version":"' | sed -E 's/","version":"//' | sed -E 's/"name":"//'`
[linux]
play:
cargo run --release --target x86_64-unknown-linux-gnu
[linux]
install: mk-desktop
cargo build --release --target x86_64-unknown-linux-gnu --features local_unix_assets
cp ./target/x86_64-unknown-linux-gnu/release/$NAME ~/.local/bin/
mv ./target/pack/$NAME.desktop ~/.local/share/applications/
mkdir -p ~/.local/share/$NAME
cp -rfu ./assets/* ~/.local/share/$NAME/
@echo Installation complete
[linux]
remove:
rm ~/.local/bin/$NAME
rm ~/.local/share/applications/$NAME.desktop
rm -r ~/.local/share/$NAME/
@echo Removal complete.
make-wasm:
cargo build --release --target wasm32-unknown-unknown
if [ -d target/pack/$NAME-wasm ]; then rm -rf target/pack/$NAME-wasm; fi
mkdir -p target/pack/$NAME-wasm/
wasm-bindgen --out-dir ./target/pack/$NAME-wasm/ --target web ./target/wasm32-unknown-unknown/release/$NAME.wasm
cp -r ./assets ./target/pack/$NAME-wasm/
cp -r ./wasm/* ./target/pack/$NAME-wasm/
pack-all: pack-zip pack-tar pack-deb pack-wasm
@echo Packing everything completed
pack-wasm: make-wasm
#!/usr/bin/env bash
cd target/pack
if [ -f $NAME-wasm.zip ]; then rm $NAME-wasm.zip; fi
zip -r $NAME-wasm $NAME-wasm
rm -r $NAME-wasm/
echo Packing WASM zip Complete
pack-zip:
#!/usr/bin/env bash
cargo rustc --release --target x86_64-pc-windows-gnu -- -Clink-args="-Wl,--subsystem,windows"
mkdir -p ./target/pack/$NAME
cp ./target/x86_64-pc-windows-gnu/release/$NAME.exe ./target/pack/$NAME/$NAME.exe
cp -r ./assets ./target/pack/$NAME/
cp ./COPYRIGHT ./target/pack/$NAME/
cd target/pack/
if [ -f $NAME.zip ]; then rm $NAME.zip; fi
zip -r $NAME $NAME
rm -r $NAME/
echo Packing Zip Complete
mk-desktop:
#!/usr/bin/env bash
mkdir -p ./target/pack
cd ./target/pack
echo "[Desktop Entry]" > $NAME.desktop
echo "Type=Application" >> $NAME.desktop
echo "Name=$NAME" >> $NAME.desktop
echo "Comment=A side scrolling game" >> $NAME.desktop
echo "Exec=$NAME" >> $NAME.desktop
echo "Terminal=false" >> $NAME.desktop
echo "Categories=Game" >> $NAME.desktop
pack-tar:
#!/usr/bin/env bash
just mk-desktop
cargo build --release --target x86_64-unknown-linux-gnu --features local_unix_assets
mkdir -p ./target/pack/$NAME
cp ./target/x86_64-unknown-linux-gnu/release/$NAME ./target/pack/$NAME/
cp -r ./assets ./target/pack/$NAME/
mv ./target/pack/$NAME.desktop ./target/pack/$NAME/
cp ./COPYRIGHT ./target/pack/$NAME/
cd target/pack/$NAME
INSTALL='#!/usr/bin/env bash
\necho Installing to $HOME/.local/bin
\ncp ./PROGRAM ~/.local/bin/
\ncp ./PROGRAM.desktop ~/.local/share/applications/
\nmkdir -p ~/.local/share/PROGRAM
\ncp -rfu ./assets/* ~/.local/share/PROGRAM/
\necho Installation completed'
REMOVE='#!/usr/bin/env bash
\nAB=$(which PROGRAM)
\nif [ $? -eq 0 ]; then
\n echo Removed executable
\n rm $AB
\nfi
\nif [ -f $HOME/.local/share/applications/PROGRAM.desktop ]; then
\n echo Removed desktop entry
\n rm $HOME/.local/share/applications/PROGRAM.desktop
\nfi
\nif [ -d $HOME/.local/share/PROGRAM ]; then
\n echo Removed assets
\n rm -rf $HOME/.local/share/PROGRAM
\nfi'
echo -e $INSTALL | sed -E "s/PROGRAM/$NAME/g" > install.sh
echo -e $REMOVE | sed -E "s/PROGRAM/$NAME/g" > remove.sh
chmod 755 $NAME
chmod 755 install.sh
chmod 755 remove.sh
cd ..
tar -caf ./$NAME.tar.gz ./$NAME
rm -r $NAME/
echo Packing Tar Complete
pack-deb:
#!/usr/bin/env bash
cargo build --release --target x86_64-unknown-linux-gnu --features unix_assets
VERSION_MAJOR=$(echo $VERSION | sed 's/.[0-9]$//')
VERSION_MINOR=$(echo $VERSION | sed 's/[0-9].[0-9].//')
DEB_VERSION=${VERSION_MAJOR}-${VERSION_MINOR}
TARGET_FOLDER=${NAME}_${DEB_VERSION}
just mk-desktop
mkdir -p ./target/pack/$TARGET_FOLDER/usr/bin
mkdir -p ./target/pack/$TARGET_FOLDER/usr/share/applications
mkdir -p ./target/pack/$TARGET_FOLDER/usr/share/$NAME
cp ./target/x86_64-unknown-linux-gnu/release/$NAME ./target/pack/$TARGET_FOLDER/usr/bin/
mv ./target/pack/$NAME.desktop ./target/pack/$TARGET_FOLDER/usr/share/applications/
cp -r ./assets/* ./target/pack/$TARGET_FOLDER/usr/share/$NAME/
cd ./target/pack/$TARGET_FOLDER
mkdir DEBIAN
cd DEBIAN
echo Package: $NAME > control
echo Version: $DEB_VERSION >> control
echo Section: games >> control
echo Priority: optional >> control
echo Architecture: amd64 >> control
echo "Maintainer: Purrie Brightstar <purriestarshine@gmail.com>" >> control
echo "Homepage: https://github.com/purrie/$NAME" >> control
echo Description: A side scrolling game >> control
cp ../../../../COPYRIGHT ./copyright
if [ -f ../../changelog ]; then
cp ../../changelog ./changelog
else
echo No changelog found in root/target/pack folder, skipping inclusion
fi
cd ../..
dpkg-deb --build $TARGET_FOLDER
rm -r $TARGET_FOLDER
echo Packing Deb Complete
clear:
rm -rf ./target