class Raykit::DotNet

def self.initialize_csharp_console(name)

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

def self.initialize_csharp_lib(name)

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

def self.initialize_csharp_service(name)

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

def self.initialize_csharp_wpf_application(name)

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

def self.initialize_fsharp_lib(name)

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