dotify 0.0.2.1 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.8.7
4
+ - 1.9.2
5
+ - 1.9.3
6
+ - jruby
7
+ - rbx
data/Rakefile CHANGED
@@ -1,2 +1,9 @@
1
1
  #!/usr/bin/env rake
2
2
  require "bundler/gem_tasks"
3
+ require "rspec/core/rake_task"
4
+
5
+ RSpec::Core::RakeTask.new(:rspec) do |spec|
6
+ spec.pattern = 'spec/**/*_spec.rb'
7
+ end
8
+
9
+ task :default => :rspec
@@ -17,6 +17,7 @@ module Dotify
17
17
 
18
18
  DOTIFY_DIR_NAME = ENV['DOTIFY_DIR_NAME'] || '.dotify'
19
19
  DOTIFY_PATH = ENV['DOTIFY_PATH'] || "#{Thor::Util.user_home}/#{DOTIFY_DIR_NAME}"
20
+ DOTIFY_BACKUP_PATH = ENV['DOTIFY_BACKUP_PATH'] || "#{DOTIFY_PATH}/.backup"
20
21
 
21
22
  def self.source_root
22
23
  DOTIFY_PATH
@@ -28,7 +29,7 @@ module Dotify
28
29
  end
29
30
 
30
31
  desc :link, "Link up your dotfiles"
31
- method_option :force, default: false, type: :boolean, aliases: '-f', desc: "Definitely link all dotfiles"
32
+ method_option :force, :default => false, :type => :boolean, :aliases => '-f', :desc => "Definitely link all dotfiles"
32
33
  def link
33
34
  dotfile_list do |file|
34
35
  if template? file
@@ -44,22 +45,42 @@ module Dotify
44
45
  end
45
46
 
46
47
  desc :unlink, "Unlink individual dotfiles"
47
- method_option :force, default: false, type: :boolean, aliases: '-f', desc: "Definitely remove all dotfiles"
48
+ method_option :force, :default => false, :type => :boolean, :aliases => '-f', :desc => "Definitely remove all dotfiles"
48
49
  def unlink
49
50
  dotfile_list do |file|
50
51
  destination = filename(file)
51
52
  if options.force? || yes?("Are you sure you want to remove ~/#{destination}? [Yn]", :blue)
52
- remove_file dotfile_location(file), verbose: true
53
+ remove_file dotfile_location(file), :verbose => true
53
54
  end
54
55
  end
55
56
  end
56
57
 
57
58
  desc :backup, "Backup your dotfiles for quick recovery if something goes wrong"
58
59
  def backup
60
+ dotfile_list do |file|
61
+ file = filename(file)
62
+ backup = "#{DOTIFY_BACKUP_PATH}/#{file}"
63
+ if File.exists?(dotfile_location(file))
64
+ remove_file backup, :verbose => false if File.exists?(backup)
65
+ copy_file dotfile_location(file), backup, :verbose => false
66
+ say "Backing up ~/#{file}", :blue
67
+ end
68
+ end
59
69
  end
60
70
 
61
71
  desc :restore, "Restore your backed-up dotfiles"
72
+ method_option :force, :default => false, :type => :boolean, :aliases => '-f', :desc => "Backup existing dotfiles"
62
73
  def restore
74
+ backup_list do |file|
75
+ filename = filename(file)
76
+ if options.force? || yes?("Are you sure you want to restore ~/#{filename}? [Yn]", :red)
77
+ if File.exists?(dotfile_location(filename))
78
+ remove_file dotfile_location(filename), :verbose => false
79
+ end
80
+ copy_file file, dotfile_location(filename), :verbose => false
81
+ say "Restoring up ~/#{filename}", :blue
82
+ end
83
+ end
63
84
  end
64
85
 
65
86
  no_tasks do
@@ -93,6 +114,16 @@ module Dotify
93
114
  end
94
115
  end
95
116
 
117
+ def backup_list
118
+ files = Dir["#{DOTIFY_BACKUP_PATH}/.*"]
119
+ files.delete_if { |f| File.directory? f }
120
+ if block_given?
121
+ files.each { |f| yield f }
122
+ else
123
+ files
124
+ end
125
+ end
126
+
96
127
  def filename(file)
97
128
  file.split("/").last
98
129
  end
@@ -1,3 +1,3 @@
1
1
  module Dotify
2
- VERSION = "0.0.2.1"
2
+ VERSION = "0.0.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dotify
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2.1
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-18 00:00:00.000000000 Z
12
+ date: 2012-06-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor
@@ -69,6 +69,7 @@ extra_rdoc_files: []
69
69
  files:
70
70
  - .gitignore
71
71
  - .rspec
72
+ - .travis.yml
72
73
  - Gemfile
73
74
  - LICENSE
74
75
  - README.md