Skip to content

Commit

Permalink
Improvements to both scripts. (further debugging welcome!)
Browse files Browse the repository at this point in the history
  • Loading branch information
johndah4x0r committed Jan 26, 2018
1 parent d275601 commit 681fb82
Show file tree
Hide file tree
Showing 2 changed files with 125 additions and 6 deletions.
34 changes: 32 additions & 2 deletions install_fritzing.sh
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,7 @@ fi

# install Fritzing into MIME directory
echo "Installing Fritzing MIME types..."
echo "-*-*-*-*-*-*-*-"
{
xdg-mime install --mode "$MODE" 'icons/x-fritzing-fz.xml' && \
xdg-mime install --mode "$MODE" 'icons/x-fritzing-fzz.xml' && \
Expand Down Expand Up @@ -266,9 +267,9 @@ APP_ICON_ESC="$(esc_path "$APP_ICON")"
sed -i.use "s/icons\/fritzing_icon.png/${APP_ICON_ESC}/" fritzing.desktop

# Install Fritzing desktop application
cp fritzing.use "$APPS"/fritzing.desktop
cp fritzing.desktop.use "$APPS"/fritzing.desktop
cp icons/fritzing_icon.png "$APP_ICON"
rm -f fritzing.use
rm -f fritzing.desktop.use

# TODO: Uninstall script.

Expand All @@ -279,6 +280,35 @@ FRITZ_DIR_ESC="$(esc_path "$FRITZ_DIR")"
APPS_ESC="$(esc_path "$APPS")"
BIN_ESC="$(esc_path "$BIN")"

DEVSTAT="$(grep 'DEVSTAT' uninstall_fritzing.sh | cut -d '=' -f 2 | tr -d '"')"

# Substitute all variables
cp uninstall_fritzing.sh uninstall_fritzing.use

# NOTE: Do not put a '$' before the placeholder brackets!
# How I did it: sed -i "s/{placeholder}/$VARIABLE/(g if neccessary)" <file>
#
sed -i "s/{mode}/$MODE/" uninstall_fritzing.use
sed -i "s/{fritz-dir}/${FRITZ_DIR_ESC}/" uninstall_fritzing.use
sed -i "s/{mimedir}/${MIMEDIR_ESC}/" uninstall_fritzing.use
sed -i "s/{mimes}/${MIMES_ESC}/" uninstall_fritzing.use
sed -i "s/{app-dir}/${APPS_ESC}/" uninstall_fritzing.use
sed -i "s/{bin}/${BIN_ESC}/" uninstall_fritzing.use

# Activate/validate uninstall script
if [[ "$DEVSTAT" == '<in_dev>' ]]; then
echo "(warn) Uninstall script still in development!" >&2

# No-op (do not activate!)
else
echo "Activating uninstall script..."
sed -i "s/{stat}/true/" uninstall_fritzing.use
echo "Activated!"
echo
fi

cp uninstall_fritzing.use "$BIN"/uninstall_fritzing.sh

# update databases
echo "Updating databases..."
update-desktop-database "$APPS"
Expand Down
97 changes: 93 additions & 4 deletions uninstall_fritzing.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/bin/bash

# Uninstall script for Fritzing.
# Uninstall script for Fritzing. <WORKING ON IT!>
# Self-destructing.
# Added in by: @johnDaH4x0r

Expand All @@ -10,10 +10,15 @@ PROG="$(basename "$0")"
ID="$(id -u)"
ARGS="$*"

# TODO: remove marker when finished
DEVSTAT="<in_dev>"
export DEVSTAT

# Variables [template]
MODE='{mode}'
FRITZ_DIR='{fritz-dir}'
MIMEDIR='{mimedir}'
MIMES='{mimes}'
APPS='{app-dir}'
BIN='{bin}'

Expand Down Expand Up @@ -52,7 +57,7 @@ arg_err() {
for ARG in $ARGS; do
case $ARG in
'-h' | '--help')
show_help
help_scr
;;
'-m' | '--show-mode')
echo "Installation mode: $MODE" >&2
Expand All @@ -75,6 +80,90 @@ if [[ "$MODE" == "system" && "$ID" -ne 0 ]]; then
exit 1
fi

# ---- UNINSTALL START ---- #
grep -q 'application/x-fritzing' "$MIMES"
if [ $? -eq 0 ]; then
TOWRITE="$(grep -v 'application/x-fritzing' "$MIMES")"
echo "$TOWRITE" > "$MIMES"
else
echo "Fritzing MIME types are not registered. (or are deregistered)"
fi

echo "Entering $(basename "$FRITZ_DIR")/" | tr -s "/"
cd "$FRITZ_DIR"

# Uninstall Fritzing MIME packages
echo "Uninstalling Fritzing MIME types..."
{
xdg-mime uninstall --mode "$MODE" 'icons/x-fritzing-fz.xml' && \
xdg-mime uninstall --mode "$MODE" 'icons/x-fritzing-fzz.xml' && \
xdg-mime uninstall --mode "$MODE" 'icons/x-fritzing-fzp.xml' && \
xdg-mime uninstall --mode "$MODE" 'icons/x-fritzing-fzpz.xml' && \
xdg-mime uninstall --mode "$MODE" 'icons/x-fritzing-fzb.xml' && \
xdg-mime uninstall --mode "$MODE" 'icons/x-fritzing-fzbz.xml' && \
xdg-mime uninstall --mode "$MODE" 'icons/x-fritzing-fzm.xml' ;
}
case $? in
0)
echo "-- TASK ENDED SUCCESSFULLY! --"
;;
1)
echo "AN ERROR OCCURED! PLEASE FIX THE PROBLEMS ABOVE, THEN TRY AGAIN" >&2
echo -e "-*-*-*-*-*-*-*-\n"
exit 1
;;
esac
echo -e "-*-*-*-*-*-*-*-\n"

# Uninstall image-files into mime system with specified size
echo "Uninstalling Fritzing system icons..."
echo "-*-*-*-*-*-*-*-"

{
xdg-icon-resource uninstall --mode "$MODE" --context mimetypes --size 128 'icons/fz_icon128.png' application-x-fritzing-fz && \
xdg-icon-resource uninstall --mode "$MODE" --context mimetypes --size 256 'icons/fz_icon256.png' application-x-fritzing-fz && \
xdg-icon-resource uninstall --mode "$MODE" --context mimetypes --size 128 'icons/fzz_icon128.png' application-x-fritzing-fzz && \
xdg-icon-resource uninstall --mode "$MODE" --context mimetypes --size 256 'icons/fzz_icon256.png' application-x-fritzing-fzz && \
xdg-icon-resource uninstall --mode "$MODE" --context mimetypes --size 128 'icons/fzp_icon128.png' application-x-fritzing-fzp && \
xdg-icon-resource uninstall --mode "$MODE" --context mimetypes --size 256 'icons/fzp_icon256.png' application-x-fritzing-fzp && \
xdg-icon-resource uninstall --mode "$MODE" --context mimetypes --size 128 'icons/fzpz_icon128.png' application-x-fritzing-fzpz && \
xdg-icon-resource uninstall --mode "$MODE" --context mimetypes --size 256 'icons/fzpz_icon256.png' application-x-fritzing-fzpz && \
xdg-icon-resource uninstall --mode "$MODE" --context mimetypes --size 128 'icons/fzb_icon128.png' application-x-fritzing-fzb && \
xdg-icon-resource uninstall --mode "$MODE" --context mimetypes --size 256 'icons/fzb_icon256.png' application-x-fritzing-fzb && \
xdg-icon-resource uninstall --mode "$MODE" --context mimetypes --size 128 'icons/fzbz_icon128.png' application-x-fritzing-fzbz && \
xdg-icon-resource uninstall --mode "$MODE" --context mimetypes --size 256 'icons/fzbz_icon256.png' application-x-fritzing-fzbz && \
xdg-icon-resource uninstall --mode "$MODE" --context mimetypes --size 128 'icons/fzm_icon128.png' application-x-fritzing-fzm && \
xdg-icon-resource uninstall --mode "$MODE" --context mimetypes --size 256 'icons/fzm_icon256.png' application-x-fritzing-fzm ;
}
case $? in
0)
echo "-- TASK ENDED SUCCESSFULLY! --"
;;
1)
echo "AN ERROR OCCURED! PLEASE FIX THE PROBLEMS ABOVE, THEN TRY AGAIN" >&2
echo -e "-*-*-*-*-*-*-*-\n"
exit 1
;;
esac
echo -e "-*-*-*-*-*-*-*-\n"

# Remove 'Fritzing' symlink
echo "Removing symlinks..."
rm -f "$BIN"/Fritzing 2>/dev/null

echo "Leaving $(basename "$FRITZ_DIR")/" | tr -s "/"
cd -

echo "Deleting $(basename "$FRITZ_DIR")/" | tr -s "/"
rm -rf "$FRITZ_DIR"

echo "Removing desktop file..."
rm -f "$APPS"/fritzing.desktop

echo "Updating databases..."
update-desktop-database "$APPS"
update-mime-database "$MIMEDIR"

# -- SCRIPT END-OF-LIFE <you know, self-destruction> -- #
# echo "Removing residues..."
# rm -f "$PROGPATH"
echo "Removing residues..."
rm -f "$PROGPATH"

0 comments on commit 681fb82

Please sign in to comment.