42 lines
2.1 KiB
Plaintext
42 lines
2.1 KiB
Plaintext
use std log
|
|
|
|
def addcap [binpath: path] {
|
|
if ($nu.os-info.name == "linux") {
|
|
print $"(ansi red)Warning(ansi reset): To access the PIDs of applications running as root or other users, you need to add the following capabilities to the plugin binary: net_admin, sys_ptrace, dac_read_search."
|
|
print $"(ansi red)sudo setcap 'cap_net_admin,cap_sys_ptrace,cap_dac_read_search=ep' '($binpath)'(ansi reset)"
|
|
print "Do you want to run this command with sudo? [y/N]"
|
|
|
|
match (input listen --types [key]) {
|
|
{code: $key} if ($key | str downcase) == "y" => {
|
|
let caps = (['cap_net_admin', 'cap_sys_ptrace', 'cap_dac_read_search'] | input list --multi "Choose which specific capabilities you want to add" | str join ",")
|
|
let cmd = $"setcap '($caps)=ep' '($binpath)'"
|
|
print $"Executing `($cmd)` with sudo."
|
|
sh -c $"sudo ($cmd)"
|
|
}
|
|
_ => {
|
|
print "If you prefer to add the capabilities manually, use the following command:"
|
|
print $"sudo setcap 'cap_net_admin,cap_sys_ptrace,cap_dac_read_search=ep' '($binpath)'"
|
|
}
|
|
}
|
|
} else if ($nu.os-info.name == "windows") {
|
|
print $"(ansi red)For Windows Users(ansi reset): The plugin is installed successfully but keep in mind in order to fetch all executables information you must run nushell as administrator"
|
|
}
|
|
}
|
|
|
|
def main [package_file: path] {
|
|
|
|
let repo_root = $package_file | path dirname
|
|
let install_root = $env.NUPM_HOME | path join "plugins"
|
|
|
|
let name = open ($repo_root | path join "Cargo.toml") | get package.name
|
|
let cmd = $"cargo install --path ($repo_root) --root ($install_root)"
|
|
log info $"building plugin using: (ansi blue)($cmd)(ansi reset)"
|
|
nu -c $cmd
|
|
let ext: string = if ($nu.os-info.name == 'windows') { '.exe' } else { '' }
|
|
let bin_path = $"($install_root | path join "bin" $name)($ext)"
|
|
plugin add $bin_path
|
|
addcap $bin_path
|
|
|
|
log info "do not forget to restart Nushell for the plugin to be fully available!"
|
|
}
|