El Capitanになってからボリューム名に濁点が入っている、というかUTF-8-MAC問題に引っかかる名前だと一覧から正常にmountできなくなっているのでそれ用の対策コード。
実際にはこれをそのまま使うよりserver変数に直接サーバ名入れて、Automatorでサービスとして登録しておいたほうが楽。
#!/usr/bin/env osascript -l JavaScript | |
// vi:set sts=4 sw=4 et: | |
'use strict'; | |
function run(argv) { | |
if (argv.length != 1) { | |
console.log("smbmount <url>"); | |
} | |
// 接続先を指定 | |
var server = argv[0]; | |
var app = Application.currentApplication(); | |
app.includeStandardAdditions = true; | |
// smbutilコマンドでボリューム一覧を取得する | |
var volumes = app.doShellScript('smbutil view '+server).split("\r").map( | |
function (l) { | |
var col = l.split(/\s+/); | |
if (col[1] === 'Disk') { | |
return col[0]; | |
} | |
}).filter(function (l) { return l }).sort(); | |
// ボリューム選択ダイアログを表示する | |
var volume = app.chooseFromList(volumes, | |
{ "withPrompt": '"'+server+'"上のマウントするボリュームを選択してください:'}); | |
// 選択されたボリュームを開く | |
if (Array.isArray(volume)) { | |
// Pathオブジェクト化してtoStringするとUTF-8-MACに変換できる | |
var url = server+'/'+encodeURIComponent(Path('/'+volume[0]).toString().slice(1)); | |
app.openLocation(url); | |
} | |
} |