generated from cosmic-utils/cosmic-applet-template
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathjustfile
132 lines (106 loc) · 4.15 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
name := `grep -m 1 -oP '(?<=<binary>).*?(?=</binary>)' $(ls ./res/*.xml | head -n 1)`
architecture := if arch() == "x86_64" { "amd64" } else { arch() }
version := `sed -En 's/version[[:space:]]*=[[:space:]]*"([^"]+)"/\1/p' Cargo.toml | head -1`
debname := name+'_'+version+'_'+architecture
debdir := debname / 'DEBIAN'
debcontrol := debdir / 'control'
id := `grep -m 1 -oP '(?<=<id>).*?(?=</id>)' $(ls ./res/*.xml | head -n 1)`
summary := `grep -m 1 -oP '(?<=<summary>).*?(?=</summary>)' $(ls ./res/*.xml | head -n 1)`
dev_name := `grep -m 1 -oP '(?<=<developer_name>).*?(?=</developer_name>)' $(ls ./res/*.xml | head -n 1)`
email := `grep -m 1 -oP '(?<=<update_contact>).*?(?=</update_contact>)' $(ls ./res/*.xml | head -n 1)`
export APPID := id
rootdir := ''
prefix := '/usr'
flatpak-prefix := '/app'
base-dir := absolute_path(clean(rootdir / prefix))
flatpak-base-dir := absolute_path(clean(rootdir / flatpak-prefix))
export INSTALL_DIR := base-dir / 'share'
bin-src := 'target' / 'release' / name
bin-dst := base-dir / 'bin' / name
flatpak-bin-dst := flatpak-base-dir / 'bin' / name
desktop := APPID + '.desktop'
desktop-src := 'res' / desktop
desktop-dst := clean(rootdir / prefix) / 'share' / 'applications' / desktop
metainfo := APPID + '.metainfo.xml'
metainfo-src := 'res' / metainfo
metainfo-dst := clean(rootdir / prefix) / 'share' / 'metainfo' / metainfo
icons-src := 'res' / 'icons'
icons-dst := clean(rootdir / prefix) / 'share' / 'icons' / 'hicolor' / 'scalable'
default: build-release
# Runs `cargo clean`
clean:
cargo clean
# Removes vendored dependencies
clean-vendor:
rm -rf .cargo vendor vendor.tar
# `cargo clean` and removes vendored dependencies
clean-dist: clean clean-vendor
# Compiles with debug profile
build-debug *args:
cargo build {{args}}
# Compiles with release profile
build-release *args: (build-debug '--release' args)
# Compiles release profile with vendored dependencies
build-vendored *args: vendor-extract (build-release '--frozen --offline' args)
# Runs a clippy check
check *args:
cargo clippy --all-features {{args}} -- -W clippy::pedantic
# Runs a clippy check with JSON message format
check-json: (check '--message-format=json')
dev *args:
cargo fmt
just run {{args}}
# Run with debug logs
run *args:
env RUST_LOG=cosmic_tasks=info RUST_BACKTRACE=full cargo run --release {{args}}
# Installs files
install:
install -Dm0755 {{bin-src}} {{bin-dst}}
install -Dm0644 {{desktop-src}} {{desktop-dst}}
install -Dm0644 {{metainfo-src}} {{metainfo-dst}}
for size in `ls {{icons-src}}`; do \
install -Dm0644 "{{icons-src}}/apps/{{APPID}}.svg" "{{icons-dst}}/apps/{{APPID}}.svg"; \
done
# Uninstalls installed files
uninstall:
rm {{bin-dst}}
rm {{desktop-dst}}
rm {{metainfo-dst}}
for size in `ls {{icons-src}}`; do \
rm "{{icons-dst}}/apps/{{APPID}}.svg"; \
done
# Vendor dependencies locally
vendor:
#!/usr/bin/env bash
mkdir -p .cargo
cargo vendor --sync Cargo.toml | head -n -1 > .cargo/config.toml
echo 'directory = "vendor"' >> .cargo/config.toml
echo >> .cargo/config.toml
echo '[env]' >> .cargo/config.toml
if [ -n "${SOURCE_DATE_EPOCH}" ]
then
source_date="$(date -d "@${SOURCE_DATE_EPOCH}" "+%Y-%m-%d")"
echo "VERGEN_GIT_COMMIT_DATE = \"${source_date}\"" >> .cargo/config.toml
fi
if [ -n "${SOURCE_GIT_HASH}" ]
then
echo "VERGEN_GIT_SHA = \"${SOURCE_GIT_HASH}\"" >> .cargo/config.toml
fi
tar pcf vendor.tar .cargo vendor
rm -rf .cargo vendor
# Extracts vendored dependencies
vendor-extract:
rm -rf vendor
tar pxf vendor.tar
deb:
install -D {{bin-src}} {{debname}}{{bin-dst}}
install -D {{desktop-src}} {{debname}}{{desktop-dst}}
install -D {{icons-src}}/apps/{{APPID}}.svg {{debname}}{{icons-dst}}/apps/{{APPID}}.svg
mkdir -p {{debdir}}
echo "Package: {{name}}" > {{debcontrol}}
echo "Version: {{version}}" >> {{debcontrol}}
echo "Architecture: {{architecture}}" >> {{debcontrol}}
echo "Maintainer: {{dev_name}} <{{email}}>" >> {{debcontrol}}
echo "Description: {{summary}}" >> {{debcontrol}}
dpkg-deb --build --root-owner-group {{debname}}
rm -Rf {{debname}}/