The rewrite is focused on the following five areas of interest:
1. Portability. The scripts have been tested to work in recent versions
of the following operating systems and shells: macOS, Linux (Fedora,
Debian, Ubuntu, openSUSE, Arch, Alpine, NixOS), BSD (FreeBSD,
OpenBSD, NetBSD, DragonFly), SunOS (Solaris, OpenIndiana), Haiku;
bash, dash, ash, ksh, oksh, zsh, XPG4 sh, pdksh, mksh, yash, posh,
gwsh, bosh, osh.
2. Robustness. Employ secure shell scripting techniques, incorporate
battle-tested open source code, clear all ShellCheck warnings, and
fail early.
3. Composability. Put (almost) everything inside functions and make the
scripts dot source friendly.
4. Consistency. Use tput to abstract away terminal color codes, write
templated diagnostic messages and follow conventions in the use of
exit status and redirections.
5. Readability. Comment extensively, assign descriptive names to
variables and functions, and use here-documents to ease reading and
writing multi-line messages.
Known behavioral changes:
1. There are changes to the way some options are parsed and acted on.
For example, when both the -l and -p options are specified, -l will
be ignored; in the old behavior, the last specified option would
take effect. Also, an old quirk where passing the argument 'list' to
-p was equivalent to specifying the -l option has been fixed.
2. The -h, -l and -p options of updater.sh have been added to
prefsCleaner.sh as well.
3. All temporary files are now created using mktemp and no longer
actively deleted, so users won't find them in the working directory
anymore in the case of error.
4. The old prefs.js cleaning logic, which relied on non-POSIX features,
is not preserved in the rewrite.
Resolves#1855Resolves#1446Fixes#1810
* updater.sh/prefsCleaner.sh: Check for root and abort
Check if running as root and if any files have the owner/group as root|wheel.
Abort on both.
Should (hopefully) prevent stuff like: https://github.com/arkenfox/user.js/issues/1587
Discussion: https://github.com/arkenfox/user.js/pull/1595
---------
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
Co-authored-by: earthlng <earthlng@users.noreply.github.com>
Changed permissions of prefsCleaner.sh from 644 to 755 to be able to run it via "./prefsCleaner.sh" with out first executing "chmod +x prefsCleaner.sh".
- add -s parameter to start immediately / skip prompt / run non-interactive
This is useful if the user wants to automate the process of updating the user.js and cleaning prefs.
- fQuit: error messages to stderr
- fFF_check: info msg to stderr
Better support for suppressing/redirecting stdout while still showing any error messages in the console, useful for example with `prefsCleaner.sh -s >/dev/null`