Rakefile in grpc-orin3-provider-0.1.0 vs Rakefile in grpc-orin3-provider-1.0.0
- old
+ new
@@ -1,4 +1,46 @@
# 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