#javascript #macos #script #system #access #applescript #osa

osascript

通过 OSA 在 macOS 上提供简化的 JavaScript 访问

3 份发布 (破坏性)

使用旧的 Rust 2015

0.3.0 2017 年 5 月 24 日
0.2.0 2017 年 3 月 24 日
0.1.0 2017 年 3 月 24 日

#103 in macOS 和 iOS API

Download history 2673/week @ 2024-02-27 2685/week @ 2024-03-05 3102/week @ 2024-03-12 4688/week @ 2024-03-19 4699/week @ 2024-03-26 3826/week @ 2024-04-02 4530/week @ 2024-04-09 3255/week @ 2024-04-16 3240/week @ 2024-04-23 3576/week @ 2024-04-30 2559/week @ 2024-05-07 2114/week @ 2024-05-14 2082/week @ 2024-05-21 2287/week @ 2024-05-28 1890/week @ 2024-06-04 1705/week @ 2024-06-11

8,253 个月下载量
3 个crate中(直接使用2个) 使用

BSD-3-Clause

6KB
88 代码行数(不包括注释)

rust-osascript

此库实现了围绕 OS X 上的 OSA 系统的简化包装,以通过 JavaScript 远程控制应用程序。


lib.rs:

此库实现了 macOS 上 OSA 系统的有限功能。特别是,它允许您通过 OSA 系统执行 JavaScript 以脚本应用程序。如果您需要告诉其他应用程序执行某些功能,则特别有用。

目前仅支持 JavaScript。传递给它的参数显示为 $params,而脚本的返回值(使用 return 关键字返回)稍后反序列化。

示例

extern crate osascript;
#[macro_use] extern crate serde_derive;

#[derive(Serialize)]
struct AlertParams {
    title: String,
    message: String,
    alert_type: String,
    buttons: Vec<String>,
}

#[derive(Deserialize)]
struct AlertResult {
    #[serde(rename="buttonReturned")]
    button: String,
}

fn main() {
    let script = osascript::JavaScript::new("
        var App = Application('Finder');
        App.includeStandardAdditions = true;
        return App.displayAlert($params.title, {
            message: $params.message,
            'as': $params.alert_type,
            buttons: $params.buttons,
        });
    ");

    let rv: AlertResult = script.execute_with_params(AlertParams {
        title: "Shit is on fire!".into(),
        message: "What is happening".into(),
        alert_type: "critical".into(),
        buttons: vec![
            "Show details".into(),
            "Ignore".into(),
        ]
    }).unwrap();

    println!("You clicked '{}'", rv.button);
}

依赖关系

~0.6–1.4MB
~32K SLoC