2021年8月11日水曜日

reminders-cli

 reminders-cliなるものをinstallした。
 Emacsとリマインダーのあいだで連携できないか、と。
 ところがEmacsの中でremindersがうまく動かない。

yamada@MacBookAir ~ % reminders show-lists
reminders show-lists
2021-08-07 20:30:37.330 reminders[39814:1483191] CoreData: XPC: Unable to load metadata: Error  Domain=NSCocoaErrorDomain  Code=134070  "An error occurred in the persistent store."  UserInfo={ Problem=request failed, insufficient permission}
CoreData: error: -addPersistentStoreWithType:NSXPCStore configuration:(null) URL:file:///Users/yamada/Library/Calendars/Calendar%20Cache options:{
     NSInferMappingModelAutomaticallyOption = 1;
     NSMigratePersistentStoresAutomaticallyOption = 1;
     NSPersistentHistoryTrackingKey =     {
         NSPersistentHistoryTrackingEntitiesToExclude =         (
            ChangeRequest
        );
    };
     agentOrDaemon = 1;
     serviceName =  "com.apple.CalendarAgent.database";
} ... returned error NSCocoaErrorDomain(134070) with userInfo dictionary {
     Problem =  "request failed, insufficient permission";
}
You need to grant reminders access
yamada@MacBookAir ~ % 

 どうやら下記のアクセス許可をオンにしなければ、いけないらしい。

 ところが設定する方法がわからない。本来、remindersを動かしたときに下記のようなダイアログがでるはずなのだが、それがでない。

 ターミナルからやったときはでた。
 Emacsはアプリケーションと認識されていないかもしれない。そもそもCatalina以降、 Emacsを動かすためにrubyにたいしてアクセス権限をつけなければ、ならなかった。ということはたぶんrubyにリマンダーへのアクセス権限を付与しなければ、いけない 1。ところが設定するためのダイアログがでない。結果、rubyが「セキュリティとプライバシー」に追加されない。悪循環だ。
 これははまっちまったか。

 待てよ。
 Automaterに権限をつけてそこからemacsを立ち上げれば、いいんじゃないか。

 まずAutomaterからreminedersを実行してダイアログがでたのでそれで権限を付与。
 そのあと、emacsを実行するアプリケーションを作成 2

 作成したappから実行したemacsの中でremindersを動かしたらダイアログがあわれた。あれ? Automaterに権限をつける必要はなかった? そのダイアログから権限を付与したら無事、emacsの中でremindersが動いた。

Footnotes:

1

その傍証に、権限を付与したターミナルからemacsを立ち上げれば、remindersはちゃんと動くのである。

2

ただしこれはbrewからcaskのemacsをinstallしていたかららしい。なのでEmacs.appを叩くには

/Applications/Emacs.app/Contents/MacOS/Emacs