MCPcopy Create free account
hub / github.com/NativeScript/SimDeck / parse_tap_command_args

Function parse_tap_command_args

packages/server/src/main.rs:3225–3300  ·  view source on GitHub ↗
(
    args: Vec<String>,
    id: Option<String>,
    label: Option<String>,
    value: Option<String>,
    element_type: Option<String>,
)

Source from the content-addressed store, hash-verified

3223}
3224
3225fn parse_tap_command_args(
3226 args: Vec<String>,
3227 id: Option<String>,
3228 label: Option<String>,
3229 value: Option<String>,
3230 element_type: Option<String>,
3231) -> anyhow::Result<TapCommandTarget> {
3232 let mut target = TapCommandTarget {
3233 selector: ElementSelector {
3234 id,
3235 label,
3236 value,
3237 element_type,
3238 index: None,
3239 },
3240 ..Default::default()
3241 };
3242
3243 let args = args
3244 .into_iter()
3245 .map(|arg| arg.trim().to_owned())
3246 .filter(|arg| !arg.is_empty())
3247 .collect::<Vec<_>>();
3248
3249 if !target.selector.is_empty() {
3250 match args.as_slice() {
3251 [] => return Ok(target),
3252 [udid] => {
3253 target.udid = Some(udid.clone());
3254 return Ok(target);
3255 }
3256 _ => anyhow::bail!(
3257 "tap accepts at most one positional UDID when selector flags are used."
3258 ),
3259 }
3260 }
3261
3262 if args.is_empty() {
3263 return Ok(target);
3264 }
3265
3266 let (udid, target_args) = if args.len() >= 2 && looks_like_device_selector(&args[0]) {
3267 (Some(args[0].clone()), &args[1..])
3268 } else {
3269 (None, args.as_slice())
3270 };
3271 target.udid = udid;
3272
3273 if target_args.len() == 2 {
3274 if let (Some(x), Some(y)) = (
3275 parse_f64_arg(&target_args[0]),
3276 parse_f64_arg(&target_args[1]),
3277 ) {
3278 target.x = Some(x);
3279 target.y = Some(y);
3280 return Ok(target);
3281 }
3282 }

Calls 5

parse_f64_argFunction · 0.85
parse_agent_refFunction · 0.85
is_emptyMethod · 0.80
cloneMethod · 0.65