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
8,253 个月下载量
在 3 个crate中(直接使用2个) 使用
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