aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/%HOME%/.bash_utils/os.sh
diff options
context:
space:
mode:
authorEgor Tensin <Egor.Tensin@gmail.com>2016-12-24 06:55:04 +0300
committerEgor Tensin <Egor.Tensin@gmail.com>2016-12-24 06:55:04 +0300
commit9dd9df41c4e4fb989c98274753c173ddef7065dc (patch)
treead38a083ddec5f5233a52f6ce5993bcc9699084a /%HOME%/.bash_utils/os.sh
parent.gitconfig: core.autocrlf = input (diff)
downloadlinux-home-9dd9df41c4e4fb989c98274753c173ddef7065dc.tar.gz
linux-home-9dd9df41c4e4fb989c98274753c173ddef7065dc.zip
split .bashrc into os.sh, ruby.sh
Diffstat (limited to '')
-rw-r--r--%HOME%/.bash_utils/os.sh65
1 files changed, 65 insertions, 0 deletions
diff --git a/%HOME%/.bash_utils/os.sh b/%HOME%/.bash_utils/os.sh
new file mode 100644
index 0000000..faada73
--- /dev/null
+++ b/%HOME%/.bash_utils/os.sh
@@ -0,0 +1,65 @@
+#!/usr/bin/env bash
+
+_os=''
+
+detect_os() {
+ command -v uname > /dev/null \
+ && [ "$( uname -o )" == 'Cygwin' ] \
+ && _os='Cygwin' \
+ && return 0
+
+ [ -r /etc/os-release ] \
+ && _os="$( . /etc/os-release && echo "$NAME" )" \
+ && return 0
+
+ return 1
+}
+
+detect_os
+
+os_detected() {
+ test -n "$_os"
+}
+
+is_cygwin() {
+ test "$_os" == 'Cygwin'
+}
+
+is_ubuntu() {
+ test "$_os" == 'Ubuntu'
+}
+
+list_manually_installed_packages_ubuntu() (
+ set -o errexit -o nounset -o pipefail
+
+ comm -23 <( apt-mark showmanual | sort | uniq ) \
+ <( gzip --decompress --stdout -- /var/log/installer/initial-status.gz | sed --quiet 's/^Package: //p' | sort | uniq )
+)
+
+list_packages_cygwin() (
+ set -o errexit -o nounset -o pipefail
+
+ cygcheck --check-setup --dump-only \
+ | tail -n +3 \
+ | cut -d ' ' -f 1
+)
+
+list_packages_ubuntu() (
+ set -o errexit -o nounset -o pipefail
+
+ dpkg --get-selections \
+ | grep --invert-match -- 'deinstall$' \
+ | cut -f 1 \
+ | cut -d ':' -f 1
+)
+
+list_packages() (
+ set -o errexit -o nounset -o pipefail
+
+ if is_cygwin; then
+ list_packages_cygwin
+ elif is_ubuntu; then
+ list_packages_ubuntu
+ fi
+ return 1
+)