MCPcopy Create free account
hub / github.com/CodSpeedHQ/codspeed / get_memtrack_status

Function get_memtrack_status

src/executor/memory/setup.rs:96–157  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

94}
95
96pub fn get_memtrack_status() -> ToolStatus {
97 let tool_name = MEMTRACK_COMMAND.to_string();
98
99 let is_available = Command::new("which")
100 .arg(MEMTRACK_COMMAND)
101 .output()
102 .is_ok_and(|output| output.status.success());
103 if !is_available {
104 return ToolStatus {
105 tool_name,
106 status: ToolInstallStatus::NotInstalled,
107 };
108 }
109
110 let Ok(version_output) = Command::new(MEMTRACK_COMMAND).arg("--version").output() else {
111 return ToolStatus {
112 tool_name,
113 status: ToolInstallStatus::NotInstalled,
114 };
115 };
116
117 if !version_output.status.success() {
118 return ToolStatus {
119 tool_name,
120 status: ToolInstallStatus::NotInstalled,
121 };
122 }
123
124 let version = String::from_utf8_lossy(&version_output.stdout)
125 .trim()
126 .to_string();
127
128 // Parse the version number from output like "memtrack 1.2.2"
129 let expected = semver::Version::parse(MEMTRACK_CODSPEED_VERSION).unwrap();
130 if let Some(version_str) = version.split_once(' ').map(|(_, v)| v.trim()) {
131 if let Ok(installed) = semver::Version::parse(version_str) {
132 if installed < expected {
133 return ToolStatus {
134 tool_name,
135 status: ToolInstallStatus::IncorrectVersion {
136 version,
137 message: format!(
138 "version too old, expecting {MEMTRACK_CODSPEED_VERSION} or higher",
139 ),
140 },
141 };
142 }
143 return ToolStatus {
144 tool_name,
145 status: ToolInstallStatus::Installed { version },
146 };
147 }
148 }
149
150 ToolStatus {
151 tool_name,
152 status: ToolInstallStatus::IncorrectVersion {
153 version,

Callers 1

tool_statusMethod · 0.85

Calls 1

argMethod · 0.80

Tested by

no test coverage detected