DEVSTACK_PORTS = {
    "lms" => '8000',
    "studio" => '8001'
}

# Abort if system is not one we recognize
def check_devstack_sys(sys_name)
    if not DEVSTACK_PORTS.has_key?(sys_name)
        puts "Devstack system must be either 'lms' or 'studio'"
        exit 1
    end
end

# Convert "studio" to "cms"
def old_system(sys_name)
    if sys_name == "studio"
        return "cms"
    else
        return sys_name
    end
end

namespace :devstack do

    desc "Start the server"
    task :start, [:system] do |t, args|
        check_devstack_sys(args.system)
        port = DEVSTACK_PORTS[args.system]
        sys = old_system(args.system)
        sh("./manage.py #{sys} runserver --settings=devstack 0.0.0.0:#{port}")
    end

    desc "Update static assets"
    task :assets, [:system] do |t, args|
        check_devstack_sys(args.system)
        Rake::Task["assets"].invoke(old_system(args.system), 'devstack')
    end

    desc "Update Python, Ruby, and Node requirements"
    task :install => [:install_prereqs]
end


desc "Start the devstack lms or studio server"
task :devstack, [:system] => ['devstack:install', 'devstack:assets'] do |t, args|
    Rake::Task['devstack:start'].invoke(args.system)
end