« Return to Thread: Groosh 0.3.0 released

Groosh 0.3.0 released

by eggeral :: Rate this Message:

Reply to Author | View in Thread

Version 0.3.0 of Groosh (http://groovy.codehaus.org/Groosh) has been released.

Groosh provides shell-like capability for handling external processes.

Version 0.3.0 comes with several bug fixes and new features like:

  * The error stream of a process is now usable the same way as the output stream (useError()).
 * A grep method was added which can be used to filter the lines returned by a process.
 * A to List method was added which creates a list out of the lines returned by a process.
 * A eachLine method was added which iterates over the lines returned by a process.
 * The exit values of a process are now accessible. (Thx to Bill Burdick)
 * left shift and right shift operators are overloaded for processes and stream sinks.
 * the pipe operator was overloaded to allow chaining of processes


Groosh
0.3.0 can be downloaded from

http://svn.codehaus.org/groovy-contrib/groosh/releases/

OpenSUSE RPM packages are available from

http://download.opensuse.org/repositories/home:/eggeral/openSUSE_10.3/
and
http://download.opensuse.org/repositories/home:/eggeral/openSUSE_10.2/

The following example shows Groovy and Groosh in action. It uploads images from a directory to Flickr using
the command line tool flickcurl and creates a photo set out of this images.

--

import static groosh.Groosh.groosh
import static org.codehaus.groovy.groosh.stream.DevNull.devnull

ids = [:]
shell = groosh()

//get all images in this folder and upload it to flickr
//remember the photo id we get from flickr
shell.ls().grep(~/.*jpg/).each {
  println "Uploading file $it to flickr"
  flickcurl = shell.flickcurl("upload",it,"friend","family").useError(true)
  id = flickcurl.grep(~/.*Photo ID.*/)[0].split(":")[1].trim()
  ids[it] = id
  println "Photo ID is: $id"
}
//we need to know the first photo id
firstKey = ids.keySet().toList()[0]

//create a set with the name of the directory we are in right now
//use the id of the first photo as set cover
setName = shell.pwd().text.split("/")[-1]
println "Creating set: $setName"
flickcurl = shell.flickcurl("photosets.create",setName,setName,ids[firstKey]).useError(true)
id = flickcurl.grep(~/.*Photoset.*/)[0].split(" ")[2].trim()
println "Photoset ID is: $id"

//make a backup of the ids in a file for later reference
println "Writing ids to a file"
file = new File(shell.pwd().text.trim() + "/.flickrset")
file << "Photoset:" << id << "\n"
ids.each {
  file << it.key << ":" << it.value << "\n"   
}

//the first photo is allready part of the photo set so lets remove it
ids.remove(firstKey)

//add the remaining photos to the photo set
ids.each {
  println "Adding photo to set at flickr: $it"
  shell.flickcurl("photosets.addPhoto",id,it.value) | devnull()
}

println "DONE"


--
Dr. Alexander Egger, Studiengang IT & IT-Marketing
CAMPUS 02 Fachhochschule der Wirtschaft GmbH
Körblergasse 126, 8021 Graz, Austria/EUROPE
T:+43 316 6002 395 M:+43 699 14102026

 « Return to Thread: Groosh 0.3.0 released