lib/raykit/dotnet.rb



module Raykit
    class DotNet
        # initialize a C# library

        def self.initialize_csharp_lib(name)
            puts `dotnet new sln --name #{name}` if(!File.exist?("#{name}.sln"))
            if(!Dir.exists?(name)) 
                FileUtils.mkdir(name)
                Dir.chdir(name) do
                    puts `dotnet new classlib -lang C#`
                end
                #puts `dotnet new sln`

                puts `dotnet sln #{name}.sln add #{name}/#{name}.csproj`
        
                FileUtils.mkdir("#{name}.Test")if(!Dir.exist?("#{name}.Test"))
                Dir.chdir("#{name}.Test") do
                    puts `dotnet new nunit -lang C#`
                    puts `dotnet add reference ../#{name}/#{name}.csproj`
                end

                puts `dotnet sln #{name}.sln add #{name}.Test/#{name}.Test.csproj`
            end
        end

        # initialize an F# library

        def self.initialize_fsharp_lib(name)
            puts `dotnet new sln --name #{name}` if(!File.exist?("#{name}.sln"))
            if(!Dir.exists?(name)) 
                FileUtils.mkdir(name)
                Dir.chdir(name) do
                    puts `dotnet new classlib -lang F#`
                end
                #puts `dotnet new sln`

                puts `dotnet sln #{name}.sln add #{name}/#{name}.fsproj`
        
                FileUtils.mkdir("#{name}.Test")if(!Dir.exist?("#{name}.Test"))
                Dir.chdir("#{name}.Test") do
                    puts `dotnet new nunit -lang F#`
                    puts `dotnet add reference ../#{name}/#{name}.fsproj`
                end

                puts `dotnet sln #{name}.sln add #{name}.Test/#{name}.Test.fsproj`
            end
        end

        # initialize a C# console application

        def self.initialize_csharp_console(name)
            if(!Dir.exists?(name)) 
                FileUtils.mkdir(name)
                Dir.chdir(name) do
                    puts `dotnet new console -lang C#`
                end
                puts `dotnet new sln`
                puts `dotnet sln #{name}.sln add #{name}/#{name}.csproj`
        
                FileUtils.mkdir("#{name}.Test")if(!Dir.exist?("#{name}.Test"))
                Dir.chdir("#{name}.Test") do
                    puts `dotnet new nunit -lang C#`
                    puts `dotnet add reference ../#{name}/#{name}.csproj`
                end

                puts `dotnet sln #{name}.sln add #{name}.Test/#{name}.Test.csproj`
            end
        end

        # initialize a C# wpf application

        def self.initialize_csharp_wpf_application(name)
            puts `dotnet new sln --name #{name}`
            if(!Dir.exists?(name)) 
                FileUtils.mkdir(name)
                Dir.chdir(name) do
                    puts `dotnet new wpf -lang C#`
                end
            end
            puts `dotnet sln #{name}.sln add #{name}/#{name}.csproj`
            initialize_csharp_lib("#{name}.Library")
            puts `dotnet sln #{name}.sln add #{name}.Library/#{name}.Library.csproj`
            puts `dotnet sln #{name}.sln add #{name}.Library.Test/#{name}.Library.Test.csproj`
        end

        # initialize a C# worker service 

        def self.initialize_csharp_service(name)
            if(!Dir.exists?(name)) 
                FileUtils.mkdir(name)
                Dir.chdir(name) do
                    puts `dotnet new worker -lang C#`
                end
                puts `dotnet new sln`
                puts `dotnet sln #{name}.sln add #{name}/#{name}.csproj`
            end
        end
    end
end