scala-bootstrapper 0.7.0 → 0.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
 - data/bin/scala-bootstrapper +9 -5
 - data/lib/template/config/development.scala.erb +2 -2
 - data/lib/template/config/production.scala.erb +1 -1
 - data/lib/template/config/test.scala.erb +1 -1
 - data/lib/template/project/build.properties +1 -1
 - data/lib/template/project/build/BirdNameProject.scala.erb +12 -3
 - data/lib/template/project/plugins/Plugins.scala.erb +1 -1
 - data/lib/template/run +125 -0
 - data/lib/template/src/main/scala/com/twitter/birdname/BirdNameServiceImpl.scala.erb +20 -7
 - data/lib/template/src/main/scala/com/twitter/birdname/Main.scala.erb +1 -1
 - data/lib/template/src/main/scala/com/twitter/birdname/config/BirdNameServiceConfig.scala.erb +3 -2
 - data/lib/template/src/main/thrift/birdname.thrift.erb +12 -4
 - data/lib/template/{bin → src/scripts}/console.erb +1 -1
 - data/lib/template/src/scripts/startup.sh +136 -0
 - data/lib/template/src/test/scala/com/twitter/birdname/AbstractSpec.scala.erb +1 -1
 - data/lib/template/src/test/scala/com/twitter/birdname/BirdNameServiceSpec.scala.erb +6 -4
 - metadata +17 -9
 - data/.gitignore +0 -21
 
    
        data/VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            0.7. 
     | 
| 
      
 1 
     | 
    
         
            +
            0.7.2
         
     | 
    
        data/bin/scala-bootstrapper
    CHANGED
    
    | 
         @@ -4,13 +4,13 @@ require File.dirname(__FILE__) + "/../vendor/trollop" 
     | 
|
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            opts = Trollop::options do
         
     | 
| 
       6 
6 
     | 
    
         
             
              banner "Usage: #{$0} [options] PROJECT_NAME"
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
              opt :public, "Use the public twitter maven repo" 
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
              opt :public, "Use the public twitter maven repo"
         
     | 
| 
       9 
9 
     | 
    
         
             
              opt :namespace, "Use something besides com.twitter", :type => :string
         
     | 
| 
       10 
10 
     | 
    
         
             
            end
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
            if ARGV.length < 1 
     | 
| 
      
 13 
     | 
    
         
            +
            if ARGV.length < 1
         
     | 
| 
       14 
14 
     | 
    
         
             
              Trollop::die "PROJECT_NAME is required"
         
     | 
| 
       15 
15 
     | 
    
         
             
              exit 1
         
     | 
| 
       16 
16 
     | 
    
         
             
            end
         
     | 
| 
         @@ -22,7 +22,7 @@ class String 
     | 
|
| 
       22 
22 
     | 
    
         
             
                else
         
     | 
| 
       23 
23 
     | 
    
         
             
                  self[0].chr.downcase + camelize(self)[1..-1]
         
     | 
| 
       24 
24 
     | 
    
         
             
                end
         
     | 
| 
       25 
     | 
    
         
            -
              end 
     | 
| 
      
 25 
     | 
    
         
            +
              end
         
     | 
| 
       26 
26 
     | 
    
         
             
              def underscore
         
     | 
| 
       27 
27 
     | 
    
         
             
                self.gsub(/::/, '/').
         
     | 
| 
       28 
28 
     | 
    
         
             
                gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
         
     | 
| 
         @@ -72,4 +72,8 @@ Dir["#{root}/**/*"].select{|path| File.file?(path)}.each do |path| 
     | 
|
| 
       72 
72 
     | 
    
         
             
              puts "writing #{target_path}"
         
     | 
| 
       73 
73 
     | 
    
         
             
              mkdir_p(File.dirname(target_path))
         
     | 
| 
       74 
74 
     | 
    
         
             
              File.open(target_path, "w") {|f| f.print(gsub_birds(template.result(binding), project_name, namespace)) }
         
     | 
| 
       75 
     | 
    
         
            -
            end
         
     | 
| 
      
 75 
     | 
    
         
            +
            end
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
            if File.exists?("src/scripts/startup.sh")
         
     | 
| 
      
 78 
     | 
    
         
            +
              `mv src/scripts/startup.sh src/scripts/#{project_name.downcase}.sh`
         
     | 
| 
      
 79 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            import com.twitter.ostrich.admin.config._
         
     | 
| 
       2 
1 
     | 
    
         
             
            import com.twitter.conversions.time._
         
     | 
| 
       3 
2 
     | 
    
         
             
            import com.twitter.logging.config._
         
     | 
| 
      
 3 
     | 
    
         
            +
            import com.twitter.ostrich.admin.config._
         
     | 
| 
       4 
4 
     | 
    
         
             
            import com.twitter.birdname.config._
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            // development mode.
         
     | 
| 
         @@ -27,7 +27,7 @@ new BirdNameServiceConfig { 
     | 
|
| 
       27 
27 
     | 
    
         | 
| 
       28 
28 
     | 
    
         
             
              loggers =
         
     | 
| 
       29 
29 
     | 
    
         
             
                new LoggerConfig {
         
     | 
| 
       30 
     | 
    
         
            -
                  level = Level. 
     | 
| 
      
 30 
     | 
    
         
            +
                  level = Level.DEBUG
         
     | 
| 
       31 
31 
     | 
    
         
             
                  handlers = new FileHandlerConfig {
         
     | 
| 
       32 
32 
     | 
    
         
             
                    filename = "birdname.log"
         
     | 
| 
       33 
33 
     | 
    
         
             
                    roll = Policy.SigHup
         
     | 
| 
         @@ -2,9 +2,19 @@ import sbt._ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            import Process._
         
     | 
| 
       3 
3 
     | 
    
         
             
            import com.twitter.sbt._
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
      
 5 
     | 
    
         
            +
            /**
         
     | 
| 
      
 6 
     | 
    
         
            +
             * Sbt project files are written in a DSL in scala.
         
     | 
| 
      
 7 
     | 
    
         
            +
             *
         
     | 
| 
      
 8 
     | 
    
         
            +
             * The % operator is just turning strings into maven dependency declarations, so lines like
         
     | 
| 
      
 9 
     | 
    
         
            +
             *     val example = "com.example" % "exampleland" % "1.0.3"
         
     | 
| 
      
 10 
     | 
    
         
            +
             * mean to add a dependency on exampleland version 1.0.3 from provider "com.example".
         
     | 
| 
      
 11 
     | 
    
         
            +
             */
         
     | 
| 
       5 
12 
     | 
    
         
             
            class BirdNameProject(info: ProjectInfo) extends StandardServiceProject(info)
         
     | 
| 
       6 
     | 
    
         
            -
            with CompileThriftScala 
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
      
 13 
     | 
    
         
            +
              with CompileThriftScala
         
     | 
| 
      
 14 
     | 
    
         
            +
              with NoisyDependencies
         
     | 
| 
      
 15 
     | 
    
         
            +
              with DefaultRepos
         
     | 
| 
      
 16 
     | 
    
         
            +
              with SubversionPublisher
         
     | 
| 
      
 17 
     | 
    
         
            +
            {
         
     | 
| 
       8 
18 
     | 
    
         
             
              val finagleVersion = "1.2.1"
         
     | 
| 
       9 
19 
     | 
    
         
             
              val finagleC = "com.twitter" % "finagle-core" % finagleVersion
         
     | 
| 
       10 
20 
     | 
    
         
             
              val finagleT = "com.twitter" % "finagle-thrift" % finagleVersion
         
     | 
| 
         @@ -12,7 +22,6 @@ with CompileThriftScala with NoisyDependencies with DefaultRepos with Subversion 
     | 
|
| 
       12 
22 
     | 
    
         | 
| 
       13 
23 
     | 
    
         
             
              // thrift
         
     | 
| 
       14 
24 
     | 
    
         
             
              val libthrift = "thrift" % "libthrift" % "0.5.0"
         
     | 
| 
       15 
     | 
    
         
            -
              val util    = "com.twitter" % "util" % "1.8.0"
         
     | 
| 
       16 
25 
     | 
    
         | 
| 
       17 
26 
     | 
    
         
             
              override def originalThriftNamespaces = Map("BirdName" -> "com.twitter.birdname.thrift")
         
     | 
| 
       18 
27 
     | 
    
         
             
              val scalaThriftTargetNamespace = "com.twitter.birdname"
         
     | 
| 
         @@ -2,6 +2,6 @@ import sbt._ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            class Plugins(info: ProjectInfo) extends PluginDefinition(info) {
         
     | 
| 
       4 
4 
     | 
    
         
             
              val twitterMaven = "twitter.com" at "http://maven.twttr.com/"
         
     | 
| 
       5 
     | 
    
         
            -
              val  
     | 
| 
      
 5 
     | 
    
         
            +
              val standardProject = "com.twitter" % "standard-project" % "0.11.1"
         
     | 
| 
       6 
6 
     | 
    
         
             
              val sbtThrift = "com.twitter" % "sbt-thrift" % "1.1.0"
         
     | 
| 
       7 
7 
     | 
    
         
             
            }
         
     | 
    
        data/lib/template/run
    ADDED
    
    | 
         @@ -0,0 +1,125 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/bin/bash
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            function path_append {
         
     | 
| 
      
 4 
     | 
    
         
            +
              _var=$1
         
     | 
| 
      
 5 
     | 
    
         
            +
              _path=$2
         
     | 
| 
      
 6 
     | 
    
         
            +
              eval "
         
     | 
| 
      
 7 
     | 
    
         
            +
                if [[ -z \"\$$_var\" ]] ; then
         
     | 
| 
      
 8 
     | 
    
         
            +
                  export $_var=$_path
         
     | 
| 
      
 9 
     | 
    
         
            +
                elif ! echo \$$_var | egrep -q \"(^|:)$_path($|:)\" ; then
         
     | 
| 
      
 10 
     | 
    
         
            +
                  export $_var=\$$_var:$_path
         
     | 
| 
      
 11 
     | 
    
         
            +
                fi"
         
     | 
| 
      
 12 
     | 
    
         
            +
            }
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            function path_prepend() {
         
     | 
| 
      
 15 
     | 
    
         
            +
                _var=$1
         
     | 
| 
      
 16 
     | 
    
         
            +
                _path=$2
         
     | 
| 
      
 17 
     | 
    
         
            +
                eval "
         
     | 
| 
      
 18 
     | 
    
         
            +
                if [[ -z \"\$$_var\" ]] ; then
         
     | 
| 
      
 19 
     | 
    
         
            +
                  export $_var=$_path
         
     | 
| 
      
 20 
     | 
    
         
            +
                elif ! echo \$$_var | egrep -q \"(^|:)$_path($|:)\" ; then
         
     | 
| 
      
 21 
     | 
    
         
            +
                  export $_var=$_path:\$$_var
         
     | 
| 
      
 22 
     | 
    
         
            +
                fi"
         
     | 
| 
      
 23 
     | 
    
         
            +
            }
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            function find_sbt_root {
         
     | 
| 
      
 26 
     | 
    
         
            +
              while [ ! -d project -a "x$PWD" != "x/" ] ; do
         
     | 
| 
      
 27 
     | 
    
         
            +
                cd ..
         
     | 
| 
      
 28 
     | 
    
         
            +
              done
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
              if [ "x$PWD" = "/" ]; then
         
     | 
| 
      
 31 
     | 
    
         
            +
                echo "couldn't find sbt project!" 1>&2
         
     | 
| 
      
 32 
     | 
    
         
            +
                exit 1
         
     | 
| 
      
 33 
     | 
    
         
            +
              fi
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
              echo $PWD
         
     | 
| 
      
 36 
     | 
    
         
            +
            }
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
            function ensure_java_bin_on_path {
         
     | 
| 
      
 39 
     | 
    
         
            +
              if [ -d "$JAVA_HOME" ]; then
         
     | 
| 
      
 40 
     | 
    
         
            +
                  __java_bindir="$JAVA_HOME/bin"
         
     | 
| 
      
 41 
     | 
    
         
            +
              else
         
     | 
| 
      
 42 
     | 
    
         
            +
                  __java_bindir=`which java | xargs readlink | xargs dirname`
         
     | 
| 
      
 43 
     | 
    
         
            +
              fi
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
              if [ -x "$__java_bindir/java" ]; then
         
     | 
| 
      
 46 
     | 
    
         
            +
                path_append PATH $__java_bindir
         
     | 
| 
      
 47 
     | 
    
         
            +
              else
         
     | 
| 
      
 48 
     | 
    
         
            +
                echo "Binary 'java' is not on the PATH, and JAVA_HOME is not set. Fix one of these."
         
     | 
| 
      
 49 
     | 
    
         
            +
                exit 1
         
     | 
| 
      
 50 
     | 
    
         
            +
              fi
         
     | 
| 
      
 51 
     | 
    
         
            +
            }
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
            function include {
         
     | 
| 
      
 54 
     | 
    
         
            +
              _var=$1
         
     | 
| 
      
 55 
     | 
    
         
            +
              _dir=$2
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
              for jar in $_dir/lib_managed/compile/*.jar; do
         
     | 
| 
      
 58 
     | 
    
         
            +
                path_append $_var $jar
         
     | 
| 
      
 59 
     | 
    
         
            +
              done
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
              for jar in $_dir/lib/*.jar; do
         
     | 
| 
      
 62 
     | 
    
         
            +
                path_append $_var $jar
         
     | 
| 
      
 63 
     | 
    
         
            +
              done
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
              path_append $_var $_dir/src/main/resources
         
     | 
| 
      
 66 
     | 
    
         
            +
              path_append $_var $_dir/target/classes
         
     | 
| 
      
 67 
     | 
    
         
            +
            }
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
            ensure_java_bin_on_path
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
            root=$(find_sbt_root)
         
     | 
| 
      
 72 
     | 
    
         
            +
            if [ $? -ne 0 ]; then
         
     | 
| 
      
 73 
     | 
    
         
            +
              exit 1
         
     | 
| 
      
 74 
     | 
    
         
            +
            fi
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
            if [ -z $project ]; then
         
     | 
| 
      
 77 
     | 
    
         
            +
              project="."
         
     | 
| 
      
 78 
     | 
    
         
            +
            fi
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
            set -- $(getopt i:ygdh: "$@")
         
     | 
| 
      
 81 
     | 
    
         
            +
            while [ $# -gt 0 ]; do
         
     | 
| 
      
 82 
     | 
    
         
            +
              case "$1" in
         
     | 
| 
      
 83 
     | 
    
         
            +
                -i)
         
     | 
| 
      
 84 
     | 
    
         
            +
                  include CP $2
         
     | 
| 
      
 85 
     | 
    
         
            +
                  ;;
         
     | 
| 
      
 86 
     | 
    
         
            +
                -y)
         
     | 
| 
      
 87 
     | 
    
         
            +
                  JAVA_OPTS="-agentlib:yjpagent $JAVA_OPTS"
         
     | 
| 
      
 88 
     | 
    
         
            +
                  ;;
         
     | 
| 
      
 89 
     | 
    
         
            +
                -g)
         
     | 
| 
      
 90 
     | 
    
         
            +
                  GC_OPTS="-verbosegc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:/tmp/gc.log"
         
     | 
| 
      
 91 
     | 
    
         
            +
                  ;;
         
     | 
| 
      
 92 
     | 
    
         
            +
                -d)
         
     | 
| 
      
 93 
     | 
    
         
            +
                  JAVA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n $JAVA_OPTS"
         
     | 
| 
      
 94 
     | 
    
         
            +
                  ;;
         
     | 
| 
      
 95 
     | 
    
         
            +
                -h)
         
     | 
| 
      
 96 
     | 
    
         
            +
                  path_prepend DYLD_LIBRARY_PATH $2
         
     | 
| 
      
 97 
     | 
    
         
            +
                  JAVA_OPTS="-Xbootclasspath/a:$2 -agentlib:heapster $JAVA_OPTS"
         
     | 
| 
      
 98 
     | 
    
         
            +
                  ;;
         
     | 
| 
      
 99 
     | 
    
         
            +
                --) shift; break;;
         
     | 
| 
      
 100 
     | 
    
         
            +
              esac
         
     | 
| 
      
 101 
     | 
    
         
            +
              shift
         
     | 
| 
      
 102 
     | 
    
         
            +
            done
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
            if [ $# -eq 0 ]; then
         
     | 
| 
      
 105 
     | 
    
         
            +
                echo "usage: $0 [-i INCLUDE] [-h HEAPSTER] [-ygd] CLASS ..." >&2
         
     | 
| 
      
 106 
     | 
    
         
            +
                echo "  -i INCLUDE include in the classpath the project with the sbt root INCLUDE" >&2 
         
     | 
| 
      
 107 
     | 
    
         
            +
                echo "  -h HEAPSTER use heapster in the directory HEAPSTER"  >&2
         
     | 
| 
      
 108 
     | 
    
         
            +
                echo "  -y enable yourkit debugging" >&2
         
     | 
| 
      
 109 
     | 
    
         
            +
                echo "  -g enable GC debugging/logging" >&2
         
     | 
| 
      
 110 
     | 
    
         
            +
                echo "  -d enable JVM debugging" >&2
         
     | 
| 
      
 111 
     | 
    
         
            +
                exit 1
         
     | 
| 
      
 112 
     | 
    
         
            +
            fi
         
     | 
| 
      
 113 
     | 
    
         
            +
             
     | 
| 
      
 114 
     | 
    
         
            +
            ## Set up the classpath. Scala base jars first.
         
     | 
| 
      
 115 
     | 
    
         
            +
            path_prepend CP $root/project/boot/scala-2.8.1/lib/scala-library.jar
         
     | 
| 
      
 116 
     | 
    
         
            +
            path_prepend CP $root/project/boot/scala-2.8.1/lib/scala-compiler.jar
         
     | 
| 
      
 117 
     | 
    
         
            +
             
     | 
| 
      
 118 
     | 
    
         
            +
            # This goes last:
         
     | 
| 
      
 119 
     | 
    
         
            +
            include CP $root
         
     | 
| 
      
 120 
     | 
    
         
            +
             
     | 
| 
      
 121 
     | 
    
         
            +
            # Disable IPv6
         
     | 
| 
      
 122 
     | 
    
         
            +
            export JAVA_OPTS="-Djava.net.preferIPv4Stack=true $JAVA_OPTS"
         
     | 
| 
      
 123 
     | 
    
         
            +
             
     | 
| 
      
 124 
     | 
    
         
            +
            export JAVA_OPTS="$JAVA_OPTS -server -Xmx2G -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+UseParNewGC $GC_OPTS"
         
     | 
| 
      
 125 
     | 
    
         
            +
            exec java $JAVA_OPTS -cp $CP "$@"
         
     | 
| 
         @@ -1,7 +1,8 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            package com.twitter.birdname
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            import com.twitter.util._
         
     | 
| 
       4 
3 
     | 
    
         
             
            import java.util.concurrent.Executors
         
     | 
| 
      
 4 
     | 
    
         
            +
            import scala.collection.mutable
         
     | 
| 
      
 5 
     | 
    
         
            +
            import com.twitter.util._
         
     | 
| 
       5 
6 
     | 
    
         
             
            import config._
         
     | 
| 
       6 
7 
     | 
    
         | 
| 
       7 
8 
     | 
    
         
             
            class BirdNameServiceImpl(config: BirdNameServiceConfig) extends BirdNameServiceServer {
         
     | 
| 
         @@ -22,11 +23,23 @@ class BirdNameServiceImpl(config: BirdNameServiceConfig) extends BirdNameService 
     | 
|
| 
       22 
23 
     | 
    
         
             
               *     }
         
     | 
| 
       23 
24 
     | 
    
         
             
               * 
         
     | 
| 
       24 
25 
     | 
    
         
             
               */   
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
               
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
              def  
     | 
| 
       29 
     | 
    
         
            -
                 
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
              val database = new mutable.HashMap[String, String]()  
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
              def get(key: String) = {
         
     | 
| 
      
 30 
     | 
    
         
            +
                database.get(key) match {
         
     | 
| 
      
 31 
     | 
    
         
            +
                  case None =>
         
     | 
| 
      
 32 
     | 
    
         
            +
                    log.debug("get %s: miss", key)
         
     | 
| 
      
 33 
     | 
    
         
            +
                    Future.exception(new BirdNameException("No such key"))
         
     | 
| 
      
 34 
     | 
    
         
            +
                  case Some(value) =>
         
     | 
| 
      
 35 
     | 
    
         
            +
                    log.debug("get %s: hit", key)
         
     | 
| 
      
 36 
     | 
    
         
            +
                    Future(value)
         
     | 
| 
      
 37 
     | 
    
         
            +
                }
         
     | 
| 
       30 
38 
     | 
    
         
             
              }
         
     | 
| 
       31 
39 
     | 
    
         | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
      
 40 
     | 
    
         
            +
              def put(key: String, value: String) = {
         
     | 
| 
      
 41 
     | 
    
         
            +
                log.debug("put %s")
         
     | 
| 
      
 42 
     | 
    
         
            +
                database(key) = value
         
     | 
| 
      
 43 
     | 
    
         
            +
                Future.void
         
     | 
| 
      
 44 
     | 
    
         
            +
              }
         
     | 
| 
      
 45 
     | 
    
         
            +
            }
         
     | 
    
        data/lib/template/src/main/scala/com/twitter/birdname/config/BirdNameServiceConfig.scala.erb
    CHANGED
    
    | 
         @@ -1,10 +1,11 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            package com.twitter.birdname
         
     | 
| 
       2 
2 
     | 
    
         
             
            package config
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
            import com.twitter.ostrich.admin.{RuntimeEnvironment, ServiceTracker}
         
     | 
| 
       5 
     | 
    
         
            -
            import com.twitter.ostrich.admin.config._
         
     | 
| 
       6 
4 
     | 
    
         
             
            import com.twitter.logging.Logger
         
     | 
| 
       7 
5 
     | 
    
         
             
            import com.twitter.logging.config._
         
     | 
| 
      
 6 
     | 
    
         
            +
            import com.twitter.ostrich.admin.{RuntimeEnvironment, ServiceTracker}
         
     | 
| 
      
 7 
     | 
    
         
            +
            import com.twitter.ostrich.admin.config._
         
     | 
| 
      
 8 
     | 
    
         
            +
            import com.twitter.util.Config
         
     | 
| 
       8 
9 
     | 
    
         | 
| 
       9 
10 
     | 
    
         
             
            class BirdNameServiceConfig extends ServerConfig[BirdNameServiceServer] {
         
     | 
| 
       10 
11 
     | 
    
         
             
              var thriftPort: Int = 9999
         
     | 
| 
         @@ -1,12 +1,20 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            namespace java com.twitter.birdname.thrift
         
     | 
| 
       2 
2 
     | 
    
         
             
            namespace rb BirdName
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
      
 4 
     | 
    
         
            +
            /**
         
     | 
| 
      
 5 
     | 
    
         
            +
             * It's considered good form to declare an exception type for your service.
         
     | 
| 
      
 6 
     | 
    
         
            +
             * Thrift will serialize and transmit them transparently.
         
     | 
| 
      
 7 
     | 
    
         
            +
             */
         
     | 
| 
       4 
8 
     | 
    
         
             
            exception BirdNameException {
         
     | 
| 
       5 
9 
     | 
    
         
             
              1: string description
         
     | 
| 
       6 
10 
     | 
    
         
             
            }
         
     | 
| 
       7 
11 
     | 
    
         | 
| 
      
 12 
     | 
    
         
            +
            /**
         
     | 
| 
      
 13 
     | 
    
         
            +
             * A simple memcache-like service, which stores strings by key/value.
         
     | 
| 
      
 14 
     | 
    
         
            +
             * You should replace this with your actual service.
         
     | 
| 
      
 15 
     | 
    
         
            +
             */
         
     | 
| 
       8 
16 
     | 
    
         
             
            service BirdNameService {
         
     | 
| 
       9 
     | 
    
         
            -
               
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
               
     | 
| 
       12 
     | 
    
         
            -
            }
         
     | 
| 
      
 17 
     | 
    
         
            +
              string get(1: string key) throws(1: BirdNameException ex)
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
              void put(1: string key, 2: string value)
         
     | 
| 
      
 20 
     | 
    
         
            +
            }
         
     | 
| 
         @@ -0,0 +1,136 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/bin/sh
         
     | 
| 
      
 2 
     | 
    
         
            +
            #
         
     | 
| 
      
 3 
     | 
    
         
            +
            # birdname init.d script.
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # All java services require the same directory structure:
         
     | 
| 
      
 6 
     | 
    
         
            +
            #   /usr/local/$APP_NAME
         
     | 
| 
      
 7 
     | 
    
         
            +
            #   /var/log/$APP_NAME
         
     | 
| 
      
 8 
     | 
    
         
            +
            #   /var/run/$APP_NAME
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            APP_NAME="birdname"
         
     | 
| 
      
 11 
     | 
    
         
            +
            ADMIN_PORT="9900"
         
     | 
| 
      
 12 
     | 
    
         
            +
            VERSION="@VERSION@"
         
     | 
| 
      
 13 
     | 
    
         
            +
            APP_HOME="/usr/local/$APP_NAME/current"
         
     | 
| 
      
 14 
     | 
    
         
            +
            DAEMON="/usr/local/bin/daemon"
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            JAR_NAME="$APP_NAME-$VERSION.jar"
         
     | 
| 
      
 17 
     | 
    
         
            +
            STAGE="production"
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            HEAP_OPTS="-Xmx4096m -Xms4096m -XX:NewSize=768m"
         
     | 
| 
      
 20 
     | 
    
         
            +
            GC_OPTS="-verbosegc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+UseConcMarkSweepGC -XX:+UseParNewGC"
         
     | 
| 
      
 21 
     | 
    
         
            +
            GC_LOG="-Xloggc:/var/log/$APP_NAME/gc.log"
         
     | 
| 
      
 22 
     | 
    
         
            +
            DEBUG_OPTS="-XX:ErrorFile=/var/log/$APP_NAME/java_error%p.log"
         
     | 
| 
      
 23 
     | 
    
         
            +
            JAVA_OPTS="-server -Dstage=$STAGE $GC_OPTS $GC_LOG $HEAP_OPTS $DEBUG_OPTS"
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            pidfile="/var/run/$APP_NAME/$APP_NAME.pid"
         
     | 
| 
      
 26 
     | 
    
         
            +
            daemon_pidfile="/var/run/$APP_NAME/$APP_NAME-daemon.pid"
         
     | 
| 
      
 27 
     | 
    
         
            +
            daemon_args="--name $APP_NAME --pidfile $daemon_pidfile --core --chdir /"
         
     | 
| 
      
 28 
     | 
    
         
            +
            daemon_start_args="--stdout=/var/log/$APP_NAME/stdout --stderr=/var/log/$APP_NAME/error"
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            function running() {
         
     | 
| 
      
 31 
     | 
    
         
            +
              $DAEMON $daemon_args --running
         
     | 
| 
      
 32 
     | 
    
         
            +
            }
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
            function find_java() {
         
     | 
| 
      
 35 
     | 
    
         
            +
              if [ ! -z "$JAVA_HOME" ]; then
         
     | 
| 
      
 36 
     | 
    
         
            +
                return
         
     | 
| 
      
 37 
     | 
    
         
            +
              fi
         
     | 
| 
      
 38 
     | 
    
         
            +
              for dir in /opt/jdk /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home /usr/java/default; do
         
     | 
| 
      
 39 
     | 
    
         
            +
                if [ -x $dir/bin/java ]; then
         
     | 
| 
      
 40 
     | 
    
         
            +
                  JAVA_HOME=$dir
         
     | 
| 
      
 41 
     | 
    
         
            +
                  break
         
     | 
| 
      
 42 
     | 
    
         
            +
                fi
         
     | 
| 
      
 43 
     | 
    
         
            +
              done
         
     | 
| 
      
 44 
     | 
    
         
            +
            }
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
            find_java
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
            case "$1" in
         
     | 
| 
      
 50 
     | 
    
         
            +
              start)
         
     | 
| 
      
 51 
     | 
    
         
            +
                echo -n "Starting $APP_NAME... "
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                if [ ! -r $APP_HOME/$JAR_NAME ]; then
         
     | 
| 
      
 54 
     | 
    
         
            +
                  echo "FAIL"
         
     | 
| 
      
 55 
     | 
    
         
            +
                  echo "*** $APP_NAME jar missing: $APP_HOME/$JAR_NAME - not starting"
         
     | 
| 
      
 56 
     | 
    
         
            +
                  exit 1
         
     | 
| 
      
 57 
     | 
    
         
            +
                fi
         
     | 
| 
      
 58 
     | 
    
         
            +
                if [ ! -x $JAVA_HOME/bin/java ]; then
         
     | 
| 
      
 59 
     | 
    
         
            +
                  echo "FAIL"
         
     | 
| 
      
 60 
     | 
    
         
            +
                  echo "*** $JAVA_HOME/bin/java doesn't exist -- check JAVA_HOME?"
         
     | 
| 
      
 61 
     | 
    
         
            +
                  exit 1
         
     | 
| 
      
 62 
     | 
    
         
            +
                fi
         
     | 
| 
      
 63 
     | 
    
         
            +
                if running; then
         
     | 
| 
      
 64 
     | 
    
         
            +
                  echo "already running."
         
     | 
| 
      
 65 
     | 
    
         
            +
                  exit 0
         
     | 
| 
      
 66 
     | 
    
         
            +
                fi
         
     | 
| 
      
 67 
     | 
    
         
            +
                
         
     | 
| 
      
 68 
     | 
    
         
            +
                ulimit -c unlimited || echo -n " (no coredump)"
         
     | 
| 
      
 69 
     | 
    
         
            +
                $DAEMON $daemon_args $daemon_start_args -- sh -c "echo "'$$'" > $pidfile; exec ${JAVA_HOME}/bin/java ${JAVA_OPTS} -jar ${APP_HOME}/${JAR_NAME}"
         
     | 
| 
      
 70 
     | 
    
         
            +
                tries=0
         
     | 
| 
      
 71 
     | 
    
         
            +
                while ! running; do
         
     | 
| 
      
 72 
     | 
    
         
            +
                  tries=$((tries + 1))
         
     | 
| 
      
 73 
     | 
    
         
            +
                  if [ $tries -ge 5 ]; then
         
     | 
| 
      
 74 
     | 
    
         
            +
                    echo "FAIL"
         
     | 
| 
      
 75 
     | 
    
         
            +
                    exit 1
         
     | 
| 
      
 76 
     | 
    
         
            +
                  fi
         
     | 
| 
      
 77 
     | 
    
         
            +
                  sleep 1
         
     | 
| 
      
 78 
     | 
    
         
            +
                done
         
     | 
| 
      
 79 
     | 
    
         
            +
                echo "done."
         
     | 
| 
      
 80 
     | 
    
         
            +
              ;;
         
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
      
 82 
     | 
    
         
            +
              stop)
         
     | 
| 
      
 83 
     | 
    
         
            +
                echo -n "Stopping $APP_NAME... "
         
     | 
| 
      
 84 
     | 
    
         
            +
                if ! running; then
         
     | 
| 
      
 85 
     | 
    
         
            +
                  echo "wasn't running."
         
     | 
| 
      
 86 
     | 
    
         
            +
                  exit 0
         
     | 
| 
      
 87 
     | 
    
         
            +
                fi
         
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
| 
      
 89 
     | 
    
         
            +
                curl -s http://localhost:${ADMIN_PORT}/shutdown.txt > /dev/null
         
     | 
| 
      
 90 
     | 
    
         
            +
                tries=0
         
     | 
| 
      
 91 
     | 
    
         
            +
                while running; do
         
     | 
| 
      
 92 
     | 
    
         
            +
                  tries=$((tries + 1))
         
     | 
| 
      
 93 
     | 
    
         
            +
                  if [ $tries -ge 15 ]; then
         
     | 
| 
      
 94 
     | 
    
         
            +
                    echo "FAILED SOFT SHUTDOWN, TRYING HARDER"
         
     | 
| 
      
 95 
     | 
    
         
            +
                    if [ -f $pidfile ]; then
         
     | 
| 
      
 96 
     | 
    
         
            +
                      kill $(cat $pidfile)
         
     | 
| 
      
 97 
     | 
    
         
            +
                    else
         
     | 
| 
      
 98 
     | 
    
         
            +
                      echo "CAN'T FIND PID, TRY KILL MANUALLY"
         
     | 
| 
      
 99 
     | 
    
         
            +
                      exit 1
         
     | 
| 
      
 100 
     | 
    
         
            +
                    fi
         
     | 
| 
      
 101 
     | 
    
         
            +
                    hardtries=0
         
     | 
| 
      
 102 
     | 
    
         
            +
                    while running; do
         
     | 
| 
      
 103 
     | 
    
         
            +
                      hardtries=$((hardtries + 1))
         
     | 
| 
      
 104 
     | 
    
         
            +
                      if [ $hardtries -ge 5 ]; then
         
     | 
| 
      
 105 
     | 
    
         
            +
                        echo "FAILED HARD SHUTDOWN, TRY KILL -9 MANUALLY"
         
     | 
| 
      
 106 
     | 
    
         
            +
                        exit 1
         
     | 
| 
      
 107 
     | 
    
         
            +
                      fi
         
     | 
| 
      
 108 
     | 
    
         
            +
                      sleep 1
         
     | 
| 
      
 109 
     | 
    
         
            +
                    done
         
     | 
| 
      
 110 
     | 
    
         
            +
                  fi
         
     | 
| 
      
 111 
     | 
    
         
            +
                  sleep 1
         
     | 
| 
      
 112 
     | 
    
         
            +
                done
         
     | 
| 
      
 113 
     | 
    
         
            +
                echo "done."
         
     | 
| 
      
 114 
     | 
    
         
            +
              ;;
         
     | 
| 
      
 115 
     | 
    
         
            +
              
         
     | 
| 
      
 116 
     | 
    
         
            +
              status)
         
     | 
| 
      
 117 
     | 
    
         
            +
                if running; then
         
     | 
| 
      
 118 
     | 
    
         
            +
                  echo "$APP_NAME is running."
         
     | 
| 
      
 119 
     | 
    
         
            +
                else
         
     | 
| 
      
 120 
     | 
    
         
            +
                  echo "$APP_NAME is NOT running."
         
     | 
| 
      
 121 
     | 
    
         
            +
                fi
         
     | 
| 
      
 122 
     | 
    
         
            +
              ;;
         
     | 
| 
      
 123 
     | 
    
         
            +
             
     | 
| 
      
 124 
     | 
    
         
            +
              restart)
         
     | 
| 
      
 125 
     | 
    
         
            +
                $0 stop
         
     | 
| 
      
 126 
     | 
    
         
            +
                sleep 2
         
     | 
| 
      
 127 
     | 
    
         
            +
                $0 start
         
     | 
| 
      
 128 
     | 
    
         
            +
              ;;
         
     | 
| 
      
 129 
     | 
    
         
            +
             
     | 
| 
      
 130 
     | 
    
         
            +
              *)
         
     | 
| 
      
 131 
     | 
    
         
            +
                echo "Usage: /etc/init.d/${APP_NAME}.sh {start|stop|restart|status}"
         
     | 
| 
      
 132 
     | 
    
         
            +
                exit 1
         
     | 
| 
      
 133 
     | 
    
         
            +
              ;;
         
     | 
| 
      
 134 
     | 
    
         
            +
            esac
         
     | 
| 
      
 135 
     | 
    
         
            +
             
     | 
| 
      
 136 
     | 
    
         
            +
            exit 0
         
     | 
| 
         @@ -3,10 +3,12 @@ package com.twitter.birdname 
     | 
|
| 
       3 
3 
     | 
    
         
             
            class BirdNameServiceSpec extends AbstractSpec {
         
     | 
| 
       4 
4 
     | 
    
         
             
              "BirdNameService" should {
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
                // TODO: Please implement your own tests
         
     | 
| 
      
 6 
     | 
    
         
            +
                // TODO: Please implement your own tests.
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
     | 
    
         
            -
                " 
     | 
| 
       9 
     | 
    
         
            -
                  birdName. 
     | 
| 
      
 8 
     | 
    
         
            +
                "set a key, get a key" in {
         
     | 
| 
      
 9 
     | 
    
         
            +
                  birdName.put("name", "bluebird")()
         
     | 
| 
      
 10 
     | 
    
         
            +
                  birdName.get("name")() mustEqual "bluebird"
         
     | 
| 
      
 11 
     | 
    
         
            +
                  birdName.get("what?")() must throwA[Exception]
         
     | 
| 
       10 
12 
     | 
    
         
             
                }
         
     | 
| 
       11 
13 
     | 
    
         
             
              }
         
     | 
| 
       12 
     | 
    
         
            -
            }
         
     | 
| 
      
 14 
     | 
    
         
            +
            }
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,12 +1,13 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: scala-bootstrapper
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
               
     | 
| 
      
 4 
     | 
    
         
            +
              hash: 7
         
     | 
| 
      
 5 
     | 
    
         
            +
              prerelease: 
         
     | 
| 
       5 
6 
     | 
    
         
             
              segments: 
         
     | 
| 
       6 
7 
     | 
    
         
             
              - 0
         
     | 
| 
       7 
8 
     | 
    
         
             
              - 7
         
     | 
| 
       8 
     | 
    
         
            -
              -  
     | 
| 
       9 
     | 
    
         
            -
              version: 0.7. 
     | 
| 
      
 9 
     | 
    
         
            +
              - 2
         
     | 
| 
      
 10 
     | 
    
         
            +
              version: 0.7.2
         
     | 
| 
       10 
11 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       11 
12 
     | 
    
         
             
            authors: 
         
     | 
| 
       12 
13 
     | 
    
         
             
            - Kyle Maxwell
         
     | 
| 
         @@ -14,16 +15,18 @@ autorequire: 
     | 
|
| 
       14 
15 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       15 
16 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       16 
17 
     | 
    
         | 
| 
       17 
     | 
    
         
            -
            date: 2011-03- 
     | 
| 
      
 18 
     | 
    
         
            +
            date: 2011-03-20 00:00:00 -07:00
         
     | 
| 
       18 
19 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       19 
20 
     | 
    
         
             
            dependencies: 
         
     | 
| 
       20 
21 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       21 
22 
     | 
    
         
             
              name: thoughtbot-shoulda
         
     | 
| 
       22 
23 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       23 
24 
     | 
    
         
             
              requirement: &id001 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 25 
     | 
    
         
            +
                none: false
         
     | 
| 
       24 
26 
     | 
    
         
             
                requirements: 
         
     | 
| 
       25 
27 
     | 
    
         
             
                - - ">="
         
     | 
| 
       26 
28 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 29 
     | 
    
         
            +
                    hash: 3
         
     | 
| 
       27 
30 
     | 
    
         
             
                    segments: 
         
     | 
| 
       28 
31 
     | 
    
         
             
                    - 0
         
     | 
| 
       29 
32 
     | 
    
         
             
                    version: "0"
         
     | 
| 
         @@ -41,7 +44,6 @@ extra_rdoc_files: 
     | 
|
| 
       41 
44 
     | 
    
         
             
            - README.rdoc
         
     | 
| 
       42 
45 
     | 
    
         
             
            files: 
         
     | 
| 
       43 
46 
     | 
    
         
             
            - .document
         
     | 
| 
       44 
     | 
    
         
            -
            - .gitignore
         
     | 
| 
       45 
47 
     | 
    
         
             
            - LICENSE
         
     | 
| 
       46 
48 
     | 
    
         
             
            - README.rdoc
         
     | 
| 
       47 
49 
     | 
    
         
             
            - Rakefile
         
     | 
| 
         @@ -51,7 +53,6 @@ files: 
     | 
|
| 
       51 
53 
     | 
    
         
             
            - lib/template/.gitignore
         
     | 
| 
       52 
54 
     | 
    
         
             
            - lib/template/Capfile
         
     | 
| 
       53 
55 
     | 
    
         
             
            - lib/template/Gemfile
         
     | 
| 
       54 
     | 
    
         
            -
            - lib/template/bin/console.erb
         
     | 
| 
       55 
56 
     | 
    
         
             
            - lib/template/config/development.scala.erb
         
     | 
| 
       56 
57 
     | 
    
         
             
            - lib/template/config/production.scala.erb
         
     | 
| 
       57 
58 
     | 
    
         
             
            - lib/template/config/staging.scala.erb
         
     | 
| 
         @@ -59,10 +60,13 @@ files: 
     | 
|
| 
       59 
60 
     | 
    
         
             
            - lib/template/project/build.properties
         
     | 
| 
       60 
61 
     | 
    
         
             
            - lib/template/project/build/BirdNameProject.scala.erb
         
     | 
| 
       61 
62 
     | 
    
         
             
            - lib/template/project/plugins/Plugins.scala.erb
         
     | 
| 
      
 63 
     | 
    
         
            +
            - lib/template/run
         
     | 
| 
       62 
64 
     | 
    
         
             
            - lib/template/src/main/scala/com/twitter/birdname/BirdNameServiceImpl.scala.erb
         
     | 
| 
       63 
65 
     | 
    
         
             
            - lib/template/src/main/scala/com/twitter/birdname/Main.scala.erb
         
     | 
| 
       64 
66 
     | 
    
         
             
            - lib/template/src/main/scala/com/twitter/birdname/config/BirdNameServiceConfig.scala.erb
         
     | 
| 
       65 
67 
     | 
    
         
             
            - lib/template/src/main/thrift/birdname.thrift.erb
         
     | 
| 
      
 68 
     | 
    
         
            +
            - lib/template/src/scripts/console.erb
         
     | 
| 
      
 69 
     | 
    
         
            +
            - lib/template/src/scripts/startup.sh
         
     | 
| 
       66 
70 
     | 
    
         
             
            - lib/template/src/test/scala/com/twitter/birdname/AbstractSpec.scala.erb
         
     | 
| 
       67 
71 
     | 
    
         
             
            - lib/template/src/test/scala/com/twitter/birdname/BirdNameServiceSpec.scala.erb
         
     | 
| 
       68 
72 
     | 
    
         
             
            - vendor/sbt-launch-0.7.4.jar
         
     | 
| 
         @@ -72,28 +76,32 @@ homepage: http://github.com/fizx/scala-bootstrapper 
     | 
|
| 
       72 
76 
     | 
    
         
             
            licenses: []
         
     | 
| 
       73 
77 
     | 
    
         | 
| 
       74 
78 
     | 
    
         
             
            post_install_message: 
         
     | 
| 
       75 
     | 
    
         
            -
            rdoc_options: 
         
     | 
| 
       76 
     | 
    
         
            -
             
     | 
| 
      
 79 
     | 
    
         
            +
            rdoc_options: []
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
       77 
81 
     | 
    
         
             
            require_paths: 
         
     | 
| 
       78 
82 
     | 
    
         
             
            - lib
         
     | 
| 
       79 
83 
     | 
    
         
             
            required_ruby_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 84 
     | 
    
         
            +
              none: false
         
     | 
| 
       80 
85 
     | 
    
         
             
              requirements: 
         
     | 
| 
       81 
86 
     | 
    
         
             
              - - ">="
         
     | 
| 
       82 
87 
     | 
    
         
             
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 88 
     | 
    
         
            +
                  hash: 3
         
     | 
| 
       83 
89 
     | 
    
         
             
                  segments: 
         
     | 
| 
       84 
90 
     | 
    
         
             
                  - 0
         
     | 
| 
       85 
91 
     | 
    
         
             
                  version: "0"
         
     | 
| 
       86 
92 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 93 
     | 
    
         
            +
              none: false
         
     | 
| 
       87 
94 
     | 
    
         
             
              requirements: 
         
     | 
| 
       88 
95 
     | 
    
         
             
              - - ">="
         
     | 
| 
       89 
96 
     | 
    
         
             
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 97 
     | 
    
         
            +
                  hash: 3
         
     | 
| 
       90 
98 
     | 
    
         
             
                  segments: 
         
     | 
| 
       91 
99 
     | 
    
         
             
                  - 0
         
     | 
| 
       92 
100 
     | 
    
         
             
                  version: "0"
         
     | 
| 
       93 
101 
     | 
    
         
             
            requirements: []
         
     | 
| 
       94 
102 
     | 
    
         | 
| 
       95 
103 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       96 
     | 
    
         
            -
            rubygems_version: 1. 
     | 
| 
      
 104 
     | 
    
         
            +
            rubygems_version: 1.5.0
         
     | 
| 
       97 
105 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       98 
106 
     | 
    
         
             
            specification_version: 3
         
     | 
| 
       99 
107 
     | 
    
         
             
            summary: Twitter scala project init
         
     |