Forçar um aplicativo a executar uma das suas opções de menu a partir de um script de shell?

4

Existe alguma maneira de forçar o aplicativo para executar uma de suas opções de menu, se não houver interface de linha de comando disponível?

Talvez um tipo de automação?

EXEMPLO

Gostaria de executar o comando "File & gt; Export Feeds" do NewsFire para fazer backup da lista de feeds (arquivo OPML). Tentei rodar o NewsFire através do Terminal com "--help" mas sem sorte.

Aqui está o script de backup que eu uso atualmente, no caso de alguém achar útil. Ele pode ser usado para salvar e restaurar o estado do NewsFire em várias máquinas (para restaurá-lo cd ~ , e depois unzip backup.zip ).

#! /bin/bash
#
# Backup NewsFire preferences, feeds and cache (everything)
#

D_DESTFILE=~/Backups/Config/NewsFire.zip

# Don't update archive, create new one
if [ -e "$D_DESTFILE" ]; then
  rm $D_DESTFILE
fi

cd ~
zip -r $D_DESTFILE Library/Application\ Support/NewsFire Library/Caches/org.xlife.NewsFire Library/Preferences/org.xlife.NewsFire.plist
Bleep Bloop
fonte

Respostas:

1

Este é um começo de um AppleScript para fazer a exportação:

set filename to "test file"

tell application "NetNewsWire" to activate
tell application "System Events"
    tell process "NetNewsWire"
        click menu item "Export Subscriptions…" of menu "File" of menu bar 1
        set value of first text field of first sheet of first window to filename
        click button "Save" of first sheet of first window
    end tell
end tell

tell application "NetNewsWire" to quit

Ele salvará o arquivo exportado com o nome do arquivo definido no local que foi usado pela última vez para exportar. Ele não substituirá um arquivo existente no momento, portanto, talvez você possa salvá-lo em um local temporário e movê-lo com um script separado.

Nota : Minha cópia do NetNewsWire tinha o comando de menu "Exportar Subscrições ...", não "Exportar Feeds", mas se o seu é diferente, apenas altere o nome do item de menu na linha 6.

Editar para adicionar : Você também precisa ter "Habilitar acesso para dispositivos auxiliares" no painel de preferências do sistema de acesso universal definido como habilitado para que isso funcione.

Lizzan
fonte