Class: Makit::V1::Configuration::ProjectServiceImpl
- Inherits:
-
Makit::V1::Configuration::ProjectService::Service
- Object
- Makit::V1::Configuration::ProjectService::Service
- Makit::V1::Configuration::ProjectServiceImpl
- Defined in:
- lib/makit/v1/configuration/project_service_impl.rb
Overview
gRPC service implementation for ProjectService Implements all the RPC methods defined in the protobuf service definition
Instance Method Summary collapse
-
#create_project(request, _unused_call) ⇒ Object
Create a new project with default values.
-
#generate_gitlab_ci(request, _unused_call) ⇒ Object
Generate GitLab CI YAML from project.
-
#generate_rakefile(request, _unused_call) ⇒ Object
Generate Rakefile from project.
-
#load_default(request, _unused_call) ⇒ Object
Load the default project from .makit.json or create a new one.
-
#load_from_file(request, _unused_call) ⇒ Object
Load a project from a JSON file.
-
#load_from_json(request, _unused_call) ⇒ Object
Load a project from JSON string.
-
#merge_projects(request, _unused_call) ⇒ Object
Merge two project configurations.
-
#save_to_default(request, _unused_call) ⇒ Object
Save a project to the default .makit.json file.
-
#save_to_file(request, _unused_call) ⇒ Object
Save a project to a specific path as pretty JSON.
-
#update_project(request, _unused_call) ⇒ Object
Update project with new values.
-
#validate_project(request, _unused_call) ⇒ Object
Validate project configuration.
-
#write_rakefile(request, _unused_call) ⇒ Object
Write Rakefile to file.
Instance Method Details
#create_project(request, _unused_call) ⇒ Object
Create a new project with default values
158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 |
# File 'lib/makit/v1/configuration/project_service_impl.rb', line 158 def create_project(request, _unused_call) raise ArgumentError, "Project name cannot be empty" if request.name.nil? || request.name.strip.empty? project = Project.new( name: request.name, version: request.version || "0.0.0", project_type: request.project_type || "gem", authors: "authors", description: "description", license_expression: "MIT", steps: [] ) project rescue ArgumentError => e raise GRPC::BadStatus.new(GRPC::Core::StatusCodes::INVALID_ARGUMENT, e.) rescue StandardError => e raise GRPC::BadStatus.new(GRPC::Core::StatusCodes::INTERNAL, e.) end |
#generate_gitlab_ci(request, _unused_call) ⇒ Object
Generate GitLab CI YAML from project
88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/makit/v1/configuration/project_service_impl.rb', line 88 def generate_gitlab_ci(request, _unused_call) validate_project_model(request.project) raise ArgumentError, "Path cannot be empty" if request.path.nil? || request.path.strip.empty? # Convert protobuf model to Ruby model for GitLab helper ruby_model = convert_to_ruby_model(request.project) Makit::Configuration::GitLabHelper.to_yaml(ruby_model, request.path) Google::Protobuf::Empty.new rescue ArgumentError => e raise GRPC::BadStatus.new(GRPC::Core::StatusCodes::INVALID_ARGUMENT, e.) rescue StandardError => e raise GRPC::BadStatus.new(GRPC::Core::StatusCodes::INTERNAL, e.) end |
#generate_rakefile(request, _unused_call) ⇒ Object
Generate Rakefile from project
103 104 105 106 107 108 109 110 111 112 113 114 |
# File 'lib/makit/v1/configuration/project_service_impl.rb', line 103 def generate_rakefile(request, _unused_call) validate_project_model(request.project) # Convert protobuf model to Ruby model for Rakefile helper ruby_model = convert_to_ruby_model(request.project) content = Makit::Configuration::RakefileHelper.generate(ruby_model) GenerateRakefileResponse.new(content: content) rescue ArgumentError => e raise GRPC::BadStatus.new(GRPC::Core::StatusCodes::INVALID_ARGUMENT, e.) rescue StandardError => e raise GRPC::BadStatus.new(GRPC::Core::StatusCodes::INTERNAL, e.) end |
#load_default(request, _unused_call) ⇒ Object
Load the default project from .makit.json or create a new one
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/makit/v1/configuration/project_service_impl.rb', line 67 def load_default(request, _unused_call) if File.exist?(".makit.json") load_from_file(LoadFromFileRequest.new(path: ".makit.json"), nil) else project = Project.new( name: "", version: "0.0.0", project_type: "", authors: "authors", description: "description", license_expression: "MIT", steps: [] ) #Makit::Logging.default_logger.warn("Project not configured") project end rescue StandardError => e raise GRPC::BadStatus.new(GRPC::Core::StatusCodes::INTERNAL, e.) end |
#load_from_file(request, _unused_call) ⇒ Object
Load a project from a JSON file
15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/makit/v1/configuration/project_service_impl.rb', line 15 def load_from_file(request, _unused_call) raise ArgumentError, "File does not exist: #{request.path}" unless File.exist?(request.path) content = File.read(request.path) data = JSON.parse(content, symbolize_names: true) project = convert_from_json_data(data) project rescue ArgumentError => e raise GRPC::BadStatus.new(GRPC::Core::StatusCodes::INVALID_ARGUMENT, e.) rescue StandardError => e raise GRPC::BadStatus.new(GRPC::Core::StatusCodes::INTERNAL, e.) end |
#load_from_json(request, _unused_call) ⇒ Object
Load a project from JSON string
30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/makit/v1/configuration/project_service_impl.rb', line 30 def load_from_json(request, _unused_call) raise ArgumentError, "JSON string cannot be empty" if request.json_string.nil? || request.json_string.strip.empty? data = JSON.parse(request.json_string, symbolize_names: true) project = convert_from_json_data(data) project rescue ArgumentError => e raise GRPC::BadStatus.new(GRPC::Core::StatusCodes::INVALID_ARGUMENT, e.) rescue StandardError => e raise GRPC::BadStatus.new(GRPC::Core::StatusCodes::INTERNAL, e.) end |
#merge_projects(request, _unused_call) ⇒ Object
Merge two project configurations
140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 |
# File 'lib/makit/v1/configuration/project_service_impl.rb', line 140 def merge_projects(request, _unused_call) merged = Project.new( git_remote_url: request.override_project.git_remote_url || request.base_project.git_remote_url, name: request.override_project.name || request.base_project.name, version: request.override_project.version || request.base_project.version, project_type: request.override_project.project_type || request.base_project.project_type, authors: request.override_project. || request.base_project., description: request.override_project.description || request.base_project.description, license_expression: request.override_project.license_expression || request.base_project.license_expression, dotnet_projects: request.override_project.dotnet_projects.any? ? request.override_project.dotnet_projects.to_a : request.base_project.dotnet_projects.to_a, steps: request.override_project.steps.any? ? request.override_project.steps.to_a : request.base_project.steps.to_a ) merged rescue StandardError => e raise GRPC::BadStatus.new(GRPC::Core::StatusCodes::INTERNAL, e.) end |
#save_to_default(request, _unused_call) ⇒ Object
Save a project to the default .makit.json file
56 57 58 59 60 61 62 63 64 |
# File 'lib/makit/v1/configuration/project_service_impl.rb', line 56 def save_to_default(request, _unused_call) validate_project_model(request.project) File.write(".makit.json", convert_to_json_pretty(request.project)) Google::Protobuf::Empty.new rescue ArgumentError => e raise GRPC::BadStatus.new(GRPC::Core::StatusCodes::INVALID_ARGUMENT, e.) rescue StandardError => e raise GRPC::BadStatus.new(GRPC::Core::StatusCodes::INTERNAL, e.) end |
#save_to_file(request, _unused_call) ⇒ Object
Save a project to a specific path as pretty JSON
43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/makit/v1/configuration/project_service_impl.rb', line 43 def save_to_file(request, _unused_call) validate_project_model(request.project) raise ArgumentError, "Path cannot be empty" if request.path.nil? || request.path.strip.empty? File.write(request.path, convert_to_json_pretty(request.project)) Google::Protobuf::Empty.new rescue ArgumentError => e raise GRPC::BadStatus.new(GRPC::Core::StatusCodes::INVALID_ARGUMENT, e.) rescue StandardError => e raise GRPC::BadStatus.new(GRPC::Core::StatusCodes::INTERNAL, e.) end |
#update_project(request, _unused_call) ⇒ Object
Update project with new values
178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 |
# File 'lib/makit/v1/configuration/project_service_impl.rb', line 178 def update_project(request, _unused_call) updated_project = Project.new( git_remote_url: request.project.git_remote_url, name: request.project.name, version: request.project.version, project_type: request.project.project_type, authors: request.project., description: request.project.description, license_expression: request.project.license_expression, dotnet_projects: request.project.dotnet_projects.to_a, steps: request.project.steps.to_a ) # Apply updates request.updates.each do |key, value| case key.to_sym when :name updated_project.name = value when :version updated_project.version = value when :project_type updated_project.project_type = value when :authors updated_project. = value when :description updated_project.description = value when :license_expression updated_project.license_expression = value when :git_remote_url updated_project.git_remote_url = value end end updated_project rescue StandardError => e raise GRPC::BadStatus.new(GRPC::Core::StatusCodes::INTERNAL, e.) end |
#validate_project(request, _unused_call) ⇒ Object
Validate project configuration
132 133 134 135 136 137 |
# File 'lib/makit/v1/configuration/project_service_impl.rb', line 132 def validate_project(request, _unused_call) errors = validate_project_model_errors(request.project) ValidateProjectResponse.new(errors: errors) rescue StandardError => e raise GRPC::BadStatus.new(GRPC::Core::StatusCodes::INTERNAL, e.) end |
#write_rakefile(request, _unused_call) ⇒ Object
Write Rakefile to file
117 118 119 120 121 122 123 124 125 126 127 128 129 |
# File 'lib/makit/v1/configuration/project_service_impl.rb', line 117 def write_rakefile(request, _unused_call) validate_project_model(request.project) raise ArgumentError, "Path cannot be empty" if request.path.nil? || request.path.strip.empty? # Convert protobuf model to Ruby model for Rakefile helper ruby_model = convert_to_ruby_model(request.project) Makit::Configuration::RakefileHelper.write(ruby_model, request.path) Google::Protobuf::Empty.new rescue ArgumentError => e raise GRPC::BadStatus.new(GRPC::Core::StatusCodes::INVALID_ARGUMENT, e.) rescue StandardError => e raise GRPC::BadStatus.new(GRPC::Core::StatusCodes::INTERNAL, e.) end |