skip/
lib.rs

1// Copyright 2024 Heath Stewart.
2// Licensed under the MIT License. See LICENSE.txt in the project root for license information.
3
4use msica::prelude::*;
5
6#[no_mangle]
7pub extern "C" fn SkipExampleCustomAction(session: Session) -> CustomActionResult {
8    let deferred = session.mode(RunMode::Scheduled);
9    match deferred {
10        false => {
11            let data = session.property("SKIP")?;
12            if data == "1" {
13                return Skip;
14            }
15            session.do_deferred_action("SkipExampleCustomActionDeferred", data.as_str())?;
16        }
17        true => {
18            let data = session.property("CustomActionData")?;
19            if data.is_empty() {
20                return Success;
21            }
22
23            // Unnecessarily parsing the string demonstrates using ? for any possible error.
24            let data = data.parse::<u32>()?;
25            if data == 2 {
26                return Skip;
27            }
28        }
29    }
30    Success
31}