golden 0.5.1
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.
- checksums.yaml +7 -0
- data/exe/golden +76 -0
- data/lib/crucible.rb +133 -0
- data/lib/golden.rb +31 -0
- metadata +118 -0
    
        checksums.yaml
    ADDED
    
    | @@ -0,0 +1,7 @@ | |
| 1 | 
            +
            ---
         | 
| 2 | 
            +
            SHA256:
         | 
| 3 | 
            +
              metadata.gz: cb7d6213bb1ec1308135221959c65ebe9e60d3451867ad900b7b59772ce30108
         | 
| 4 | 
            +
              data.tar.gz: 826478ec45eff91699476be02d45b1319683c227faa60aa39c8a0ca68ecfc1f2
         | 
| 5 | 
            +
            SHA512:
         | 
| 6 | 
            +
              metadata.gz: b158e3292725f4bd05f8e55691aebff8110966e4b7806954d012caeae8a0366fd5a12c2ea8b9faefbf892c1047e59d5195bee7f41dc244606743976074157153
         | 
| 7 | 
            +
              data.tar.gz: 5568c2e5e7c084e2e996bf3a2c70780fff6e4cd72278174dd5106217f89631f98db185d5a7d55fdf64d50583a444a2b6af32bc3bcf2aa5b540c2312c60fcb0c7
         | 
    
        data/exe/golden
    ADDED
    
    | @@ -0,0 +1,76 @@ | |
| 1 | 
            +
            #!/usr/bin/env ruby
         | 
| 2 | 
            +
            require "thor"
         | 
| 3 | 
            +
            require 'open3'
         | 
| 4 | 
            +
            require 'json'
         | 
| 5 | 
            +
            require_relative("../lib/crucible.rb")
         | 
| 6 | 
            +
            module Golden
         | 
| 7 | 
            +
              class Cli < Thor
         | 
| 8 | 
            +
                desc "build [fileName]", "build library named [fileName]"
         | 
| 9 | 
            +
                method_option :verbose, :aliases => "-v", :desc => "Build with verbose logging"
         | 
| 10 | 
            +
                def build(fileName)
         | 
| 11 | 
            +
                  self.load(options)
         | 
| 12 | 
            +
                  @crucible.build(fileName,Dir.pwd)
         | 
| 13 | 
            +
                  self.save
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                desc "clear ", "forget all known libraries"
         | 
| 17 | 
            +
                method_option :force, :aliases => "-f", :desc => "Clear without confirmation."
         | 
| 18 | 
            +
                def clear
         | 
| 19 | 
            +
                  self.load(options)
         | 
| 20 | 
            +
                  if(!options[:force])
         | 
| 21 | 
            +
                    puts "Golden will forget all known libraries (#{@crucible.packages.keys.length}). Do you want to proceed? (Yes/No)"
         | 
| 22 | 
            +
                    response = STDIN.gets.chomp
         | 
| 23 | 
            +
                    if(response == "Yes")
         | 
| 24 | 
            +
                      @crucible.clear
         | 
| 25 | 
            +
                      puts "Golden library cache cleared."
         | 
| 26 | 
            +
                    else
         | 
| 27 | 
            +
                      puts "clear cancelled. To clear Golden libraries, run 'golden clear' again and respond with 'Yes' (case sensitive)."
         | 
| 28 | 
            +
                    end
         | 
| 29 | 
            +
                  else
         | 
| 30 | 
            +
                    @crucible.clear
         | 
| 31 | 
            +
                    puts "Golden library cache cleared."
         | 
| 32 | 
            +
                  end
         | 
| 33 | 
            +
                  self.save
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                desc "list ", "list all libraries built with golden"
         | 
| 37 | 
            +
                method_option :verbose, :aliases => "-v", :desc => "List with package detail"
         | 
| 38 | 
            +
                def list
         | 
| 39 | 
            +
                  self.load(options)
         | 
| 40 | 
            +
                  if(!@crucible.packages || @crucible.packages.keys.length == 0)
         | 
| 41 | 
            +
                    puts "No libraries have yet been built. Navigate to a go project and build one using 'golden build (LibraryName).'"
         | 
| 42 | 
            +
                  else
         | 
| 43 | 
            +
                    puts "Golden has access to the following libraries:"
         | 
| 44 | 
            +
                    if(@crucible.verbose?)
         | 
| 45 | 
            +
                      @crucible.packages.each do |name, location|
         | 
| 46 | 
            +
                        puts "#{name}\t#{location}"
         | 
| 47 | 
            +
                      end
         | 
| 48 | 
            +
                    else
         | 
| 49 | 
            +
                      puts @crucible.packages.keys
         | 
| 50 | 
            +
                    end
         | 
| 51 | 
            +
                  end
         | 
| 52 | 
            +
                end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                desc "install [fileName]", "install a library built with golden to the current ruby project"
         | 
| 55 | 
            +
                method_option :verbose, :aliases => "-v", :desc => "Install with verbose logging"
         | 
| 56 | 
            +
                def install(packageName)
         | 
| 57 | 
            +
                  self.load(options)
         | 
| 58 | 
            +
                  if(!!@crucible.packages[packageName])
         | 
| 59 | 
            +
                    puts "installing #{packageName}."
         | 
| 60 | 
            +
                    @crucible.install(packageName)
         | 
| 61 | 
            +
                  else
         | 
| 62 | 
            +
                    puts "No libraries named #{packageName} are yet known to golden. You can list all known libraries with 'golden list'"
         | 
| 63 | 
            +
                  end
         | 
| 64 | 
            +
                end
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                protected
         | 
| 67 | 
            +
                def load(options=nil)
         | 
| 68 | 
            +
                  @crucible = Golden::Crucible.new(options)
         | 
| 69 | 
            +
                end
         | 
| 70 | 
            +
                def save
         | 
| 71 | 
            +
                  @crucible.save
         | 
| 72 | 
            +
                end
         | 
| 73 | 
            +
              end
         | 
| 74 | 
            +
            end
         | 
| 75 | 
            +
             | 
| 76 | 
            +
            Golden::Cli.start(ARGV)
         | 
    
        data/lib/crucible.rb
    ADDED
    
    | @@ -0,0 +1,133 @@ | |
| 1 | 
            +
             | 
| 2 | 
            +
            module Golden
         | 
| 3 | 
            +
              class Crucible
         | 
| 4 | 
            +
                  attr_accessor :packages, :pkgLogFile
         | 
| 5 | 
            +
                  def initialize(options=nil)
         | 
| 6 | 
            +
                    @pkgLogFile = File.expand_path("~")+"/.golden_packages.json" # Persistent package log
         | 
| 7 | 
            +
                    # @pkgLogFile = File.expand_path(File.dirname(__FILE__)+"/../packages.json") # Gemset specific package log
         | 
| 8 | 
            +
                    # puts "opened package list at #{@pkgLogFile}"
         | 
| 9 | 
            +
                    @options = options
         | 
| 10 | 
            +
                    if(!File.exist?(@pkgLogFile))
         | 
| 11 | 
            +
                      @packages = {}
         | 
| 12 | 
            +
                      self.save()
         | 
| 13 | 
            +
                    else
         | 
| 14 | 
            +
                      @packages = JSON.parse(File.open(@pkgLogFile).read)
         | 
| 15 | 
            +
                    end
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  def build(fileName,dir)
         | 
| 19 | 
            +
                    libName,extension = fileName.split('.')
         | 
| 20 | 
            +
                    if(!extension)
         | 
| 21 | 
            +
                      fileName = "#{libName}.go"
         | 
| 22 | 
            +
                    end
         | 
| 23 | 
            +
                    golden_json = "#{dir}/golden.json"
         | 
| 24 | 
            +
                    if(File.exist?(golden_json))
         | 
| 25 | 
            +
                      golden_data = JSON.parse(File.open(golden_json).read)
         | 
| 26 | 
            +
                    else
         | 
| 27 | 
            +
                      golden_data = {}
         | 
| 28 | 
            +
                    end
         | 
| 29 | 
            +
                    path = dir+"/"+fileName
         | 
| 30 | 
            +
                    outfile = "#{libName}.so"
         | 
| 31 | 
            +
                    outpath = dir+"/"+libName
         | 
| 32 | 
            +
                    goVersion = `go version`
         | 
| 33 | 
            +
                    if(!!goVersion)
         | 
| 34 | 
            +
                      if(verbose?)
         | 
| 35 | 
            +
                        puts "detected #{goVersion}"
         | 
| 36 | 
            +
                      end
         | 
| 37 | 
            +
                      # if(File.exist?("#{path}/go.mod")) # Module build procedure
         | 
| 38 | 
            +
                      #   puts "building module at #{path}"
         | 
| 39 | 
            +
                      #   puts "building standard lib"
         | 
| 40 | 
            +
                      #   system("go install -buildmode=shared -linkshared std")
         | 
| 41 | 
            +
                      #   puts "installing dependencies"
         | 
| 42 | 
            +
                      #   deps = system("go mod vendor")
         | 
| 43 | 
            +
                      #   if(!!deps)
         | 
| 44 | 
            +
                      #     puts "linking shared lib for module"
         | 
| 45 | 
            +
                      #     lnk = `go install -buildmode=shared -linkshared #{infile}`
         | 
| 46 | 
            +
                      #     puts lnk
         | 
| 47 | 
            +
                      #     puts "building shared lib for module"
         | 
| 48 | 
            +
                      #     bld = `go build -linkshared -o #{outfile}`
         | 
| 49 | 
            +
                      #     puts bld
         | 
| 50 | 
            +
                      #     system("go build -buildmode=c-shared -o #{outfile} #{fileName}")
         | 
| 51 | 
            +
                      #   end
         | 
| 52 | 
            +
                      # else
         | 
| 53 | 
            +
                        puts "building #{fileName} to shared library #{outfile}"
         | 
| 54 | 
            +
                        system("go build -buildmode=c-shared -o #{outfile} #{fileName}")
         | 
| 55 | 
            +
                      # end
         | 
| 56 | 
            +
                    else
         | 
| 57 | 
            +
                      puts "go not found."
         | 
| 58 | 
            +
                    end
         | 
| 59 | 
            +
                    file = File.open(path)
         | 
| 60 | 
            +
                    source_code = file.read
         | 
| 61 | 
            +
                    exports = source_code.scan(/\/\/\s?export(?<function>.+)/).flatten
         | 
| 62 | 
            +
                    if(verbose?)
         | 
| 63 | 
            +
                      puts "#{fileName} exports the following methods:"
         | 
| 64 | 
            +
                      puts exports
         | 
| 65 | 
            +
                    end
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                    golden_data[libName] = {}
         | 
| 68 | 
            +
                    exports.each do |e|
         | 
| 69 | 
            +
                      function_name = e.chomp.lstrip
         | 
| 70 | 
            +
                      declaration_regex = Regexp.new("func #{function_name}\s?\((?<args>.*)\) (?<returns>.*) {")
         | 
| 71 | 
            +
                      export_data = {}
         | 
| 72 | 
            +
                      export_data[:args] = {}
         | 
| 73 | 
            +
                      args = source_code.scan(declaration_regex).flatten[0]
         | 
| 74 | 
            +
                      args = args[1,args.length-2]
         | 
| 75 | 
            +
                      args = args.split(',')
         | 
| 76 | 
            +
                      args.each do |arg|
         | 
| 77 | 
            +
                        name, type = arg.split(" ")
         | 
| 78 | 
            +
                        export_data[:args][name] = type
         | 
| 79 | 
            +
                      end
         | 
| 80 | 
            +
                      export_data[:returns] = source_code.scan(declaration_regex).flatten[1]
         | 
| 81 | 
            +
                      # require "pry"
         | 
| 82 | 
            +
                      # binding.pry
         | 
| 83 | 
            +
                      golden_data[libName][function_name] = export_data
         | 
| 84 | 
            +
                    end
         | 
| 85 | 
            +
                    # require "pry"
         | 
| 86 | 
            +
                    # binding.pry
         | 
| 87 | 
            +
                    if(verbose?)
         | 
| 88 | 
            +
                      puts "writing library export info to #{golden_json}"
         | 
| 89 | 
            +
                    end
         | 
| 90 | 
            +
                    File.open(golden_json,"w") do |f|
         | 
| 91 | 
            +
                      f.write(JSON.pretty_generate(golden_data))
         | 
| 92 | 
            +
                    end
         | 
| 93 | 
            +
                    @packages[libName] = dir
         | 
| 94 | 
            +
                  end
         | 
| 95 | 
            +
             | 
| 96 | 
            +
                  def install(packageName)
         | 
| 97 | 
            +
                    cwd = Dir.pwd
         | 
| 98 | 
            +
                    extDestination = File.expand_path(cwd+"/bin")
         | 
| 99 | 
            +
                    if(!!@packages[packageName])
         | 
| 100 | 
            +
                      if(!File.exist? extDestination)
         | 
| 101 | 
            +
                        Dir.mkdir extDestination
         | 
| 102 | 
            +
                      end
         | 
| 103 | 
            +
             | 
| 104 | 
            +
                      if(File.exist?(cwd+"/golden.json"))
         | 
| 105 | 
            +
                        golden_json = JSON.parse(File.open(cwd+"/golden.json").read)
         | 
| 106 | 
            +
                        new_package = JSON.parse(File.open(@packages[packageName]+"/golden.json").read)
         | 
| 107 | 
            +
                        golden_json = golden_json.merge(new_package)
         | 
| 108 | 
            +
                        File.open(cwd+"/golden.json","w") do |f|
         | 
| 109 | 
            +
                          f.write(JSON.pretty_generate(golden_json))
         | 
| 110 | 
            +
                        end
         | 
| 111 | 
            +
                      else
         | 
| 112 | 
            +
                        FileUtils.cp(@packages[packageName]+"/golden.json", cwd+"/golden.json")
         | 
| 113 | 
            +
                      end
         | 
| 114 | 
            +
                      FileUtils.cp(@packages[packageName]+"/#{packageName}.so", extDestination+"/#{packageName}.so")
         | 
| 115 | 
            +
                    else
         | 
| 116 | 
            +
                      throw "No such package (#{packageName})."
         | 
| 117 | 
            +
                    end
         | 
| 118 | 
            +
                  end
         | 
| 119 | 
            +
                  def clear
         | 
| 120 | 
            +
                    @packages = {}
         | 
| 121 | 
            +
                    save
         | 
| 122 | 
            +
                  end
         | 
| 123 | 
            +
                  def verbose?
         | 
| 124 | 
            +
                    return (!!@options && !!@options[:verbose])
         | 
| 125 | 
            +
                  end
         | 
| 126 | 
            +
                  def save
         | 
| 127 | 
            +
                    # @pkgLogFile = File.expand_path(File.dirname(__FILE__)+"/../packages.json") # Installation specific package log
         | 
| 128 | 
            +
                    File.open(@pkgLogFile,"w") do |f|
         | 
| 129 | 
            +
                      f.write(JSON.pretty_generate(@packages))
         | 
| 130 | 
            +
                    end
         | 
| 131 | 
            +
                  end
         | 
| 132 | 
            +
              end
         | 
| 133 | 
            +
            end
         | 
    
        data/lib/golden.rb
    ADDED
    
    | @@ -0,0 +1,31 @@ | |
| 1 | 
            +
            require 'ffi'
         | 
| 2 | 
            +
            require 'json'
         | 
| 3 | 
            +
            require "crucible"
         | 
| 4 | 
            +
            module Golden
         | 
| 5 | 
            +
              def self.require(library)
         | 
| 6 | 
            +
                golden_data = self.load
         | 
| 7 | 
            +
                return self::Library.new(File.expand_path("./bin/#{library}.so"),golden_data[library])
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
              def self.load
         | 
| 10 | 
            +
                golden_json = File.expand_path(Dir.pwd()+"/golden.json")
         | 
| 11 | 
            +
                if(!!File.exist?(golden_json))
         | 
| 12 | 
            +
                  golden_data = JSON.parse(File.open(golden_json).read)
         | 
| 13 | 
            +
                else
         | 
| 14 | 
            +
                  throw "golden.json not found."
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
                return golden_data
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
              module Library
         | 
| 19 | 
            +
                extend FFI::Library
         | 
| 20 | 
            +
                def self.new(library_file, exports)
         | 
| 21 | 
            +
                  @exports = exports
         | 
| 22 | 
            +
                  @library_file = library_file
         | 
| 23 | 
            +
                  ffi_lib @library_file
         | 
| 24 | 
            +
                  @exports.each do |func, data|
         | 
| 25 | 
            +
                    # puts "attach_function #{func}, #{data["args"]}, #{data["returns"]}"
         | 
| 26 | 
            +
                    attach_function func, data["args"].values.map(&:to_sym), data["returns"].to_sym
         | 
| 27 | 
            +
                  end
         | 
| 28 | 
            +
                  return self
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
              end
         | 
| 31 | 
            +
            end
         | 
    
        metadata
    ADDED
    
    | @@ -0,0 +1,118 @@ | |
| 1 | 
            +
            --- !ruby/object:Gem::Specification
         | 
| 2 | 
            +
            name: golden
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            +
              version: 0.5.1
         | 
| 5 | 
            +
            platform: ruby
         | 
| 6 | 
            +
            authors:
         | 
| 7 | 
            +
            - Greg Mikeska
         | 
| 8 | 
            +
            autorequire: 
         | 
| 9 | 
            +
            bindir: exe
         | 
| 10 | 
            +
            cert_chain: []
         | 
| 11 | 
            +
            date: 2021-02-23 00:00:00.000000000 Z
         | 
| 12 | 
            +
            dependencies:
         | 
| 13 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 14 | 
            +
              name: ffi
         | 
| 15 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 | 
            +
                requirements:
         | 
| 17 | 
            +
                - - "~>"
         | 
| 18 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            +
                    version: '1.14'
         | 
| 20 | 
            +
              type: :runtime
         | 
| 21 | 
            +
              prerelease: false
         | 
| 22 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 | 
            +
                requirements:
         | 
| 24 | 
            +
                - - "~>"
         | 
| 25 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            +
                    version: '1.14'
         | 
| 27 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 28 | 
            +
              name: pry
         | 
| 29 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 | 
            +
                requirements:
         | 
| 31 | 
            +
                - - "~>"
         | 
| 32 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            +
                    version: 0.14.0
         | 
| 34 | 
            +
              type: :development
         | 
| 35 | 
            +
              prerelease: false
         | 
| 36 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 | 
            +
                requirements:
         | 
| 38 | 
            +
                - - "~>"
         | 
| 39 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            +
                    version: 0.14.0
         | 
| 41 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 42 | 
            +
              name: bundler
         | 
| 43 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 | 
            +
                requirements:
         | 
| 45 | 
            +
                - - "~>"
         | 
| 46 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            +
                    version: '1.13'
         | 
| 48 | 
            +
              type: :development
         | 
| 49 | 
            +
              prerelease: false
         | 
| 50 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 | 
            +
                requirements:
         | 
| 52 | 
            +
                - - "~>"
         | 
| 53 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            +
                    version: '1.13'
         | 
| 55 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 56 | 
            +
              name: rake
         | 
| 57 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 | 
            +
                requirements:
         | 
| 59 | 
            +
                - - "~>"
         | 
| 60 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            +
                    version: 12.3.3
         | 
| 62 | 
            +
              type: :development
         | 
| 63 | 
            +
              prerelease: false
         | 
| 64 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 | 
            +
                requirements:
         | 
| 66 | 
            +
                - - "~>"
         | 
| 67 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            +
                    version: 12.3.3
         | 
| 69 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 70 | 
            +
              name: rspec
         | 
| 71 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 | 
            +
                requirements:
         | 
| 73 | 
            +
                - - "~>"
         | 
| 74 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            +
                    version: '3.0'
         | 
| 76 | 
            +
              type: :development
         | 
| 77 | 
            +
              prerelease: false
         | 
| 78 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 | 
            +
                requirements:
         | 
| 80 | 
            +
                - - "~>"
         | 
| 81 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            +
                    version: '3.0'
         | 
| 83 | 
            +
            description: Golden is a development tool that makes it easier to wrap Go libraries
         | 
| 84 | 
            +
              for use in Ruby.
         | 
| 85 | 
            +
            email:
         | 
| 86 | 
            +
            - gmikeska07@gmail.com
         | 
| 87 | 
            +
            executables:
         | 
| 88 | 
            +
            - golden
         | 
| 89 | 
            +
            extensions: []
         | 
| 90 | 
            +
            extra_rdoc_files: []
         | 
| 91 | 
            +
            files:
         | 
| 92 | 
            +
            - exe/golden
         | 
| 93 | 
            +
            - lib/crucible.rb
         | 
| 94 | 
            +
            - lib/golden.rb
         | 
| 95 | 
            +
            homepage: https://github.com/gmikeska/golden
         | 
| 96 | 
            +
            licenses: []
         | 
| 97 | 
            +
            metadata: {}
         | 
| 98 | 
            +
            post_install_message: 
         | 
| 99 | 
            +
            rdoc_options: []
         | 
| 100 | 
            +
            require_paths:
         | 
| 101 | 
            +
            - lib
         | 
| 102 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 103 | 
            +
              requirements:
         | 
| 104 | 
            +
              - - ">="
         | 
| 105 | 
            +
                - !ruby/object:Gem::Version
         | 
| 106 | 
            +
                  version: '0'
         | 
| 107 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 108 | 
            +
              requirements:
         | 
| 109 | 
            +
              - - ">="
         | 
| 110 | 
            +
                - !ruby/object:Gem::Version
         | 
| 111 | 
            +
                  version: '0'
         | 
| 112 | 
            +
            requirements: []
         | 
| 113 | 
            +
            rubygems_version: 3.0.3
         | 
| 114 | 
            +
            signing_key: 
         | 
| 115 | 
            +
            specification_version: 4
         | 
| 116 | 
            +
            summary: Golden is a development tool that makes it easier to wrap Go libraries for
         | 
| 117 | 
            +
              use in Ruby.
         | 
| 118 | 
            +
            test_files: []
         |