use ../lib_provisioning/utils * export def clip_copy [ msg: string show: bool ]: nothing -> nothing { if ( (version).installed_plugins | str contains "clipboard" ) { $msg | clipboard copy print $"(_ansi default_dimmed)copied into clipboard now (_ansi reset)" } else { if (not $show) { _print $msg } } } export def notify_msg [ title: string body: string icon: string time_body: string timeout: duration task?: closure ]: nothing -> nothing { if ( (version).installed_plugins | str contains "desktop_notifications" ) { if $task != null { ( notify -s $title -t $time_body --timeout $timeout -i $icon) } else { ( notify -s $title -t $body --timeout $timeout -i $icon) } } else { if $task != null { _print ( $"(_ansi blue)($title)(_ansi reset)\n(ansi blue_bold)($time_body)(_ansi reset)" ) } else { _print ( $"(_ansi blue)($title)(_ansi reset)\n(ansi blue_bold)($body)(_ansi reset)" ) } } } export def show_qr [ url: string ]: nothing -> nothing { if ( (version).installed_plugins | str contains "qr_maker" ) { print $"(_ansi blue_reverse)( $url | to qr )(_ansi reset)" } else { let qr_path = ($env.PROVISIONING_RESOURCES | path join "qrs" | path join ($env.PROVISIONING | ($url | path basename) )) if ($qr_path | path exists) { _print (open -r $qr_path) } else { _print $"(_ansi blue_reverse)( $url)(_ansi reset)" _print $"(_ansi purple)($url)(_ansi reset)" } } } export def port_scan [ ip: string port: int sec_timeout: int ]: nothing -> bool { let wait_duration = ($"($sec_timeout)sec"| into duration) if ( (version).installed_plugins | str contains "port_scan" ) { (port scan $ip $port -t $wait_duration).is_open } else { (^nc -zv -w $sec_timeout ($ip | str trim) $port err> (if $nu.os-info.name == "windows" { "NUL" } else { "/dev/null" })| complete).exit_code == 0 } }