Sha256: 9a2c1cfb7f39e6120adc68156785301e15604e97d273c0f34dac4ee1ff9ebc35

Contents?: true

Size: 1.7 KB

Versions: 1

Compression:

Stored size: 1.7 KB

Contents

# frozen_string_literal: true

require "bundler/gem_tasks"
require 'bundler/setup'
require 'rake'
require 'fileutils'

ROOT_DIR = File.expand_path(__dir__)
CURRENT_DIR = Dir.pwd

task default: %i[]

# protoのビルド方法
# ORiN協議会のORiN3レポジトリをクローンして、以下のrakeコマンドを実行する
# bundle exec rake "grpc:build[~/Repos/ORiN3/src/Design.ORiN3.Common/]"
# bundle exec rake "grpc:build[~/Repos/ORiN3/src/Design.ORiN3.Provider/]"
# bundle exec rake "grpc:build[~/Repos/ORiN3/src/Message.ORiN3.Provider/]"
# bundle exec rake "grpc:build[~/Repos/ORiN3/src/Message.ORiN3.RemoteEngine/]"
namespace :grpc do
  desc "Build gRPC Ruby files"
  task :build, [:target_folder] do |t, args|
    # 引数が指定されていなければエラーを出力して終了
    unless args[:target_folder]
      abort "Error: target_folder argument is required. Usage: rake grpc:guild[<target_folder>]"
    end

    # ユーザが指定したフォルダを取得し、末端のフォルダ名のみ取得
    target_folder = File.expand_path(args[:target_folder])
    target_folder_name = File.basename(target_folder)  # 末端のフォルダ名を取得
    puts "ターゲット: " + target_folder

    # 出力ディレクトリのパスを構成
    output_dir = File.join(ROOT_DIR, 'gen', target_folder_name)
    puts "出力先: " + output_dir
  
    # 出力ディレクトリが存在しない場合は作成
    FileUtils.mkdir_p(output_dir) unless Dir.exist?(output_dir)
  
    # grpc_tools_ruby_protocコマンドを実行
    Dir.chdir(target_folder) do
      system(
        "grpc_tools_ruby_protoc -I./ -I../ --ruby_out=#{output_dir} --grpc_out=#{output_dir} */*.proto"
      )
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
grpc-orin3-provider-1.0.0 Rakefile