#[non_exhaustive]pub struct StackInput<'a> { /* private fields */ }Expand description
Inputs used by StackDetector to resolve a stack.
Build one with StackInput::new and the chainable setters. The detector
uses image, process, and project config metadata. Config detection is
guarded to avoid false positives: a config label can win only when the
process label is a StackKind::Runtime or StackKind::Tool, or when the
process is unknown but its executable belongs to the project (see
StackDetector). A known runtime or tool accepts
only config labels from its own ecosystem.
§Examples
use std::path::Path;
use what_stack::StackInput;
let input = StackInput::new("node")
.exe_name("node.exe")
.project_root(Path::new("/workspace/web"))
.image(None);Implementations§
Source§impl<'a> StackInput<'a>
impl<'a> StackInput<'a>
Sourcepub const fn new(process_name: &'a str) -> Self
pub const fn new(process_name: &'a str) -> Self
Create an input from a process name taken from the process table.
Pass an empty string when no process name is available.
Sourcepub fn image(self, image: impl Into<Option<&'a str>>) -> Self
pub fn image(self, image: impl Into<Option<&'a str>>) -> Self
Set the container or artifact image name.
Images are checked first because they usually identify services such as
databases more precisely than process names. Accepts a &str or an
Option<&str>.
Sourcepub fn project_root(self, project_root: impl Into<Option<&'a Path>>) -> Self
pub fn project_root(self, project_root: impl Into<Option<&'a Path>>) -> Self
Set the project root directory.
The directory itself is scanned; parent and child directories are not
searched by stack detection. Use
StackDetector::detect_project_root
first when starting from process paths. Accepts a &Path or an
Option<&Path>.
Sourcepub fn exe_name(self, exe_name: impl Into<Option<&'a str>>) -> Self
pub fn exe_name(self, exe_name: impl Into<Option<&'a str>>) -> Self
Set the executable file name taken from the executable path.
This is used as a fallback when the process name is truncated or less
specific. Accepts a &str or an Option<&str>.
Sourcepub fn exe_path(self, exe_path: impl Into<Option<&'a Path>>) -> Self
pub fn exe_path(self, exe_path: impl Into<Option<&'a Path>>) -> Self
Set the full executable path.
The executable is not read. Its path is used only to decide whether
config detection is allowed for an unknown process name: it is when the
executable lies inside the project root, in a go-build* directory
from go run, or in the target directory of an enclosing Cargo
workspace. Accepts a &Path or an Option<&Path>.