MCPcopy Create free account
hub / github.com/NVIDIA/OpenShell / rewrite_text_placeholders

Method rewrite_text_placeholders

crates/openshell-core/src/secrets.rs:304–362  ·  view source on GitHub ↗
(
        &self,
        text: &mut String,
        location: &'static str,
    )

Source from the content-addressed store, hash-verified

302 }
303
304 pub fn rewrite_text_placeholders(
305 &self,
306 text: &mut String,
307 location: &'static str,
308 ) -> Result<usize, UnresolvedPlaceholderError> {
309 if !contains_raw_reserved_marker(text) {
310 return Ok(0);
311 }
312
313 let mut rewritten = String::with_capacity(text.len());
314 let mut pos = 0;
315 let mut replacements = 0;
316
317 while pos < text.len() {
318 let next_canonical = text[pos..].find(PLACEHOLDER_PREFIX).map(|p| pos + p);
319 let next_alias = text[pos..].find(PROVIDER_ALIAS_MARKER).map(|marker_pos| {
320 let marker_abs = pos + marker_pos;
321 alias_start_for_marker(text, marker_abs)
322 });
323 let Some(abs_start) = [next_canonical, next_alias].into_iter().flatten().min() else {
324 rewritten.push_str(&text[pos..]);
325 break;
326 };
327
328 rewritten.push_str(&text[pos..abs_start]);
329
330 if text[abs_start..].starts_with(PLACEHOLDER_PREFIX) {
331 let Some((token_end, token)) = self.credential_token_at(text, abs_start) else {
332 return Err(UnresolvedPlaceholderError { location });
333 };
334 let Some(secret) = self.resolve_placeholder(token) else {
335 return Err(UnresolvedPlaceholderError { location });
336 };
337 rewritten.push_str(secret);
338 replacements += 1;
339 pos = token_end;
340 continue;
341 }
342
343 if let Some((token_end, token)) = alias_token_at(text, abs_start) {
344 let Some(secret) = self.resolve_placeholder(token) else {
345 return Err(UnresolvedPlaceholderError { location });
346 };
347 rewritten.push_str(secret);
348 replacements += 1;
349 pos = token_end;
350 continue;
351 }
352
353 return Err(UnresolvedPlaceholderError { location });
354 }
355
356 if contains_raw_reserved_marker(&rewritten) {
357 return Err(UnresolvedPlaceholderError { location });
358 }
359
360 *text = rewritten;
361 Ok(replacements)

Calls 6

alias_start_for_markerFunction · 0.85
alias_token_atFunction · 0.85
lenMethod · 0.80
credential_token_atMethod · 0.80
resolve_placeholderMethod · 0.80

Tested by

no test coverage detected