lib/makit/mp/project_mp.rb in makit-0.0.1 vs lib/makit/mp/project_mp.rb in makit-0.0.2
- old
+ new
@@ -1,149 +1,156 @@
-# frozen_string_literal: true
-require "json"
-require "yaml"
-
-module Makit
- module V1
- class Project
- def to_yaml
- data = JSON.parse(self.to_pretty_json)
- data.to_yaml.sub(/^---\n/, "")
- end
-
- def self.create
- project = Makit::V1::Project.new
- project.set_default_values
- project
- end
-
- def open(filename)
- other = Makit::V1::Project::create_from_file(filename)
- self.name = other.name
- self.git_remote_url = other.git_remote_url
- self.dotnet_projects = other.dotnet_projects
- end
-
- def self.create_from_file(filename)
- extension = File.extname(filename)
- case extension
- when ".yml"
- yaml = File.read(filename)
- create_from_yaml(yaml)
- when ".json"
- json = File.read(filename)
- create_from_json(json)
- else
- raise "unsupported file extension: #{extension}"
- end
- end
-
- def self.create_from_yaml(yaml)
- json = JSON.pretty_generate(YAML.load(yaml))
- project = Makit::V1::Project.decode_json(json)
- project
- end
-
- def self.create_from_json(json)
- project = Makit::V1::Project.decode_json(json)
- project
- end
-
- def set_default_values
- #self.language = "csharp"
- #self.primary_artifact_type = "nuget"
- if self.git_remote_url.nil? || self.git_remote_url.empty?
- self.git_remote_url = `git remote get-url origin`.strip
- end
- if self.name.nil? || self.name.empty?
- if (!self.git_remote_url.nil? && !self.git_remote_url.empty?)
- self.name = get_name(File.basename(self.git_remote_url, ".git")) # get_capitalized_name(File.basename(self.git_remote_url, ".git"))
- else
- self.name = get_name(File.basename(Dir.getwd)) # get_capitalized_name(File.basename(Dir.getwd))
- end
- end
- self
- end
-
- def get_name(name)
- if !self.git_remote_url.nil? && !self.git_remote_url.empty?
- is_dotnet = self.git_remote_url.include?("nuget")
- if is_dotnet
- get_capitalized_name(name)
- end
- end
- name.downcase
- end
-
- def get_capitalized_name(name)
- name.split(".").map(&:capitalize).join(".")
- end
-
- def save_as(filename)
- extension = File.extname(filename)
- case extension
- when ".json"
- File.write(filename, self.to_pretty_json)
- when ".yml"
- File.write(filename, self.to_yaml)
- else
- raise "unsupported file extension: #{extension}"
- end
- end
-
- def with_dotnet_project(template, name, output)
- if !self.dotnet_projects.any? { |project| project.output == output }
- project = Makit::V1::DotNetProject.new
- project.template = template
- project.name = name
- project.output = output
- self.dotnet_projects << project
- end
- end
-
- def setup
- setup_dotnet_projects
- end
-
- def setup_dotnet_projects
- if self.dotnet_projects.any?
- if (!File.exist?("#{self.name}.sln"))
- puts " Creating solution file: " + "#{self.name}.sln".colorize(:green)
- "dotnet new sln -n #{self.name}".run unless File.exist?("#{self.name}.sln")
- else
- puts " Solution file already exists: " + "#{self.name}.sln".colorize(:yellow)
- end
- self.dotnet_projects.each do |project|
- add_project = true
- if (project.os == "windows" && !Makit::Environment.is_windows?)
- add_project = false
- end
- if (add_project)
- Makit::DotNet.new_project(project.template, project.name, project.output)
- # add any nuget packages to the project
- project_filename = "#{project.output}/#{project.name}.csproj"
- project.packages.each { |package|
- Makit::DotNet::add_package(project_filename, package)
- }
- end
- end
- Makit::DotNet.new_solution(self.name)
- Makit::DotNet.sln_add_projects(self.name)
- else
- puts " no dotnet projects found".colorize(:yellow)
- end
- end
-
- def build_dotnet_projects
- self.dotnet_projects.each do |project|
- "dotnet build #{project.output} --configuration Release".run
- end
- end
-
- def test_dotnet_projects
- self.dotnet_projects.each do |project|
- "dotnet test #{project.output} --configuration Release".run
- end
- end
- end # class Project
- end # module V1
-end # module Makit
+# frozen_string_literal: true
+require "json"
+require "yaml"
+
+module Makit
+ module V1
+ class Project
+ def to_yaml
+ data = JSON.parse(self.to_pretty_json)
+ data.to_yaml.sub(/^---\n/, "")
+ end
+
+ def self.create
+ project = Makit::V1::Project.new
+ project.set_default_values
+ project
+ end
+
+ def open(filename)
+ other = Makit::V1::Project::create_from_file(filename)
+ self.name = other.name
+ self.git_remote_url = other.git_remote_url
+ self.dotnet_projects = other.dotnet_projects
+ end
+
+ def self.create_from_file(filename)
+ extension = File.extname(filename)
+ case extension
+ when ".yml"
+ yaml = File.read(filename)
+ create_from_yaml(yaml)
+ when ".json"
+ json = File.read(filename)
+ create_from_json(json)
+ else
+ raise "unsupported file extension: #{extension}"
+ end
+ end
+
+ def self.create_from_yaml(yaml)
+ json = JSON.pretty_generate(YAML.load(yaml))
+ project = Makit::V1::Project.decode_json(json)
+ project
+ end
+
+ def self.create_from_json(json)
+ project = Makit::V1::Project.decode_json(json)
+ project
+ end
+
+ def set_default_values
+ #self.language = "csharp"
+ #self.primary_artifact_type = "nuget"
+ if self.git_remote_url.nil? || self.git_remote_url.empty?
+ self.git_remote_url = `git remote get-url origin`.strip
+ end
+ if self.name.nil? || self.name.empty?
+ if (!self.git_remote_url.nil? && !self.git_remote_url.empty?)
+ self.name = get_name(File.basename(self.git_remote_url, ".git")) # get_capitalized_name(File.basename(self.git_remote_url, ".git"))
+ else
+ self.name = get_name(File.basename(Dir.getwd)) # get_capitalized_name(File.basename(Dir.getwd))
+ end
+ end
+ self
+ end
+
+ def get_name(name)
+ if !self.git_remote_url.nil? && !self.git_remote_url.empty?
+ is_dotnet = self.git_remote_url.include?("nuget")
+ if is_dotnet
+ get_capitalized_name(name)
+ end
+ end
+ name.downcase
+ end
+
+ def get_capitalized_name(name)
+ name.split(".").map(&:capitalize).join(".")
+ end
+
+ def save_as(filename)
+ extension = File.extname(filename)
+ case extension
+ when ".json"
+ File.write(filename, self.to_pretty_json)
+ when ".yml"
+ File.write(filename, self.to_yaml)
+ else
+ raise "unsupported file extension: #{extension}"
+ end
+ end
+
+ def with_dotnet_project(template, name, output)
+ if !self.dotnet_projects.any? { |project| project.output == output }
+ project = Makit::V1::DotNetProject.new
+ project.template = template
+ project.name = name
+ project.output = output
+ self.dotnet_projects << project
+ end
+ end
+
+ def setup
+ setup_dotnet_projects
+ end
+
+ def build
+ build_dotnet_projects
+ end
+
+ def setup_dotnet_projects
+ if self.dotnet_projects.any?
+ if (!File.exist?("#{self.name}.sln"))
+ puts " Creating solution file: " + "#{self.name}.sln".colorize(:green)
+ "dotnet new sln -n #{self.name}".run unless File.exist?("#{self.name}.sln")
+ else
+ puts " Solution file already exists: " + "#{self.name}.sln".colorize(:yellow)
+ end
+ self.dotnet_projects.each do |project|
+ add_project = true
+ if (project.os == "windows" && !Makit::Environment.is_windows?)
+ add_project = false
+ end
+ if (add_project)
+ Makit::DotNet.new_project(project.template, project.name, project.output)
+ # add any nuget packages to the project
+ project_filename = "#{project.output}/#{project.name}.csproj"
+ project.packages.each { |package|
+ Makit::DotNet::add_package(project_filename, package)
+ }
+ end
+ end
+ Makit::DotNet.new_solution(self.name)
+ Makit::DotNet.sln_add_projects(self.name)
+ else
+ puts " no dotnet projects found".colorize(:yellow)
+ end
+ end
+
+ def build_dotnet_projects
+ self.dotnet_projects.each do |project|
+ project.build_args.each do |build_arg|
+ project_path = File.join(project.output, "#{project.name}.csproj")
+ Makit::DotNet.build(project_path, build_arg.configuration, build_arg.output)
+ end
+ end
+ end
+
+ def test_dotnet_projects
+ self.dotnet_projects.each do |project|
+ "dotnet test #{project.output} --configuration Release".run
+ end
+ end
+ end # class Project
+ end # module V1
+end # module Makit