mirror of
https://github.com/anchore/syft
synced 2024-11-13 23:57:07 +00:00
256e85bc12
add syft attest command to produce an attestation as application/vnd.in-toto+json to standard out using on disk PKI Signed-off-by: Christopher Phillips <christopher.phillips@anchore.com>
26 lines
975 B
Go
26 lines
975 B
Go
package internal
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
)
|
|
|
|
// IsPipedInput returns true if there is no input device, which means the user **may** be providing input via a pipe.
|
|
func IsPipedInput() (bool, error) {
|
|
fi, err := os.Stdin.Stat()
|
|
if err != nil {
|
|
return false, fmt.Errorf("unable to determine if there is piped input: %w", err)
|
|
}
|
|
|
|
// note: we should NOT use the absence of a character device here as the hint that there may be input expected
|
|
// on stdin, as running syft as a subprocess you would expect no character device to be present but input can
|
|
// be from either stdin or indicated by the CLI. Checking if stdin is a pipe is the most direct way to determine
|
|
// if there *may* be bytes that will show up on stdin that should be used for the analysis source.
|
|
return fi.Mode()&os.ModeNamedPipe != 0, nil
|
|
}
|
|
|
|
// IsTerminal returns true if there is a terminal present.
|
|
func IsTerminal() bool {
|
|
stat, _ := os.Stdin.Stat()
|
|
return (stat.Mode() & os.ModeCharDevice) != 0
|
|
}
|