swift script et modules tierce-parties

Je voudrais faire du web scraping dans un script swift plutôt que d'utiliser ruby.


 


Je n'ai pas envie de créer un projet Xcode, je voudrais juste faire un script.


 


Mais pour faire du web scraping, je vais surement avoir besoin de modules xml/xpath basé sur libxml2.


 


Est-ce qu'il est possible d'importer des modules tierce parties dans un script swift ? 


 


Mots clés:

Réponses

  • beebbeeb Membre
    décembre 2015 modifié #2

    Si tu arrives à  compiler libxml2 comme framework, il serait ensuite facile de l'importer dans un Playground Xcode. Sinon, tu peux aussi compiler un dylib avec MacPorts ou Homebrew et l'intégrer au projet Xcode.


     


    Par contre, sauf erreur, si tu veux que ton Playground sache où aller chercher les librairies externes, il va quand même falloir avoir un mini-projet Xcode pour gérer les dépendances.


     


    Sinon en natif Swift tu as "NSXMLParser" ou aussi ça: https://github.com/glimpseio/GlimpseXML https://github.com/drmohundro/SWXMLHash https://github.com/tadija/AEXMLetc etc.


     


    EDIT: j'ai trouvé une vieille page avec des vieux builds de libxml2 comme framework (sûrement inutilisables et en plus Chrome met un avertissement de sécurité sur cette page) : http://www.explain.com.au/oss/libxml2xslt.html


  • En fait je voulais faire un script executable avec 



    #!/usr/bin/env swift

    pour remplacer un vieux script en php.


     


    Et j'avais besoin de XPath.


    En fait, grâce à  ta réponse, je viens de me souvenir que XPath est disponible dans NSXMLParser sur OSX, donc pas besoin de librairie externe.


     


    Sinon, je n'ai pas trouvé comment importer un framework quelconque dans un script swift, sans passer par un playground dans un projet, comme tu le suggères. 



  • Sinon, je n'ai pas trouvé comment importer un framework quelconque dans un script swift, sans passer par un playground dans un projet, comme tu le suggères. 




     


    Je pense qu'il faut que le framework soit installé dans un chemin accessible par le système, par exemple "~/Library/Frameworks"


     


    https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPFrameworks/Tasks/InstallingFrameworks.html

  • C'est un cas classique de RTFM ça  ::)


    J'ai compilé 3 fichiers qui montrent comment faire c'est simple à  comprendre.


    Commence avec: 



    sh bootstrap.sh

    puis lance le script avec:



    sh run.sh

    ou chmod +x tu connais la chanson je pense.


  • FKDEVFKDEV Membre
    décembre 2015 modifié #6

    Mettre les frameworks dans /Library/Frameworks ou dans ~/Library/Frameworks ne semblent pas fonctionner ou bien j'ai loupé quelque chose.


    Par contre en étudiant les fichiers de Pyroh, j'arrive à  faire un script qui importe des frameworks situés à  un endroit précis.



    #!/usr/bin/env xcrun swift -F <chemin du dossier contenant Alomfire.frameworks>

    import Alamofire

    let error = Error.errorWithCode(-6000, failureReason: "Error")
    print(error)

  • FKDEVFKDEV Membre
    décembre 2015 modifié #7

    Au final pour mon prochain script swift j'essaierai cato.


    C'est un script bash qui fait une première passe sur le script swift pour installer les dépendances via cocoapod avant de lancer le script swift.


     


    C'est que j'aurais voulu faire en swift et avec Carthage pour automatiser le principe décrit par Pyroh.


  • Je me disais que ce qui serait sympas ce serait de pouvoir exécuter une playground comme un script.


    Je pense que c'est faisable je vais me pencher un peu sur le sujet vu que j'ai un peu de temps aujourd'hui.


     


    Si quelqu'un a une idée ou piste qu'il n'hésite pas à  le dire  


Connectez-vous ou Inscrivez-vous pour répondre.