lib/makit/dotnet.rb in makit-0.0.57 vs lib/makit/dotnet.rb in makit-0.0.58

- old
+ new

@@ -1,182 +1,182 @@ -module Makit - class DotNet - def self.is_installed? - File.exist?(Makit::Environment.which("dotnet")) - end - - def self.version - `dotnet --version` - end - - def self.project_short_name(project_path) - project_name = File.basename(project_path, ".csproj") - project_name - end - - def self.new_project(template, name, output, args = "") - if Dir.exist? output - puts " .csproj ".colorize(:grey) + "#{name}".colorize(:green) - else - "dotnet new #{template} --name #{name} --output #{output} #{args}".run - end - end - - def self.set_project_target_framework(project_hint, target_framework) - project_path = find_project(project_hint) - project_content = File.read(project_path) - project_content.gsub!(/<TargetFramework>.*<\/TargetFramework>/, "<TargetFramework>#{target_framework}</TargetFramework>") - File.write(project_path, project_content) - end - - def self.find_project(project_hint) - matches = [] - Dir.glob("**/*.csproj").each do |project_path| - #project_name = File.basename(project_path, ".csproj") - if project_path.include?(project_hint) - matches << project_path - end - end - if matches.length == 1 - return matches.first - elsif matches.length > 1 - raise "Multiple projects found matching #{project_hint}".colorize(:red) - end - raise "No project found matching #{project_hint}".colorize(:red) - end - - def self.add_package(project_path, package_name) - if (!File.exist?(project_path)) - actual_project_path = Makit::DotNet::find_project(project_path) - if (!File.exist?(actual_project_path)) - raise "Project #{project_path} does not exist".colorize(:red) - else - project_path = actual_project_path - end - end - project_content = File.read(project_path) - if (!project_content.include?("\"#{package_name}\"")) - "dotnet add #{project_path} package #{package_name}".run - else - puts " package ".colorize(:grey) + "#{package_name}".colorize(:green) - #puts " #{project_short_name(project_path)} has package #{package_name}".colorize(:grey) - end - end - - def self.add_packages(project_path, packages) - packages.each do |package| - add_package(project_path, package) - end - end - - def self.add_reference(project_path, reference_path) - if (!File.exist?(project_path)) - actual_project_path = Makit::DotNet::find_project(project_path) - if (!File.exist?(actual_project_path)) - raise "Project #{project_path} does not exist".colorize(:red) - else - project_path = actual_project_path - end - end - if (!File.exist?(reference_path)) - actual_reference_path = Makit::DotNet::find_project(reference_path) - if (!File.exist?(actual_reference_path)) - raise "Project #{reference_path} does not exist".colorize(:red) - else - reference_path = actual_reference_path - end - end - project_content = File.read(project_path) - if (project_content.include?(File.basename(reference_path))) - puts " reference ".colorize(:grey) + "#{reference_path}".colorize(:green) - #puts " #{project_short_name(project_path)} references #{project_short_name(reference_path)}".colorize(:grey) - #puts " reference ".colorize(:grey) + "#{reference_path}".colorize(:yellow) + " is in ".colorize(:grey) + "#{project_path}".colorize(:yellow) - else - "dotnet add #{project_path} reference #{reference_path}".run - end - end - - def self.add_references(project_path, references) - references.each do |reference| - add_reference(project_path, reference) - end - end - - def self.new_solution(name) - if File.exist? "#{name}.sln" - #puts "Solution #{name}.sln already exists".colorize(:yellow) - #puts " #{name}.sln".colorize(:green) + " exists".colorize(:grey) - else - "dotnet new sln --name #{name}".run - end - end - - def self.build(project_path, configuration = "Release", output = "artifacts") - project_dir = File.dirname(project_path) - newest_file = Makit::Directory::get_newest_file(project_dir) - command_request = Makit::RUNNER::parse_command_request("dotnet build #{project_path} --configuration #{configuration} --output #{output}") - if newest_file.nil? - newest_file_date = Time.now - RUNNER.cache_run(command_request, newest_file_date) - else - newest_file_date = File.mtime(newest_file) - RUNNER.cache_run(command_request, newest_file_date) - end - end - - def self.publish(project_path, configuration = "Release", output = "artifacts") - project_dir = File.dirname(project_path) - newest_file = Makit::Directory::get_newest_file(project_dir) - command_request = Makit::RUNNER::parse_command_request("dotnet publish #{project_path} --configuration #{configuration} --output #{output}") - if newest_file.nil? - newest_file_date = Time.now - RUNNER.cache_run(command_request, newest_file_date) - else - newest_file_date = File.mtime(newest_file) - RUNNER.cache_run(command_request, newest_file_date) - end - end - - def self.test(project_path, configuration = "Release", output = "artifacts") - project_dir = File.dirname(project_path) - newest_file = Makit::Directory::get_newest_file(project_dir) - command_request = Makit::RUNNER::parse_command_request("dotnet test #{project_path} --configuration #{configuration} --output #{output}") - if newest_file.nil? - newest_file_date = Time.now - RUNNER.cache_run(command_request, newest_file_date) - else - newest_file_date = File.mtime(newest_file) - RUNNER.cache_run(command_request, newest_file_date) - end - end - - def self.sln_add_projects(sln_name) - if !File.exist? "#{sln_name}.sln" - raise "Solution #{sln_name}.sln does not exist" - else - sln_path = "#{sln_name}.sln" - sln_content = File.read(sln_path) - Dir.glob("**/*.csproj").each do |project_path| - project_name = File.basename(project_path, ".csproj") - if (sln_content.include?("\"#{project_name}\"")) - #puts " #{project_name}".colorize(:green) + " is in ".colorize(:grey) + "#{sln_path}".colorize(:green) - #puts "Project #{project_name} already exists in #{sln_path}".colorize(:yellow) - else - "dotnet sln #{sln_path} add #{project_path}".run - end - end - end - end - - def self.format_project(project_path) - project_name = File.basename(project_path, ".csproj") - "dotnet tool update --global dotnet-format".run - "dotnet format #{project_path}".run - end - - def self.upgrade_project(project_path) - project_name = File.basename(project_path, ".csproj") - "dotnet tool install --global dotnet-outdated-tool".run - "dotnet outdated #{project_path} --upgrade:Auto".run - end - end # class DotNet -end # module Makit +module Makit + class DotNet + def self.is_installed? + File.exist?(Makit::Environment.which("dotnet")) + end + + def self.version + `dotnet --version` + end + + def self.project_short_name(project_path) + project_name = File.basename(project_path, ".csproj") + project_name + end + + def self.new_project(template, name, output, args = "") + if Dir.exist? output + puts " .csproj ".colorize(:grey) + "#{name}".colorize(:green) + else + "dotnet new #{template} --name #{name} --output #{output} #{args}".run + end + end + + def self.set_project_target_framework(project_hint, target_framework) + project_path = find_project(project_hint) + project_content = File.read(project_path) + project_content.gsub!(/<TargetFramework>.*<\/TargetFramework>/, "<TargetFramework>#{target_framework}</TargetFramework>") + File.write(project_path, project_content) + end + + def self.find_project(project_hint) + matches = [] + Dir.glob("**/*.csproj").each do |project_path| + #project_name = File.basename(project_path, ".csproj") + if project_path.include?(project_hint) + matches << project_path + end + end + if matches.length == 1 + return matches.first + elsif matches.length > 1 + raise "Multiple projects found matching #{project_hint}".colorize(:red) + end + raise "No project found matching #{project_hint}".colorize(:red) + end + + def self.add_package(project_path, package_name) + if (!File.exist?(project_path)) + actual_project_path = Makit::DotNet::find_project(project_path) + if (!File.exist?(actual_project_path)) + raise "Project #{project_path} does not exist".colorize(:red) + else + project_path = actual_project_path + end + end + project_content = File.read(project_path) + if (!project_content.include?("\"#{package_name}\"")) + "dotnet add #{project_path} package #{package_name}".run + else + puts " package ".colorize(:grey) + "#{package_name}".colorize(:green) + #puts " #{project_short_name(project_path)} has package #{package_name}".colorize(:grey) + end + end + + def self.add_packages(project_path, packages) + packages.each do |package| + add_package(project_path, package) + end + end + + def self.add_reference(project_path, reference_path) + if (!File.exist?(project_path)) + actual_project_path = Makit::DotNet::find_project(project_path) + if (!File.exist?(actual_project_path)) + raise "Project #{project_path} does not exist".colorize(:red) + else + project_path = actual_project_path + end + end + if (!File.exist?(reference_path)) + actual_reference_path = Makit::DotNet::find_project(reference_path) + if (!File.exist?(actual_reference_path)) + raise "Project #{reference_path} does not exist".colorize(:red) + else + reference_path = actual_reference_path + end + end + project_content = File.read(project_path) + if (project_content.include?(File.basename(reference_path))) + puts " reference ".colorize(:grey) + "#{reference_path}".colorize(:green) + #puts " #{project_short_name(project_path)} references #{project_short_name(reference_path)}".colorize(:grey) + #puts " reference ".colorize(:grey) + "#{reference_path}".colorize(:yellow) + " is in ".colorize(:grey) + "#{project_path}".colorize(:yellow) + else + "dotnet add #{project_path} reference #{reference_path}".run + end + end + + def self.add_references(project_path, references) + references.each do |reference| + add_reference(project_path, reference) + end + end + + def self.new_solution(name) + if File.exist? "#{name}.sln" + #puts "Solution #{name}.sln already exists".colorize(:yellow) + #puts " #{name}.sln".colorize(:green) + " exists".colorize(:grey) + else + "dotnet new sln --name #{name}".run + end + end + + def self.build(project_path, configuration = "Release", output = "artifacts") + project_dir = File.dirname(project_path) + newest_file = Makit::Directory::get_newest_file(project_dir) + command_request = Makit::RUNNER::parse_command_request("dotnet build #{project_path} --configuration #{configuration} --output #{output}") + if newest_file.nil? + newest_file_date = Time.now + RUNNER.cache_run(command_request, newest_file_date) + else + newest_file_date = File.mtime(newest_file) + RUNNER.cache_run(command_request, newest_file_date) + end + end + + def self.publish(project_path, configuration = "Release", output = "artifacts") + project_dir = File.dirname(project_path) + newest_file = Makit::Directory::get_newest_file(project_dir) + command_request = Makit::RUNNER::parse_command_request("dotnet publish #{project_path} --configuration #{configuration} --output #{output}") + if newest_file.nil? + newest_file_date = Time.now + RUNNER.cache_run(command_request, newest_file_date) + else + newest_file_date = File.mtime(newest_file) + RUNNER.cache_run(command_request, newest_file_date) + end + end + + def self.test(project_path, configuration = "Release", output = "artifacts") + project_dir = File.dirname(project_path) + newest_file = Makit::Directory::get_newest_file(project_dir) + command_request = Makit::RUNNER::parse_command_request("dotnet test #{project_path} --configuration #{configuration} --output #{output}") + if newest_file.nil? + newest_file_date = Time.now + RUNNER.cache_run(command_request, newest_file_date) + else + newest_file_date = File.mtime(newest_file) + RUNNER.cache_run(command_request, newest_file_date) + end + end + + def self.sln_add_projects(sln_name) + if !File.exist? "#{sln_name}.sln" + raise "Solution #{sln_name}.sln does not exist" + else + sln_path = "#{sln_name}.sln" + sln_content = File.read(sln_path) + Dir.glob("**/*.csproj").each do |project_path| + project_name = File.basename(project_path, ".csproj") + if (sln_content.include?("\"#{project_name}\"")) + #puts " #{project_name}".colorize(:green) + " is in ".colorize(:grey) + "#{sln_path}".colorize(:green) + #puts "Project #{project_name} already exists in #{sln_path}".colorize(:yellow) + else + "dotnet sln #{sln_path} add #{project_path}".run + end + end + end + end + + def self.format_project(project_path) + project_name = File.basename(project_path, ".csproj") + "dotnet tool update --global dotnet-format".run + "dotnet format #{project_path}".run + end + + def self.upgrade_project(project_path) + project_name = File.basename(project_path, ".csproj") + "dotnet tool install --global dotnet-outdated-tool".run + "dotnet outdated #{project_path} --upgrade:Auto".run + end + end # class DotNet +end # module Makit