dotman 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fd8b469fcc0d6da51b7488b195248ecccd4b8d74
4
- data.tar.gz: 462ec000404811976fdfff032020270d3b6e1251
3
+ metadata.gz: a3b731737f17c1671451e5b4e769a1004456e586
4
+ data.tar.gz: 8f7301a47b9dbf857eb18eda8d255aa417d097f5
5
5
  SHA512:
6
- metadata.gz: 53852745e415c58ca8bf1262088ce74b0f708434f1336588487e5ed742b6515b77d685997b673576a8f2891eeb70e0d42356f5fd527fdb9deeac2f806d9460de
7
- data.tar.gz: ef869344289cfbe23a4ec377e552fb71e2e3ad8a4de9ae649ac4a9b636debeffd450eb06e1424df0f1a6db5f1775c7c28fef3eccfa9804b620e3b583170df265
6
+ metadata.gz: d64c527bb313c8f0d147fd8a1ca5300c7bee05847eb97c0e9af35bee42579fce0ea67aa28f85e6ab679bece1208827b4c7b38ff773fa7f3bb7865cc10c31980e
7
+ data.tar.gz: 18f2b801b2ebc9e12d496596bef8fbc88ffad4029187601fadb4afe594999c008a264ca15336a637be86a232c2672816960e6724c618e125f61d537fc3cefab2
data/README.md CHANGED
@@ -1,8 +1,33 @@
1
1
  # Dotman
2
2
 
3
- This is a work in progress. It is not yet in working condition.
3
+ This is a work in progress.
4
4
 
5
- This gem will allow you to switch between different dotfiles on the same user account.
5
+ This gem will allows you to switch between different dotfiles on the same user account.
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ gem 'dotman'
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install dotman
20
+
21
+ ## Usage
22
+
23
+ To retrieve your dotfiles and store them
24
+ dot clone your\_dotfiles\_repo alias
25
+
26
+ To use cloned dotfiles
27
+ dot use alias
28
+
29
+ To revert dotfiles back to original
30
+ dot use default
6
31
 
7
32
  ## Contributing
8
33
 
data/bin/dot CHANGED
@@ -10,4 +10,6 @@ when 'clone'
10
10
  Dotman::Git.klone(ARGV[1], ARGV[2])
11
11
  when 'use'
12
12
  Dotman::User.set(ARGV[1])
13
+ else
14
+ puts "USAGE:\ndot clone git_repository alias : clone the dotfiles repo\ndot use alias : use the dotfiles\ndot use default : switch to the default dot files"
13
15
  end
data/lib/dotman.rb CHANGED
@@ -1,7 +1,9 @@
1
1
  require 'fileutils'
2
2
  require "dotman/version"
3
3
  require "dotman/base"
4
+ Dotman::Base.ensure_dotman_folder_exists
5
+ Dotman::Base.ensure_default_folder_exists
6
+ Dotman::Base.ensure_current_dotman_file_exists
4
7
  require "dotman/git"
5
8
  require "dotman/dotfile_collection"
6
9
  require "dotman/user"
7
-
data/lib/dotman/base.rb CHANGED
@@ -32,9 +32,5 @@ module Dotman
32
32
  end
33
33
  end
34
34
  end
35
- ensure_dotman_folder_exists
36
- ensure_default_folder_exists
37
- ensure_current_dotman_file_exists
38
-
39
35
  end
40
36
  end
@@ -1,46 +1,47 @@
1
1
  module Dotman
2
2
 
3
3
  DOTFILES_PATH = "#{ENV['HOME']}/.dotman/dotfiles.yml"
4
- DOTFILES_YAML = File.exist?(DOTFILES_PATH) ? YAML::load_file(DOTFILES_PATH) : Hash.new
5
4
 
6
5
  class DotfileCollection
7
6
 
7
+ def initialize(yaml)
8
+ @yaml = yaml
9
+ end
10
+
8
11
  attr_accessor :yaml
9
12
 
13
+ def self.dotfiles_yaml
14
+ @dotfiles_yaml ||= File.exist?(DOTFILES_PATH) ? YAML::load_file(DOTFILES_PATH) : Hash.new
15
+ end
16
+
10
17
  def self.find_by_alias(alias_name)
11
- dotfile_collection = new
12
18
  ensure_default_dotfile_configuration_exists
13
- dotfile_collection.yaml = DOTFILES_YAML.fetch(alias_name) if DOTFILES_YAML
14
- dotfile_collection
19
+ new(dotfiles_yaml.fetch(alias_name))
15
20
  end
16
21
 
17
22
  def self.new_configuration(folder_name, alias_name = nil)
18
- dotfile_collection = new
19
23
  alias_name = folder_name unless alias_name
20
- DOTFILES_YAML.store(alias_name, {
24
+ dotfiles_yaml.store(alias_name, {
21
25
  'folder_name' => folder_name
22
- }
23
- )
26
+ })
24
27
  save_dotfile_yaml
25
- dotfile_collection.yaml = DOTFILES_YAML
26
- dotfile_collection
27
28
  end
28
29
 
29
30
 
30
31
  def all_dotfiles
31
- Dir.entries("#{Dotman::Base.dotman_folder}/#{@yaml['folder_name']}").select{|x| x =~ /\.{1}\w+/ }
32
+ Dir.entries("#{Dotman::Base.dotman_folder}/#{@yaml['folder_name']}").select{|x| x =~ /\.{1}\w+[^git]/ }
32
33
  end
33
34
 
34
35
  private
35
36
 
36
37
  def self.ensure_default_dotfile_configuration_exists
37
- unless DOTFILES_YAML && DOTFILES_YAML['default']
38
+ unless dotfiles_yaml && dotfiles_yaml['default']
38
39
  new_configuration('default')
39
40
  end
40
41
  end
41
42
 
42
43
  def self.save_dotfile_yaml
43
- File.open(DOTFILES_PATH, 'w') { |f| f.write DOTFILES_YAML.to_yaml }
44
+ File.open(DOTFILES_PATH, 'w') { |f| f.write dotfiles_yaml.to_yaml }
44
45
  end
45
46
 
46
47
  end
data/lib/dotman/git.rb CHANGED
@@ -2,6 +2,10 @@ module Dotman
2
2
  class Git
3
3
  def self.klone(git_location, alias_name = nil)
4
4
  unless git_location.nil?
5
+ Dotman::Base.ensure_dotman_folder_exists
6
+ puts "ENSURING DOTMAN FOLDER EXISTS"
7
+ Dotman::Base.ensure_default_folder_exists
8
+ Dotman::Base.ensure_current_dotman_file_exists
5
9
  clone_repository(git_location, alias_name)
6
10
  end
7
11
  end
@@ -1,3 +1,3 @@
1
1
  module Dotman
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
File without changes
@@ -1,7 +1,5 @@
1
1
  require 'spec_helper'
2
2
  describe Dotman::Base do
3
- let (:dotfiles_folder) { File.expand_path('../../data/dotfiles', __FILE__) }
4
- let!(:dotfiles) {FileUtils.touch "#{dotfiles_folder}/.vimrc"; FileUtils.touch "#{dotfiles_folder}/.bashrc"; FileUtils.touch "#{dotfiles_folder}/.zshrc" }
5
3
 
6
4
  describe ".ensure_dotman_folder_exists" do
7
5
  context "when `$HOME.dotman/` does not exist" do
@@ -20,32 +18,4 @@ describe Dotman::Base do
20
18
  end
21
19
  end
22
20
  end
23
-
24
- describe ".all_dotfiles" do
25
- context "when dotfiles exist for a location" do
26
-
27
- it "returns all the dotfiles" do
28
- Dotman::Base.all_dotfiles(dotfiles_folder).should include('.vimrc', '.bashrc', '.zshrc')
29
- end
30
-
31
- it "should not contain . or .." do
32
- Dotman::Base.all_dotfiles(dotfiles_folder).should_not include('..', '.')
33
- end
34
-
35
- it "does not contain non dotfiles" do
36
- Dotman::Base.all_dotfiles(dotfiles_folder).should_not include('some_nondot_file')
37
- end
38
-
39
- end
40
- end
41
-
42
- describe ".move_home_files_to_default" do
43
- context "when having dotfiles in project" do
44
- it "moves the files" do
45
- Dotman::Base.move_home_files_to_default(dotfiles_folder)
46
- Dir.entries(Dotman::Base.default_folder).should include('.vimrc', '.bashrc', '.zshrc')
47
- end
48
- end
49
- end
50
-
51
21
  end
@@ -7,4 +7,34 @@ describe Dotman::DotfileCollection do
7
7
  end
8
8
  end
9
9
  end
10
+
11
+ describe ".all_dotfiles" do
12
+ let (:dotfile_collection) { Dotman::DotfileCollection.new(Hash.new) }
13
+
14
+ before :each do
15
+ Dir.stub(:entries).and_return(['some_nondot_file', '.gitignore', '.gitconfig', '.vimrc', '.bashrc', '.zshrc', '..', '.', '.git'])
16
+ end
17
+
18
+ context "when dotfiles exist for a location" do
19
+ it "returns all the dotfiles" do
20
+ dotfile_collection.all_dotfiles.should include('.vimrc', '.bashrc', '.zshrc')
21
+ end
22
+
23
+ it "should not contain . or .." do
24
+ dotfile_collection.all_dotfiles.should_not include('..', '.')
25
+ end
26
+
27
+ it "does not contain non dotfiles" do
28
+ dotfile_collection.all_dotfiles.should_not include('some_nondot_file')
29
+ end
30
+
31
+ it 'excludes .git' do
32
+ dotfile_collection.all_dotfiles.should_not include('.git')
33
+ end
34
+
35
+ it 'includes .gitignore' do
36
+ dotfile_collection.all_dotfiles.should include('.gitignore')
37
+ end
38
+ end
39
+ end
10
40
  end
@@ -1,16 +1,21 @@
1
1
  require 'spec_helper'
2
2
  describe Dotman::DotfileCollection do
3
+ before :all do
4
+ Dotman::Git.clone_repository('git@github.com:Timbinous/dotfiles.git', 'tim')
5
+ end
6
+
3
7
  describe ".find_by_alias" do
4
8
  context "when dotfile collection is found" do
5
9
  let (:alias_name) { 'tim' }
6
10
  let (:dotfile_collection_name) { 'Timbinous_dotfiles' }
7
11
  let! (:dotfile_configuration) { Dotman::DotfileCollection.new_configuration(dotfile_collection_name, alias_name) }
8
12
  it "returns the dotfile collection" do
9
- Dotman::DotfileCollection.find_by_alias(alias_name)['folder_name'].should == dotfile_collection_name
13
+ Dotman::DotfileCollection.find_by_alias(alias_name).should be_an_instance_of(Dotman::DotfileCollection)
10
14
  end
11
15
  end
12
16
  end
13
17
  after :all do
14
18
  FileUtils.rm_r("#{ENV['HOME']}/.dotman/dotfiles.yml")
19
+ FileUtils.rm_rf("#{ENV['HOME']}/.dotman/Timbinous_dotfiles")
15
20
  end
16
21
  end
@@ -4,9 +4,6 @@
4
4
  #
5
5
  require 'spec_helper'
6
6
  describe Dotman::Git do
7
- before :all do
8
- Dotman::Base.ensure_dotman_folder_exists
9
- end
10
7
 
11
8
  context "cloning a new repo" do
12
9
 
@@ -1,5 +1,11 @@
1
1
  require 'spec_helper'
2
2
  describe Dotman::User do
3
+ let (:tim) { Dotman::User.new('tim') }
4
+
5
+ before :all do
6
+ Dotman::Git.clone_repository("git@github.com:Timbinous/dotfiles.git", 'tim')
7
+ end
8
+
3
9
  describe ".current_user_alias" do
4
10
  before :all do
5
11
  File.open(Dotman::Base.current_dotman, 'w') { |f| f.write 'tim' }
@@ -11,15 +17,10 @@ describe Dotman::User do
11
17
  end
12
18
 
13
19
  describe "#set_current_user" do
14
- let (:user) { Dotman::User.new('frank') }
15
-
16
- before :all do
17
- Dotman::DotfileCollection.new_configuration('frankie_dotfiles', 'frank')
18
- end
19
20
 
20
21
  it 'writes to the .current file, the alias of the current user' do
21
- user.set_current_user
22
- Dotman::User.current_user_alias.should == 'frank'
22
+ tim.set_current_user
23
+ Dotman::User.current_user_alias.should == 'tim'
23
24
  end
24
25
  end
25
26
 
@@ -27,15 +28,17 @@ describe Dotman::User do
27
28
  describe ".current" do
28
29
 
29
30
  it 'returns the current users information' do
30
- Dotman::User.current.folder_name.should == 'frankie_dotfiles'
31
+ tim.set_current_user
32
+ Dotman::User.current.folder_name.should == 'Timbinous_dotfiles'
31
33
  end
32
34
  end
33
35
 
34
36
  describe "#set" do
35
37
 
36
- before :each do
37
- Dotman::Git.clone_repository("git@github.com:Timbinous/dotfiles.git", 'tim')
38
+ before :all do
39
+ $default_user.set_current_user
38
40
  FileUtils.touch(["#{ENV['HOME']}/.vimrc", "#{ENV['HOME']}/.zshrc", "#{ENV['HOME']}/.bashrc"])
41
+ FileUtils.mkdir("#{ENV['HOME']}/.dotman/default")
39
42
  Dotman::User.set('tim')
40
43
  end
41
44
 
@@ -51,12 +54,5 @@ describe Dotman::User do
51
54
  end
52
55
  end
53
56
 
54
- after :each do
55
- FileUtils.rm_r("#{ENV['HOME']}/.dotman/dotfiles.yml")
56
- FileUtils.rm_rf("#{ENV['HOME']}/.dotman/Timbinous_dotfiles")
57
- $default_user.collection.all_dotfiles.each do |df|
58
- FileUtils.rm("#{ENV['HOME']}/.dotman/default/#{df}")
59
- end
60
- end
61
57
  end
62
58
  end
data/spec/spec_helper.rb CHANGED
@@ -1,2 +1,16 @@
1
1
  ENV['HOME'] = File.expand_path('../data/home', __FILE__)
2
- require_relative '../lib/dotman.rb'
2
+ require 'fileutils'
3
+ require_relative "../lib/dotman"
4
+
5
+ RSpec.configure do |config|
6
+
7
+ config.after(:all) do
8
+ FileUtils.rm_rf(File.join(ENV['HOME'], '.dotman')) if File.directory? (File.join(ENV['HOME'], '.dotman'))
9
+ FileUtils.rm(File.join(ENV['HOME'], '.bashrc')) if File.symlink? (File.join(ENV['HOME'], '.bashrc'))
10
+ FileUtils.rm(File.join(ENV['HOME'], '.gitignore')) if File.symlink? (File.join(ENV['HOME'], '.gitignore'))
11
+ FileUtils.rm(File.join(ENV['HOME'], '.tmux.conf')) if File.symlink? (File.join(ENV['HOME'], '.tmux.conf'))
12
+ FileUtils.rm(File.join(ENV['HOME'], '.vim')) if File.symlink? (File.join(ENV['HOME'], '.vim'))
13
+ FileUtils.rm(File.join(ENV['HOME'], '.vimrc')) if File.symlink? (File.join(ENV['HOME'], '.vimrc'))
14
+ FileUtils.rm(File.join(ENV['HOME'], '.zshrc')) if File.symlink? (File.join(ENV['HOME'], '.zshrc'))
15
+ end
16
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dotman
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-31 00:00:00.000000000 Z
11
+ date: 2013-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -88,10 +88,7 @@ files:
88
88
  - lib/dotman/git.rb
89
89
  - lib/dotman/user.rb
90
90
  - lib/dotman/version.rb
91
- - spec/data/dotfiles/.bashrc
92
- - spec/data/dotfiles/.vimrc
93
- - spec/data/dotfiles/.zshrc
94
- - spec/data/dotfiles/some_nondot_file
91
+ - spec/data/home/.gitkeep
95
92
  - spec/dotman/base_spec.rb
96
93
  - spec/dotman/dotfile_collection_spec.rb
97
94
  - spec/dotman_spec.rb
@@ -127,10 +124,7 @@ specification_version: 4
127
124
  summary: Use this utility to manage your dotfiles and others who may use the same
128
125
  login user as yourself
129
126
  test_files:
130
- - spec/data/dotfiles/.bashrc
131
- - spec/data/dotfiles/.vimrc
132
- - spec/data/dotfiles/.zshrc
133
- - spec/data/dotfiles/some_nondot_file
127
+ - spec/data/home/.gitkeep
134
128
  - spec/dotman/base_spec.rb
135
129
  - spec/dotman/dotfile_collection_spec.rb
136
130
  - spec/dotman_spec.rb
File without changes
File without changes
File without changes