All functions of 'bundle exec rake dots' now work

This commit is contained in:
Gene Liverman 2017-06-04 17:03:47 -07:00
parent 48b87f7744
commit 96d067d035
6 changed files with 69 additions and 23 deletions

View file

@ -24,20 +24,7 @@ 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
mac_vers
@files_copy.concat Dir.glob("#{@dotroot}/copy/mac/*")
@files_link.concat Dir.glob("#{@dotroot}/link/mac/*")
@ -56,6 +43,7 @@ when 'copy'
@files_copy.each do |file|
unless @excludes.include?(File.basename(file))
puts "Copying #{file} to #{@home}/.#{File.basename(file)}"
copy_file(file, "#{@home}/.#{File.basename(file)}")
end
end
else
@ -78,12 +66,11 @@ when 'link'
link_file(file, "#{@home}/.ssh/#{File.basename(file)}")
end
else
puts 'no linking'
puts 'not 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')
cmd.run('bundle exec rake dots:run_puppet')
end
end

View file

@ -12,11 +12,32 @@ def existing_symlink(source, destination)
# rubocop:enable Metrics/LineLength
end
def rename_file(source, destination)
# rubocop:disable Metrics/MethodLength
def rename_file(source, destination, action)
puts "#{destination} exists, renaming to #{destination}.predots"
File.rename(destination, "#{destination}.predots")
puts "Linking #{destination} to #{source}"
File.symlink(source, destination)
if action.eql?('link')
puts "Linking #{destination} to #{source}"
File.symlink(source, destination)
elsif action.eql?('copy')
puts "Copying #{destination} to #{source}"
FileUtils.cp_r(source, destination)
else
raise ArgumentError, "'#{action}' is not a valid action", backtrace
end
end
# rubocop:enable Metrics/MethodLength
def copy_file(source, destination)
if File.exist?(destination)
if @prompt.yes?("#{destination} exists, do you want to replace it?")
rename_file(source, destination, 'copy')
else
puts "#{destination} is unchanged"
end
else
FileUtils.cp_r(source, destination)
end
end
def link_file(source, destination)
@ -24,9 +45,28 @@ def link_file(source, destination)
existing_symlink(source, destination)
elsif File.exist?(destination)
# this catches anything that is not a symlink
rename_file(source, destination)
rename_file(source, destination, 'link')
else
puts "Linking #{destination} to #{source}"
File.symlink(source, destination)
end
end
# rubocop:disable Metrics/MethodLength, Metrics/AbcSize
def mac_vers
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
end
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize

View file

@ -0,0 +1,11 @@
---
version: 5
defaults: # Used for any hierarchy level that omits these keys.
datadir : hieradata # This path is relative to hiera.yaml's directory.
data_hash : yaml_data # Use the built-in YAML backend.
hierarchy:
- name: "Per-node data"
path: "nodes/%{trusted.certname}.yaml"
- name: "Common data"
path: "common.yaml"

View file

@ -0,0 +1,2 @@
---
homedir: '/Users/gliverma'

View file

@ -8,6 +8,8 @@ class profile::mac {
# creates => '/usr/local/bin/brew',
# }
$homedir = lookup('homedir')
#Package { provider => 'homebrew' }
$homebrew_packages = [
'bash-completion',
@ -40,7 +42,12 @@ class profile::mac {
]
package { $homebrew_packages:
ensure => installed,
ensure => 'installed',
provider => 'brew',
}
vcsrepo { "${homedir}/.vim/bundle/Vundle.vim":
ensure => 'present',
provider => 'git',
}
}