Sha256: 85ddc233428e117b3949c0271e40c2d61239da6564da1daf6ac726863f7b03c5

Contents?: true

Size: 1.1 KB

Versions: 3

Compression:

Stored size: 1.1 KB

Contents

namespace :xdr do
  xdr_defs = FileList[
    'xdr/Stellar-types.x',
    'xdr/Stellar-ledger-entries.x',
    'xdr/Stellar-transaction.x',
    'xdr/Stellar-ledger.x',
    'xdr/Stellar-overlay.x',
    'xdr/Stellar-SCP.x',
  ]

  task :update, [:ref] => [:clean, :generate]
  task :generate => 'generated/stellar-base-generated.rb'

  directory 'xdr'
  directory 'generated'

  file 'generated/stellar-base-generated.rb' => xdr_defs do |t|
    require "xdrgen"

    compilation = Xdrgen::Compilation.new(
      t.sources,
      output_dir: "generated",
      namespace:  "stellar-base-generated",
      language:   :ruby
    )
    compilation.compile
  end

  rule '.x', [:ref] => ['xdr'] do |t, args|
    args.with_defaults(ref: :master)
    core_file = github_client.contents("stellar/stellar-core", path: "src/#{t.name}", ref: args.ref)
    IO.write(t.name, core_file.rels[:download].get.data)
  end
  
  task :clean do
    rm_rf 'xdr'
    rm_rf 'generated'
  end

  def github_client
    return @github_client if defined?(@github_client)
    require 'octokit'
    @github_client = Octokit::Client.new(netrc: true)
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
stellar-base-0.22.0 tasks/xdr.rake
stellar-base-0.21.0 tasks/xdr.rake
stellar-base-0.20.0 tasks/xdr.rake