Crie um script bash para abrir o URL no Mac OS X

3

Eu quero que o OS X abra, de forma inteligente, git URLs, primeiro tentando abrir sua página de repo no GitHub e, em seguida, voltando para algo como GitBox.app .

Eu achei esta pergunta extremamente útil, e eu criei um aplicativo Automator para envolver um script bash (que faz tudo do material inteligente), e usou RCDefaultApp para definir o OS X para usar o aplicativo do meu automator para abrir git:// URLs.

Isso não funcionou, então tentei depurar alguns. Eu configurei meu script bash para gerar seus argumentos para /tmp/output.txt , e acontece que o script não está recebendo nenhum argumento de linha de comando . Se eu definir o OS X para usar esse mesmo aplicativo de automação como o aplicativo padrão para *.txt files, o script bash obterá corretamente o caminho do arquivo como o primeiro argumento, mas não funcionará com URLs. Alguma ideia de como fazer isso funcionar?

Além disso, estou executando 10.7.

Editar: Veja um instantâneo do aplicativo Automator:

E aqui está o texto desse simples script bash (não o que eu realmente usaria para abrir as git:// URLs, mas demonstra a falta de argumentos:

rm -f /tmp/output.txt
echo $0 >> /tmp/output.txt
echo $* >> /tmp/output.txt

E a única saída que recebo em /tmp/output.txt é:

-
    
por aaron 02.01.2012 / 05:16

1 resposta

4

Não funciona assim, porque o OS X não trata arquivos, pastas e URLs, que são apenas argumentos de linha de comando para os programas associados em outros sistemas, como outras plataformas. Programas de Automator realmente só podem manipular arquivos e pastas.

Você precisa criar um aplicativo baseado em AppleScript, que responde a open location .

Abra o AppleScript Editor e cole o seguinte código (alterando o script, é claro):

on open location myURL
    do shell script "echo " & myURL & " > /Users/danielbeck/test"
end open location

Salvar como aplicativo . Em seguida, selecione o pacote de aplicativos que você acabou de criar, clique com o botão direito, Mostrar conteúdo do pacote e edite Contents/Info.plist usando um editor de texto (após converter para XML usando plutil na linha de comando, se for binário ), ou o editor padrão que faz parte das ferramentas de desenvolvimento da Apple.

Adicione o seguinte à sua estrutura de nível superior (a captura de tela é como parece no Xcode atual, o XML é o que você adicionaria em um editor de texto):

enter image description here

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>openme</string>
        </array>
        <key>CFBundleURLName</key>
        <string>AppleScript Testing URL</string>
    </dict>
</array>

Isso associará openme:// URLs a esse aplicativo. Salve, mova o programa para uma pasta diferente e volte para atualizar os Serviços de inicialização e teste-o digitando uma URL openme:// na barra de endereço do navegador:

enter image description here

Você desejará substituir openme por git e a echo do seu script de shell, é claro.

    
por 02.01.2012 / 11:57