Skip to content
A Scala parser for Thrift IDL files.
Scala Shell Thrift
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
project
src
.gitignore
.travis.yml
LICENSE
README.md
credentials.sbt.enc
pubring.gpg.enc
sbt
secring.gpg.enc
sonatype.sbt
version.sbt

README.md

Thrifty

A library for parsing Thrift IDLs with minimal dependencies.

Build Status

This project is essentially a fork of Scrooge Generator. The reason for copying the code instead of using it as a library/dependency is to ensure that the project can be built for multiple versions of Scala and easily included in other tools/projects.

Getting Started

To get started using the library - include it as a dependency in your build.sbt:

libraryDependencies += "com.rouesnel" %% "thrifty" % "0.1.0"

Quick Start

This example can be run by copying and pasting the example into sbt console.

import java.io.File

import com.rouesnel.thrifty.frontend._

// Directory containing all of the thrift files.
val thriftDirectory = new File("src/test/resources")

// Thrift file to parse.
val thriftFile = new File(thriftDirectory, "Example.thrift")

// The importer is used to resolve references/links to other Thrift files.
val importer: Importer = Importer(directory)

// Parser that can be re-used.
val parser: ThriftParser = new ThriftParser(Importer(thriftDirectory))

// Parsed document.
val parsed: ResolvedDocument = TypeResolver()(parser.parseFile(thriftFile.getAbsolutePath))

// Finding a particular struct
val Some(myStruct) = parsed.document.structs.find(_.sid.name == "MyStruct")

// Print all the field names and types.
myStruct.fields.foreach(field => {
  println(field.docstring.getOrElse("No comment provided"))
  println(s"${field.index}: ${field.sid.name}")
  println(s"Type: ${field.fieldType}")
  println()
})

Release Guide

Releases are automatically handled by the TravisCI build using an approach similar to what the Guardian use.

On a successful build on master, sbt-sonatype is used to publish a signed build to Sonatype OSS, which is then released (using the same plugin). The releases are signed with a PGP key (included in the repository in an encrypted form).

Credentials

Credentials are included in the repository in the following encrypted files:

  • credentials.sbt.enc: an encrypted sbt file that contains credentials for uploading to Sonatype OSS and the passphrase for the PGP keyring.
  • pubring.gpg.enc: an encrypted gpg public keyring.
  • secring.gpg.enc: an encrypted gpg private keyring.

During the build these files are decrypted using the ENCRYPTION_PASSWORD that has been encrypted in the .travis.yml file.

You can’t perform that action at this time.