-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCreateExtension.sh
More file actions
51 lines (39 loc) · 1.35 KB
/
Copy pathCreateExtension.sh
File metadata and controls
51 lines (39 loc) · 1.35 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
#!/usr/bin/env bash
set -euo pipefail
MIME_PACKAGES_DIR="$HOME/.local/share/mime/packages"
MIME_DIR="$HOME/.local/share/mime"
APPLICATIONS_DIR="$HOME/.local/share/applications"
mkdir -p "$MIME_PACKAGES_DIR"
mkdir -p "$APPLICATIONS_DIR"
read -rp "Enter file extension (e.g. slnx, xyz): " EXTENSION
read -rp "Enter MIME type (e.g. text/slnx or application/x-newtype): " MIME_TYPE
read -rp "Enter description (e.g. JetBrains Solution File): " DESCRIPTION
if [[ -z "$EXTENSION" || -z "$MIME_TYPE" || -z "$DESCRIPTION" ]]; then
echo "Error: All fields must be filled in."
exit 1
fi
# Remove leading dot if provided (e.g. .xyz → xyz)
EXTENSION="${EXTENSION#.}"
SAFE_FILE_NAME="$(echo "$MIME_TYPE" | tr '/.' '-' )"
XML_FILE="$MIME_PACKAGES_DIR/user-extension-${EXTENSION}.xml"
cat > "$XML_FILE" <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="$MIME_TYPE">
<comment>$DESCRIPTION</comment>
<glob pattern="*.$EXTENSION"/>
</mime-type>
</mime-info>
EOF
echo
echo "MIME type file created:"
echo " $XML_FILE"
echo
echo "Updating MIME database..."
update-mime-database "$MIME_DIR"
echo "Updating desktop applications database..."
update-desktop-database "$APPLICATIONS_DIR"
echo
echo "Done."
echo "You can verify with:"
echo " xdg-mime query filetype example.$EXTENSION"