Skip to content

Commit c388a06

Browse files
committed
Also auto-install nmap if it's missing.
1 parent 9f69e12 commit c388a06

File tree

1 file changed

+103
-0
lines changed

1 file changed

+103
-0
lines changed

scripts/setup

+103
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,109 @@ function fail()
4545
exit -1
4646
}
4747

48+
#
49+
# Sets os_platform and os_arch.
50+
#
51+
function detect_os()
52+
{
53+
os_platform="$(uname -s)"
54+
os_arch="$(uname -m)"
55+
}
56+
57+
#
58+
# Auto-detect the package manager.
59+
#
60+
function detect_package_manager()
61+
{
62+
case "$os_platform" in
63+
Linux)
64+
if [[ -f /etc/redhat-release ]]; then
65+
if command -v dnf >/dev/null; then
66+
package_manager="dnf"
67+
elif command -v yum >/dev/null; then
68+
package_manager="yum"
69+
fi
70+
elif [[ -f /etc/debian_version ]]; then
71+
if command -v apt-get >/dev/null; then
72+
package_manager="apt"
73+
fi
74+
elif [[ -f /etc/SuSE-release ]]; then
75+
if command -v zypper >/dev/null; then
76+
package_manager="zypper"
77+
fi
78+
elif [[ -f /etc/arch-release ]]; then
79+
if command -v pacman >/dev/null; then
80+
package_manager="pacman"
81+
fi
82+
elif [[ -f /etc/os-release ]]; then
83+
if command -v pacman >/dev/null; then
84+
package_manager="pacman"
85+
elif command -v zypper >/dev/null; then
86+
package_manager="zypper"
87+
fi
88+
elif [[ "$HOME" == *"com.termux"* ]]; then
89+
package_manager="termux"
90+
fi
91+
;;
92+
Darwin)
93+
if command -v brew >/dev/null; then
94+
package_manager="brew"
95+
elif command -v port >/dev/null; then
96+
package_manager="port"
97+
fi
98+
;;
99+
*BSD)
100+
if command -v pkg >/dev/null; then
101+
package_manager="pkg"
102+
fi
103+
;;
104+
esac
105+
}
106+
107+
#
108+
# Detects the system.
109+
#
110+
function detect_system()
111+
{
112+
detect_os
113+
detect_package_manager
114+
}
115+
116+
#
117+
# Installs a list of package names using the detected package manager.
118+
#
119+
function install_packages()
120+
{
121+
case "$package_manager" in
122+
apt) $sudo apt-get install -y "$@" || return $? ;;
123+
dnf|yum)$sudo $package_manager install -y "$@" || return $? ;;
124+
port) $sudo port install "$@" || return $? ;;
125+
pkg) $sudo pkg install -y "$@" || return $? ;;
126+
brew)
127+
local brew_owner="$(/usr/bin/stat -f %Su "$(command -v brew)")"
128+
sudo -u "$brew_owner" brew install "$@" ||
129+
sudo -u "$brew_owner" brew upgrade "$@" || return $?
130+
;;
131+
pacman)
132+
local missing_pkgs=($(pacman -T "$@"))
133+
134+
if (( ${#missing_pkgs[@]} > 0 )); then
135+
$sudo pacman -Sy --noconfirm "${missing_pkgs[@]}" || return $?
136+
fi
137+
;;
138+
zypper) $sudo zypper -n in -l $* || return $? ;;
139+
termux) pkg install -y "$@" || return $? ;;
140+
"") warn "Could not determine Package Manager. Proceeding anyway." ;;
141+
esac
142+
}
143+
144+
if ! command -v nmap >/dev/null; then
145+
detect_system
146+
147+
log "Installing nmap ..."
148+
install_packages nmap || warn "Could not install nmap. Proceeding anyways ..."
149+
fi
150+
48151
# default to installing gems into vendor/bundle
49152
if [[ ! -f .bundle/config ]]; then
50153
bundle config set --local path vendor/bundle >/dev/null || \

0 commit comments

Comments
 (0)