lib/makit/mp/project_mp.rb in makit-0.0.56 vs lib/makit/mp/project_mp.rb in makit-0.0.57

- old
+ new

@@ -1,210 +1,210 @@ -# 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::Serializer.open(filename, Makit::V1::Project) - #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 - self.artifacts = other.artifacts - 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) - Makit::Serializer.save_as(filename, self) - #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 make - setup_dotnet_projects - make_dotnet_projects - - # verify the artifacts exist - self.artifacts.each do |artifact| - raise "artifact does not exist: #{artifact}" if !File.exist?(artifact) - end - end - - def build - build_dotnet_projects - end - - def test - test_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 make_dotnet_projects - self.dotnet_projects.each do |project| - if (project.os == "windows" && !Makit::Environment.is_windows?) - next - else - project.commands.each do |command| - newest_file_timestamp = Makit::Directory::get_newest_file_timestamp(project.output) - #newest_file = Makit::Directory::get_newest_file_or_now(project.output) - command_request = Makit::RUNNER::parse_command_request(command) - RUNNER.cache_run(command_request, newest_file_timestamp) - end - end - end - end - - def build_dotnet_projects - self.dotnet_projects.each do |project| - if (project.os == "windows" && !Makit::Environment.is_windows?) - next - else - project.commands.each do |command| - newest_file_timestamp = Makit::Directory::get_newest_file_timestamp(project.output) - #newest_file = Makit::Directory::get_newest_file_or_now(project.output) - command_request = Makit::RUNNER::parse_command_request(command) - RUNNER.cache_run(command_request, newest_file_timestamp) - end - 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 - project.publish_args.each do |publish_arg| - project_path = File.join(project.output, "#{project.name}.csproj") - Makit::DotNet.publish(project_path, publish_arg.configuration, publish_arg.output) - end - end - end - end - - def test_dotnet_projects - self.dotnet_projects.each do |project| - if (project.os == "windows" && !Makit::Environment.is_windows?) - next - else - project.test_args.each do |test_args| - project_path = File.join(project.output, "#{project.name}.csproj") - Makit::DotNet.test(project_path, test_args.configuration, test_args.output) - end - #"dotnet test #{project.output} --configuration Release".run - end - 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::Serializer.open(filename, Makit::V1::Project) + #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 + self.artifacts = other.artifacts + 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) + Makit::Serializer.save_as(filename, self) + #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 make + setup_dotnet_projects + make_dotnet_projects + + # verify the artifacts exist + self.artifacts.each do |artifact| + raise "artifact does not exist: #{artifact}" if !File.exist?(artifact) + end + end + + def build + build_dotnet_projects + end + + def test + test_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 make_dotnet_projects + self.dotnet_projects.each do |project| + if (project.os == "windows" && !Makit::Environment.is_windows?) + next + else + project.commands.each do |command| + newest_file_timestamp = Makit::Directory::get_newest_file_timestamp(project.output) + #newest_file = Makit::Directory::get_newest_file_or_now(project.output) + command_request = Makit::RUNNER::parse_command_request(command) + RUNNER.cache_run(command_request, newest_file_timestamp) + end + end + end + end + + def build_dotnet_projects + self.dotnet_projects.each do |project| + if (project.os == "windows" && !Makit::Environment.is_windows?) + next + else + project.commands.each do |command| + newest_file_timestamp = Makit::Directory::get_newest_file_timestamp(project.output) + #newest_file = Makit::Directory::get_newest_file_or_now(project.output) + command_request = Makit::RUNNER::parse_command_request(command) + RUNNER.cache_run(command_request, newest_file_timestamp) + end + 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 + project.publish_args.each do |publish_arg| + project_path = File.join(project.output, "#{project.name}.csproj") + Makit::DotNet.publish(project_path, publish_arg.configuration, publish_arg.output) + end + end + end + end + + def test_dotnet_projects + self.dotnet_projects.each do |project| + if (project.os == "windows" && !Makit::Environment.is_windows?) + next + else + project.test_args.each do |test_args| + project_path = File.join(project.output, "#{project.name}.csproj") + Makit::DotNet.test(project_path, test_args.configuration, test_args.output) + end + #"dotnet test #{project.output} --configuration Release".run + end + end + end + end # class Project + end # module V1 +end # module Makit