SWIGforEDS

From Evolution

[edit]

Work in progress

Proof of concept code can be downloaded at http://shres.in/evo-swig.tar.gz . You will need evolution data server and ruby development files/packages. You will need the evolution data server developer packages. the ruby developer packages and SWIG 1.3.24 or above. Then download and untar the file to some directory, open a command line in that directory and follow this steps:

$ cd evo-swig
$ sh gen_evo_ruby.sh
$ cd ruby
$ ruby extconf && make

If you are lucky and it compiled well (it will show a couple of warnings but it should compile and link) you can try to install it and run the tests:

$ sudo make install
$ cd tests
$ ruby run_tests.rb


Test by invoking irb:

$ irb 
irb(main):001:0> require 'evolution'
=> true
irb(main):002:0> Evolution.get_esource_groups.each{ |group|
irb(main):003:1*     group.each { |source|
irb(main):004:2*         puts "------------------------------------------"
irb(main):005:2>         puts "Calendar: #{source.name}"
irb(main):006:2>         puts "------------------------------------------"
irb(main):007:2>         cal=Evolution::ECal.new(source)
irb(main):008:2>         puts cal
irb(main):009:2>     }
irb(main):010:1> }

This ought to dump all your calendars in ical form. A more involved example is detailed in SWIGCalendarShare. A brief tutorial can be found in SWIGForEDSTutorial


Some notes:

  • This is proof of concept code! Don't expect it to work.
  • Any changes made to the interface files may/will require following steps from sh gen_evo_ruby.sh and on.
  • Only wraps some functionality of ESource, ESourceGroup, ECalComponent and ECal.
  • Only generates a ruby interface right now.
  • Writing a python interface should be very easy.
  • The code has no license right now (public domain). Unless developers have any suggestions (mail them to the evolution-hackers mailing list) or incompatibilities arise, a LGPL license may be adopted in the future.
  • The code is in a mercurial repository (included in the tar file)
  • Compiles with SWIG 1.3.22, 1.3.24 and 1.3.26, GCC 3.3.5 and GCC 4.0 (using g++)
  • Tested in Ubuntu Hoary and Mac OS X [*] (special thanks to Shreyas for testing in this platform)


[*] Irb may misbehave on MacOS X if we pass command line parameters. It is much better to first fire irb and then type require 'evolution' to load the evolution module. --Vicent Seguí