namespace :rbenv do

RBENV_REPO_URL = 'https://github.com/rbenv/rbenv.git'.freeze
RUBY_BUILD_REPO_URL = 'https://github.com/rbenv/ruby-build.git'.freeze

desc 'Install ruby dependencies'
task :install_ruby_deps do
  on roles(fetch(:rbenv_role)) do
    execute "#{fetch(:rbenv_ruby_deps_installler)} #{fetch(:rbenv_ruby_deps).join(' ')}"
  end
end

desc 'Install rbenv'
task :install do
  on roles(fetch(:rbenv_role)) do
    next if test "[ -d #{fetch(:rbenv_path)} ]"

    invoke 'rbenv:install_ruby_deps'
    execute :git, "clone #{RBENV_REPO_URL} #{fetch(:rbenv_path)}"
  end
end

desc 'Install/Update ruby-build - rbenv plugin'
task :install_ruby_build do
  on roles(fetch(:rbenv_role)) do
    ruby_build_path = "#{fetch(:rbenv_path)}/plugins/ruby-build"

    if test "[ -d #{ruby_build_path} ]"
      execute :git, "-C #{ruby_build_path} pull"
    else
      execute :git, "clone #{RUBY_BUILD_REPO_URL} #{ruby_build_path}"
    end
  end
end

desc 'Install ruby'
task :install_ruby do
  on roles(fetch(:rbenv_role)) do
    next if test "[ -d #{fetch(:rbenv_ruby_dir)} ]"

    invoke 'rbenv:install'
    invoke 'rbenv:install_ruby_build'
    execute :rbenv, "install #{fetch(:rbenv_ruby)}"
  end
end

end