dots/bin/dots.rb

79 lines
2.1 KiB
Ruby
Executable file

require 'open3'
require 'os'
require 'tty-command'
require 'tty-file'
require 'tty-prompt'
cmd = TTY::Command.new
prompt = TTY::Prompt.new(help_color: :magenta)
@home = File.expand_path('~')
@dotroot = File.dirname(File.dirname(File.expand_path($PROGRAM_NAME)))
@excludes = %w[mac nix]
@files_copy = Dir.glob("#{@dotroot}/copy/*")
@files_link = Dir.glob("#{@dotroot}/link/*")
if OS.posix?
@files_copy.concat Dir.glob("#{@dotroot}/copy/nix/*")
@files_link.concat Dir.glob("#{@dotroot}/link/nix/*")
end
if OS.windows?
puts 'It seems you are on Windows'
elsif OS.mac?
stdout, _stderr, _status = Open3.capture3('sw_vers -productVersion')
if Integer(stdout.strip.split('.')[0]) == 10
if Integer(stdout.strip.split('.')[1]) >= 12
puts "It seems you are on macOS #{stdout.strip}"
else
puts "It seems you are on OX X #{stdout.strip}"
end
elsif Integer(stdout.strip.split('.')[0]) < 10
puts "Wow... you're sure running an old os (#{stdout.strip} to be exact)"
else
abort("It seems you are on a Mac but I don't know what to do on \
v#{stdout.strip}")
end
@files_copy.concat Dir.glob("#{@dotroot}/copy/mac/*")
@files_link.concat Dir.glob("#{@dotroot}/link/mac/*")
elsif OS.liux?
puts 'It seems you are on Linux'
else
abort("I'm not sure what to do with this OS...") unless OS.posix?
end
task = prompt.select('What would you like to do?', %w[copy link install])
case task
when 'copy'
if prompt.yes?('Are you sure you want to copy these files?')
@files_copy.each do |file|
unless @excludes.include?(File.basename(file))
puts "Copying #{file} to #{@home}/.#{File.basename(file)}"
end
end
else
puts 'not copying'
end
when 'link'
if prompt.yes?('Are you sure you want to link your dot files?')
@files_link.each do |file|
unless @excludes.include?(File.basename(file))
puts "Linking #{@home}/.#{File.basename(file)} to #{file}"
end
end
else
puts 'no linking'
end
when 'install'
if prompt.yes?('Are you sure you want to install your base packages?')
puts 'Here is where Puppet should be run.'
cmd.run('bundle exec puppet --version')
end
end