@@ -45,6 +45,109 @@ function fail()
45
45
exit -1
46
46
}
47
47
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
+
48
151
# default to installing gems into vendor/bundle
49
152
if [[ ! -f .bundle/config ]]; then
50
153
bundle config set --local path vendor/bundle > /dev/null || \
0 commit comments