2010-12-01 11 views
0

J'utilise l'interface graphique opensource pour rsync appelée "arRsync". Cela fonctionne très bien, mais il n'y a aucun moyen de l'automatiser.Applescript n'accepte pas les commandes arRsync sdef?

Ce que je suis en train de faire est d'utiliser AppleScript pour exécuter un préréglage (que vous définissez dans l'application) en utilisant le script simple suivant:

tell application "arRsync" to runPreset "presetTest1"

Le problème est Applescript pense « runPreset » est une variable, pas une commande. J'ai aussi essayé une variation tell/end-tell de ce qui précède, pas de dés. La commande « runPreset » fait partie de arRsync.sdef

Vous pouvez trouver le projet arRsync here

J'ai essayé l'ouverture des deux fichiers Info.plist à l'intérieur de l'application et en cochant la case « scriptable » (ou le réglage c'est vrai pour ceux d'entre vous qui n'ont pas de Property List Editor) mais je suis toujours coincé.

Je suis un noob de script en matière de cacao: aide p serait grandement apprécié

Répondre

1

Le binaire arRsync manque un dictionnaire de script. Construire à partir de la source, en apportant d'abord les modifications suivantes:

  1. Modifiez Info.plist dans le projet en définissant l'option "Scriptable" sur true.
  2. Corrigez le dictionnaire de script du projet, arRsync.sdef. Le code de la commande runPreset a une lettre trop peu (command les codes doivent être deux FourCC, ou huit caractères, longs). Ajouter un caractère à l'attribut de code runPreset; à peu près n'importe quel personnage va fonctionner. Si vous le souhaitez, le fichier peut être raccourci et simplifié en remplaçant les suites Standard et Text par un include. Sauvegardez le fichier Orignal et faire une nouvelle arRsync.sdef contenant:

    <?xml version="1.0" encoding="UTF-8"?> 
    <!DOCTYPE dictionary SYSTEM "file://localhost/System/Library/DTDs/sdef.dtd"> 
    <dictionary title="arRsync Terminology" 
          xmlns:xi="http://www.w3.org/2003/XInclude"> 
        <xi:include href="file:///System/Library/ScriptingDefinitions/CocoaStandard.sdef" 
           xpointer="xpointer(/dictionary/suite)"/> 
        <suite name="arRsync Suite" code="arRs"> 
         <command name="runPreset" code="runPPrst"> 
          <cocoa name="runPreset" class="scriptController"/> 
          <direct-parameter type="any"/> 
         </command> 
        </suite> 
    </dictionary> 
    

    Sinon, vous pouvez simplement remplacer l'élément de commande runPreset avec celui d'en haut.

  3. Add arRsync.sdef aux "ressources Bundle copie" phase du arRsync cible
  4. Switch un communiqué build ("Blackbeard" est le nom de la version de débogage).
  5. Construisez-le.

Cela devrait produire une version scriptable de arRsync. Comme vous l'avez déjà compris, vous devrez peut-être jouer avec le SDK cible.

+0

Ok, juste essayé, il enregistre comme 'Blackbeard.app' au lieu de 'arRsync.app', mais le contenu est exactement le même. J'ai essayé de compiler avec et sans modifier le fichier info.plist pour activer le script, le même problème existe toujours. Merci pour l'aide tho! – S0ULphIRE

+0

Je vais jeter un oeil à la source. – outis

+0

merci beaucoup! Oh, juste fyi, il ne compile pas sur 10.6, je dois utiliser 10.5. – S0ULphIRE

Questions connexes