Remote API (RAPI) gem.
Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
spec
.autotest
.document
.gitignore
.rspec
.simplecov
Gemfile
LICENSE.txt
README.md
Rakefile
VERSION
rapi.gemspec

README.md

About RAPI

Welcome to the RAPI project. The RAPI gem is an FFI wrapper for the Remote API [RAPI], providing an intuitive Ruby interface for interacting with mobile devices connected via ActiveSync. RAPI is an excellent tool for Windows Mobile developers in need of general automation, or better yet, rolling their own integration test suite in Ruby.

How to Install RAPI

gem install rapi

How to Use RAPI

require 'rapi'

# Create a new RAPI session
RAPI.connect

# Enumerate some files/directories
# Inspect files with the usual suspects (#size, #mtime, #atime, #ctime, etc)
some_file = RAPI.glob('\SDMMCDisk\*').first
some_file.mtime  #=>  2012-02-14 13:50:47 -0600

# Move/delete/copy/download/upload
RAPI.copy(some_file.path, File.join(some_file.path, '.backup'))
RAPI.move(some_file.name, '\SDMMCDisk\some_other_file_name')
RAPI.download(some_file.name, 'C:\Users\Charles\Desktop\local_copy')
RAPI.upload('C:\Users\Charles\Desktop\local_copy', '\SDMMCDisk\some_other_file_name', true) # overwrite existing
RAPI.delete(some_file.name)

# Most of the ::File interface is implemented
temp_file = File.join(RAPI.tmp, "temp.txt")
RAPI.open(temp_file, "a+b") do |f|
  # A bunch of random use cases:
  f.pos = 0
  while buffer=f.read(10)
    print buffer
  end

  f.pos = f.size / 2
  f << "Hello, world!"

  f.truncate(10)
end

# Registry access (similar to Win32::Registry)
RAPI::Registry::HKEY_CURRENT_USER.open("Software") do |key|
  key.each_value do |subkey, type, data|
    puts [subkey, type, data].inspect
  end
end

# Create a process
RAPI.exec "explorer.exe"

# Disconnect
RAPI.disconnect

Contributing

These things would be awesome to have:

Copyright

Copyright (c) 2011 Charles Strahan. See LICENSE.txt for further details.