2021-04-27 04:37:17 -04:00
/ *
SysUtils - a library to assist with various system - related functions
Copyright ( C ) 2020 Brent Saner
This program is free software : you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation , either version 3 of the License , or
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with this program . If not , see < https : //www.gnu.org/licenses/>.
* /
package terminal
import (
"os"
)
// IsShell returns true if the program is running inside an interactive shell (interactive invocation, sudo, etc.), and false if not (cron, ssh exec, pipe, etc.).
// Thanks to https://rosettacode.org/wiki/Check_output_device_is_a_terminal#Go
func IsShell ( ) ( interactive bool ) {
var stdoutStat os . FileInfo
stdoutStat , _ = os . Stdout . Stat ( )
2021-12-18 04:23:35 -05:00
if ( stdoutStat . Mode ( ) & os . ModeCharDevice ) != 0 {
interactive = true
2021-04-27 04:37:17 -04:00
}
return
}