Ely Office: six offline-first desktop apps in Rust and GPUI
ElyDoc, ElyTable, ElyShow (LibreOfficeKit), ElyPDF (MuPDF), ElyTree (Git), ElyMark (Milkdown and CodeMirror in CEF). ElyMail and ElyAgent follow.
This commit is contained in:
817 files changed
+143101
No files matched your search
Executable
+34
@@ -0,0 +1,34 @@
|
||||
#!/usr/bin/env bash
|
||||
# packaging/types.tsv reaches Linux, Windows and macOS alike.
|
||||
set -euo pipefail
|
||||
|
||||
root=$(cd "$(dirname "$0")/../.." && pwd)
|
||||
types=$root/packaging/types.tsv
|
||||
fail() {
|
||||
echo "FAIL: $*" >&2
|
||||
exit 1
|
||||
}
|
||||
count=0
|
||||
for slug in $(cut -f1 "$types" | sort -u); do
|
||||
desktop=$("$root/packaging/linux/appimage.sh" --desktop "$slug")
|
||||
windows=$("$root/packaging/windows/types.sh" "$slug")
|
||||
rows=$(awk -F'\t' -v slug="$slug" '$1 == slug' "$types")
|
||||
while IFS=$'\t' read -r _ ext mime; do
|
||||
grep -q "^MimeType=.*$mime;" <<<"$desktop" || fail "$slug: Linux misses $mime"
|
||||
if [ "$ext" = / ]; then
|
||||
grep -q 'Directory\\shell' <<<"$windows" || fail "$slug: Windows misses folders"
|
||||
else
|
||||
grep -q "\\\\.$ext\\\\OpenWithProgids" <<<"$windows" || fail "$slug: Windows misses .$ext"
|
||||
grep -q "DeleteRegValue.*\\\\.$ext\\\\OpenWithProgids" <<<"$windows" || fail "$slug: uninstall keeps .$ext"
|
||||
fi
|
||||
count=$((count + 1))
|
||||
done <<<"$rows"
|
||||
# One macOS type per MIME type; md and markdown share.
|
||||
utis=$("$root/packaging/macos/documents.sh" "$slug" | grep -c '^ <string>')
|
||||
mimes=$(cut -f3 <<<"$rows" | sort -u | wc -l | tr -d ' ')
|
||||
[ "$utis" -eq "$mimes" ] || fail "$slug: macOS declares $utis types, the table $mimes"
|
||||
done
|
||||
# Never the default: macOS ranks Alternate; Windows only lists.
|
||||
! grep -q 'Classes\\\.[a-z]*" ""' <(for s in $(cut -f1 "$types" | sort -u); do "$root/packaging/windows/types.sh" "$s"; done) ||
|
||||
fail "Windows sets a default handler"
|
||||
echo "ok: types ($count file types on three systems)"
|
||||
Reference in new issue
Block a user