vircs 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +1 -0
- data/.rspec +2 -0
- data/.rvmrc +1 -0
- data/.travis.yml +2 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +47 -0
- data/Guardfile +9 -0
- data/LICENSE +22 -0
- data/README.md +108 -0
- data/Rakefile +39 -0
- data/bin/vircs +21 -0
- data/lib/vircs.rb +5 -0
- data/lib/vircs/configuration_reader.rb +35 -0
- data/lib/vircs/version.rb +1 -0
- data/lib/vircs/virc.rb +144 -0
- data/spec/configuration_reader_spec.rb +40 -0
- data/spec/current_spec.rb +22 -0
- data/spec/examples/flinstone/bambam +0 -0
- data/spec/examples/flinstone/wilma +0 -0
- data/spec/examples/fred/barefoot +0 -0
- data/spec/examples/fred/caveman +0 -0
- data/spec/list_spec.rb +30 -0
- data/spec/prompt_info_spec.rb +16 -0
- data/spec/spec_helper.rb +27 -0
- data/spec/usage_spec.rb +15 -0
- data/spec/use_spec.rb +39 -0
- data/spec/version_spec.rb +9 -0
- data/vircs +21 -0
- data/vircs.gemspec +26 -0
- metadata +205 -0
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
pkg
|
data/.rspec
ADDED
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm use --create 1.9.3@vircs
|
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
vircs (1.0.2)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: https://rubygems.org/
|
8
|
+
specs:
|
9
|
+
coderay (1.0.7)
|
10
|
+
diff-lcs (1.1.3)
|
11
|
+
growl (1.0.3)
|
12
|
+
guard (1.4.0)
|
13
|
+
listen (>= 0.4.2)
|
14
|
+
thor (>= 0.14.6)
|
15
|
+
guard-rspec (1.2.1)
|
16
|
+
guard (>= 1.1)
|
17
|
+
listen (0.5.2)
|
18
|
+
method_source (0.8)
|
19
|
+
pry (0.9.10)
|
20
|
+
coderay (~> 1.0.5)
|
21
|
+
method_source (~> 0.8)
|
22
|
+
slop (~> 3.3.1)
|
23
|
+
rake (0.9.2.2)
|
24
|
+
rb-fsevent (0.9.2)
|
25
|
+
rspec (2.8.0)
|
26
|
+
rspec-core (~> 2.8.0)
|
27
|
+
rspec-expectations (~> 2.8.0)
|
28
|
+
rspec-mocks (~> 2.8.0)
|
29
|
+
rspec-core (2.8.0)
|
30
|
+
rspec-expectations (2.8.0)
|
31
|
+
diff-lcs (~> 1.1.2)
|
32
|
+
rspec-mocks (2.8.0)
|
33
|
+
slop (3.3.3)
|
34
|
+
thor (0.16.0)
|
35
|
+
|
36
|
+
PLATFORMS
|
37
|
+
ruby
|
38
|
+
|
39
|
+
DEPENDENCIES
|
40
|
+
growl
|
41
|
+
guard
|
42
|
+
guard-rspec
|
43
|
+
pry
|
44
|
+
rake
|
45
|
+
rb-fsevent
|
46
|
+
rspec
|
47
|
+
vircs!
|
data/Guardfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2012 Jeremy W. Rowe
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,108 @@
|
|
1
|
+
# Vircs
|
2
|
+
|
3
|
+
Vircs is a simple way of managing vim configuration files, allowing you the 'awesome' vim user to switch between a grouping of vim configuration files. (great for pairing). This is achieved by tracking, linking and unlinking vim files and folders in a common location.
|
4
|
+
|
5
|
+
## ATTENTION!
|
6
|
+
Vircs can be destructive if you are not careful. Please read carefully, and don't hold me responsible, I back up my configuration files with git, I suggest you do the same. (with or without this tool) :) Vircs unlinks and links files/folders when switching between configuration sets. So if you haven't moved all of your .vim files into a vircs directory, they could get deleted if similarly named files are in the vircs configuration set. I warned you.
|
7
|
+
|
8
|
+
## Installation
|
9
|
+
$ gem install vircs
|
10
|
+
|
11
|
+
or
|
12
|
+
|
13
|
+
clone the project, and then run `rake vircs:install` if you don't want to install via ruby gems (this might be prefered if running rvm)
|
14
|
+
|
15
|
+
To use vircs place the source files for vircs anywhere you wish to. (defaults location is ~/.vims).
|
16
|
+
|
17
|
+
* Create folders in the vircs folder including all of your vim
|
18
|
+
configuration in them.
|
19
|
+
EX:
|
20
|
+
/path/to/vircs/folder/config1
|
21
|
+
/path/to/vircs/folder/config2
|
22
|
+
/path/to/vircs/folder/config3
|
23
|
+
|
24
|
+
* make sure you have a .vircs file with the file path in which you
|
25
|
+
wish to store your vim configuration files in it. Defaults to
|
26
|
+
~/.vims if one is not found. (rake vircs:install will create ~/.vims for you)
|
27
|
+
|
28
|
+
Example ~/.vircs file contents: ~/.my_super_awesome_vim_configurations
|
29
|
+
|
30
|
+
Example vircs folder structure
|
31
|
+
|
32
|
+
└── .vircs
|
33
|
+
├── pat
|
34
|
+
│ ├── .foobartest
|
35
|
+
│ ├── .gvimrc
|
36
|
+
│ └── .vimrc
|
37
|
+
├── sam
|
38
|
+
│ └── .gvimrc
|
39
|
+
└── vircs.current
|
40
|
+
|
41
|
+
Where 'pat' is a folder with vim configuration files for the 'pat' configuration set, and 'sam' is a folder
|
42
|
+
for the 'sam' configuration set.
|
43
|
+
|
44
|
+
## Usage
|
45
|
+
|
46
|
+
[](http://travis-ci.org/jeremywrowe/vircs)
|
47
|
+
|
48
|
+
COMMANDS
|
49
|
+
|
50
|
+
usage: lists this lovely help file :)
|
51
|
+
EX: vircs usage
|
52
|
+
|
53
|
+
list: lists all of the available vim configurations
|
54
|
+
EX: vircs list
|
55
|
+
|
56
|
+
use: switchs to the supplied vim configuration
|
57
|
+
EX: vircs use foo
|
58
|
+
(this will switch to the foo configuration)
|
59
|
+
|
60
|
+
current: displays the current vim configuration
|
61
|
+
EX: vircs current
|
62
|
+
|
63
|
+
dir: shows you where your configuration files are stored
|
64
|
+
|
65
|
+
prompt_info: displays the current vim configuration as follows "vircs:configx"
|
66
|
+
where configx is the current configuration
|
67
|
+
EX: vircs prompt_info
|
68
|
+
|
69
|
+
version: gem version
|
70
|
+
|
71
|
+
--------------------------------------------------
|
72
|
+
|
73
|
+
## Contributing
|
74
|
+
|
75
|
+
1. Fork it
|
76
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
77
|
+
3. Commit your changes (`git commit -am 'Added some feature'`)
|
78
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
79
|
+
5. Create new Pull Request
|
80
|
+
|
81
|
+
## License
|
82
|
+
|
83
|
+
What follows is the modified MIT License that applies to
|
84
|
+
vircs
|
85
|
+
|
86
|
+
Copyright © 2012 Jeremy Rowe
|
87
|
+
|
88
|
+
Permission is hereby granted, free of charge, to any person obtaining a
|
89
|
+
copy of this software and associated documentation files (the
|
90
|
+
“Software”), to deal in the Software without restriction, including
|
91
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
92
|
+
distribute, sub-license, and/or sell copies of the Software, and to
|
93
|
+
permit persons to whom the Software is furnished to do so, subject to
|
94
|
+
the following conditions:
|
95
|
+
|
96
|
+
The above copyright notice, and every other copyright notice found in
|
97
|
+
this software, and all the attributions in every file, and this
|
98
|
+
permission notice shall be included in all copies or substantial
|
99
|
+
portions of the Software.
|
100
|
+
|
101
|
+
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
102
|
+
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
103
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
|
104
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
105
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
106
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
107
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
108
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
require "bundler/gem_tasks"
|
3
|
+
require 'bundler/setup'
|
4
|
+
require 'rspec/core/rake_task'
|
5
|
+
require 'fileutils'
|
6
|
+
|
7
|
+
include FileUtils::Verbose
|
8
|
+
|
9
|
+
desc 'Default: run specs.'
|
10
|
+
task :default => :spec
|
11
|
+
|
12
|
+
$here = File.expand_path(File.dirname(__FILE__))
|
13
|
+
VIRCS_EXE = "vircs"
|
14
|
+
README = "README.md"
|
15
|
+
|
16
|
+
desc "Run specs"
|
17
|
+
RSpec::Core::RakeTask.new {|t|}
|
18
|
+
|
19
|
+
namespace :vircs do
|
20
|
+
|
21
|
+
desc "Install Vircs"
|
22
|
+
task :install do
|
23
|
+
dest_dir = File.expand_path(File.join(home, ".vims"))
|
24
|
+
mkdir_p dest_dir
|
25
|
+
cp File.expand_path(File.join($here, VIRCS_EXE)), dest_dir
|
26
|
+
cp File.expand_path(File.join($here, README)), dest_dir
|
27
|
+
puts "\nInstallation almost complete, there is one last thing that needs to be done:"
|
28
|
+
puts "\tPlease add #{dest_dir} to your path!"
|
29
|
+
puts "\tOh yeah! Enjoy!"
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
def home
|
34
|
+
home_vars = ["HOME", "HOMEPATH"]
|
35
|
+
home = home_vars.detect {|h| ENV[h] != nil}
|
36
|
+
ENV[home]
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
data/bin/vircs
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'vircs'
|
3
|
+
|
4
|
+
module Vircs
|
5
|
+
|
6
|
+
end
|
7
|
+
|
8
|
+
|
9
|
+
config_reader = Vircs::ConfigurationReader.new
|
10
|
+
instance = Vircs::Virc.new config_reader.configuration_path
|
11
|
+
if ARGV.size > 0
|
12
|
+
begin
|
13
|
+
command = ARGV.shift
|
14
|
+
instance.send(command, ARGV)
|
15
|
+
rescue Exception => e
|
16
|
+
puts e.message
|
17
|
+
end
|
18
|
+
else
|
19
|
+
instance.usage
|
20
|
+
end
|
21
|
+
|
data/lib/vircs.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
module Vircs
|
2
|
+
class ConfigurationReader
|
3
|
+
def has_configuration?
|
4
|
+
read_vircs_file do |answer|
|
5
|
+
return !answer.nil?
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
def configuration_path
|
10
|
+
read_vircs_file do |answer|
|
11
|
+
return answer
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
def read_vircs_file(&block)
|
17
|
+
begin
|
18
|
+
yield File.read(File.join ENV['HOME'], '.vircs').strip
|
19
|
+
rescue
|
20
|
+
if default_path
|
21
|
+
yield default_path
|
22
|
+
else
|
23
|
+
yield nil
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def default_path
|
29
|
+
@default_path ||= begin
|
30
|
+
path = File.join ENV['HOME'], '.vims'
|
31
|
+
File.exists?(path) ? path : nil
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
module Vircs; VERSION = "1.0.2"; end
|
data/lib/vircs/virc.rb
ADDED
@@ -0,0 +1,144 @@
|
|
1
|
+
module Vircs
|
2
|
+
class Virc
|
3
|
+
require 'fileutils'
|
4
|
+
include FileUtils
|
5
|
+
|
6
|
+
def initialize(_execution_path=nil)
|
7
|
+
unless _execution_path
|
8
|
+
_execution_path = File.expand_path(File.dirname(__FILE__))
|
9
|
+
_execution_path = File.expand_path(File.dirname(File.readlink(__FILE__))) if File.symlink?(__FILE__)
|
10
|
+
end
|
11
|
+
@execution_path = _execution_path
|
12
|
+
end
|
13
|
+
|
14
|
+
def execution_path
|
15
|
+
@execution_path
|
16
|
+
end
|
17
|
+
|
18
|
+
def usage(*args)
|
19
|
+
usage = <<-USG
|
20
|
+
|===============================================================
|
21
|
+
|
|
22
|
+
| VIRCS - vim config management
|
23
|
+
|
|
24
|
+
|===============================================================
|
25
|
+
|
|
26
|
+
| usage: lists this lovely help file :)
|
27
|
+
| EX: vircs usage
|
28
|
+
|
|
29
|
+
| list: lists all of the available vim configurations
|
30
|
+
| EX: vircs list
|
31
|
+
|
|
32
|
+
| use: switchs to the supplied vim configuration
|
33
|
+
| EX: vircs use foo
|
34
|
+
| (this will switch to the foo configuration)
|
35
|
+
|
|
36
|
+
| current: displays the current vim configuration
|
37
|
+
| EX: vircs current
|
38
|
+
|
|
39
|
+
| dir: shows you where your configuration files are stored
|
40
|
+
|
|
41
|
+
| prompt_info: displays the current vim configuration as follows "vircs:config_x"
|
42
|
+
| where config_x is the current configuration
|
43
|
+
| EX: vircs prompt_info
|
44
|
+
|
|
45
|
+
| version: gem version
|
46
|
+
USG
|
47
|
+
$stdout.puts usage.gsub("|", "")
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
def list(*args)
|
52
|
+
args.flatten!
|
53
|
+
Dir[execution_path+"/*"].each do |p|
|
54
|
+
if File.directory?(p)
|
55
|
+
config = p.split("/").last
|
56
|
+
config += "*" if config == current(true)
|
57
|
+
puts config
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def use(*args)
|
63
|
+
args.flatten!
|
64
|
+
if args.size == 1
|
65
|
+
config = args[0]
|
66
|
+
check_for(config)
|
67
|
+
unlink_current
|
68
|
+
setup_links(config)
|
69
|
+
save_current(config)
|
70
|
+
else
|
71
|
+
usage
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def dir(*args)
|
76
|
+
$stdout.puts execution_path
|
77
|
+
end
|
78
|
+
|
79
|
+
def version(*args)
|
80
|
+
$stdout.puts Vircs::VERSION
|
81
|
+
end
|
82
|
+
|
83
|
+
def current(args)
|
84
|
+
path = File.read(File.join(execution_path, "vircs.current")).split("\n").first
|
85
|
+
if args
|
86
|
+
path
|
87
|
+
else
|
88
|
+
puts path
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
def prompt_info(args)
|
93
|
+
puts "virc:" + File.read(File.join(execution_path, "vircs.current"))
|
94
|
+
end
|
95
|
+
|
96
|
+
def method_missing(m, *args, &block)
|
97
|
+
usage
|
98
|
+
end
|
99
|
+
|
100
|
+
private
|
101
|
+
|
102
|
+
def check_for(name)
|
103
|
+
raise "Could not find '#{name}' directory in [#{execution_path}]. Perhaps do a 'virc list'" unless Dir.glob(execution_path+"/**").include?("#{execution_path}/#{name}")
|
104
|
+
end
|
105
|
+
|
106
|
+
def save_current(config)
|
107
|
+
File.open(File.join(execution_path, "vircs.current"), "w") {|f| f.puts config}
|
108
|
+
end
|
109
|
+
|
110
|
+
def unlink_current
|
111
|
+
Dir.entries("#{ENV['HOME']}").each do |path|
|
112
|
+
path = File.expand_path(File.join(ENV['HOME'], path))
|
113
|
+
next if path[-1] == '.'
|
114
|
+
if File.symlink? path
|
115
|
+
link_path = File.readlink(path)
|
116
|
+
includes_base = link_path.start_with?(execution_path)
|
117
|
+
if includes_base
|
118
|
+
File.unlink(path)
|
119
|
+
$stdout.puts "Removed [#{path}]"
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
def setup_links(vim_config)
|
126
|
+
vim_config_path = File.join(execution_path, vim_config)
|
127
|
+
Dir.entries("#{vim_config_path}").each do |path|
|
128
|
+
next if path[-1] == '.' or path == vim_config_path
|
129
|
+
begin
|
130
|
+
dest_path = File.join(ENV["HOME"], path)
|
131
|
+
path = File.join(vim_config_path, path) unless path.start_with? vim_config_path
|
132
|
+
File.symlink path, dest_path
|
133
|
+
puts "Added [#{dest_path}]"
|
134
|
+
rescue Exception => e
|
135
|
+
puts "#{e.message}. Continuing" if debug
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
def debug
|
141
|
+
ENV["debug"] || ENV["DEBUG"]
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/spec_helper.rb")
|
2
|
+
|
3
|
+
module Vircs
|
4
|
+
describe ConfigurationReader do
|
5
|
+
|
6
|
+
describe "#configuration_path" do
|
7
|
+
it "provides the configuration path when there is one present" do
|
8
|
+
File.should_receive(:read).with(File.join(ENV['HOME'], '.vircs')).and_return "/foo/man/shoe"
|
9
|
+
subject.configuration_path.should eq "/foo/man/shoe"
|
10
|
+
end
|
11
|
+
|
12
|
+
it "provides a trimmed down path if there is extra spaces at the end of the path string" do
|
13
|
+
File.should_receive(:read).with(File.join(ENV['HOME'], '.vircs')).and_return "/foo/man/shoe "
|
14
|
+
subject.configuration_path.should eq "/foo/man/shoe"
|
15
|
+
end
|
16
|
+
it "provides a trimmed down path if there are extra spaces at the beginning of the path string" do
|
17
|
+
File.should_receive(:read).with(File.join(ENV['HOME'], '.vircs')).and_return " /foo/man/shoe"
|
18
|
+
subject.configuration_path.should eq "/foo/man/shoe"
|
19
|
+
end
|
20
|
+
it "defaults to the .vims path when a path can not be found" do
|
21
|
+
File.should_receive(:read).with(File.join(ENV['HOME'], '.vircs')).and_throw Errno::ENOENT.new
|
22
|
+
File.should_receive(:exists?).and_return true
|
23
|
+
subject.configuration_path.should eq File.join(ENV['HOME'], '.vims')
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "#configuration_path_exists?" do
|
28
|
+
it "is true when a configuration file exists" do
|
29
|
+
File.should_receive(:read).with(File.join(ENV['HOME'], '.vircs')).and_return "/foo/man/shoe"
|
30
|
+
subject.has_configuration?.should eq true
|
31
|
+
end
|
32
|
+
|
33
|
+
it "is false when a configuration file does not exist" do
|
34
|
+
File.should_receive(:read).with(File.join(ENV['HOME'], '.vircs')).and_throw Errno::ENOENT.new
|
35
|
+
File.should_receive(:exists?).and_return false
|
36
|
+
subject.has_configuration?.should eq false
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/spec_helper.rb")
|
2
|
+
|
3
|
+
module Vircs
|
4
|
+
describe Virc do
|
5
|
+
context "#current" do
|
6
|
+
it "returns the currently set vim config if set and args are set" do
|
7
|
+
File.should_receive(:read).and_return("foo")
|
8
|
+
subject.current("some args").should eq("foo")
|
9
|
+
end
|
10
|
+
|
11
|
+
it "displays the currently set vim config if set and args are nil" do
|
12
|
+
File.should_receive(:read).and_return("foo")
|
13
|
+
capture(:stdout) { subject.current(nil) }.should eq("foo\n")
|
14
|
+
end
|
15
|
+
|
16
|
+
it "throws an exception if the current vim config is not set" do
|
17
|
+
File.should_receive(:read).and_raise("FROM DOWN TOWN")
|
18
|
+
expect { subject.current("some args") }.to raise_error("FROM DOWN TOWN")
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/spec/list_spec.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/spec_helper.rb")
|
2
|
+
|
3
|
+
module Vircs
|
4
|
+
describe Virc do
|
5
|
+
describe "#list" do
|
6
|
+
context "the directory is set to the current directory" do
|
7
|
+
|
8
|
+
subject { Virc.new File.expand_path(File.dirname(__FILE__) + '/..') }
|
9
|
+
|
10
|
+
it "lists all of the folders in the same directory as vircs" do
|
11
|
+
subject.stub_chain(:current).and_return("none_of_the_above")
|
12
|
+
capture(:stdout) { subject.list }.should eq("bin\nlib\nspec\n")
|
13
|
+
end
|
14
|
+
|
15
|
+
it "lists all of the folders in the same directory as vircs with current *'ed" do
|
16
|
+
subject.stub_chain(:current).and_return("spec")
|
17
|
+
capture(:stdout) { subject.list }.should eq("bin\nlib\nspec*\n")
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context "configured path for vircs" do
|
22
|
+
subject { Virc.new File.expand_path(File.dirname(__FILE__) + '/../lib') }
|
23
|
+
it "lists all of the folders when the non standard path is specified in .vircs file" do
|
24
|
+
subject.stub_chain(:current).and_return("none_of_the_above")
|
25
|
+
capture(:stdout) { subject.list }.should eq("vircs\n")
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/spec_helper.rb")
|
2
|
+
|
3
|
+
module Vircs
|
4
|
+
describe Virc do
|
5
|
+
context "#prompt_info" do
|
6
|
+
it "raises an error when .current file doesn't exist" do
|
7
|
+
File.should_receive(:read).and_raise("File not found")
|
8
|
+
expect { subject.prompt_info(nil) }.to raise_error("File not found")
|
9
|
+
end
|
10
|
+
it "displays the current configuration" do
|
11
|
+
File.should_receive(:read).and_return("12345")
|
12
|
+
capture(:stdout){ subject.prompt_info(:foo) }.should eq("virc:12345\n")
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
$LOAD_PATH << File.join(File.dirname(__FILE__), "..", "lib")
|
2
|
+
require 'vircs'
|
3
|
+
|
4
|
+
require 'stringio'
|
5
|
+
require 'pry'
|
6
|
+
|
7
|
+
def capture(*streams)
|
8
|
+
streams.map! { |stream| stream.to_s }
|
9
|
+
begin
|
10
|
+
result = StringIO.new
|
11
|
+
streams.each { |stream| eval "$#{stream} = result" }
|
12
|
+
yield
|
13
|
+
ensure
|
14
|
+
streams.each { |stream| eval("$#{stream} = #{stream.upcase}") }
|
15
|
+
end
|
16
|
+
result.string
|
17
|
+
end
|
18
|
+
|
19
|
+
def usage_pattern
|
20
|
+
/^.*?VIRCS - vim config management.*?SETUP.*?COMMANDS.*?usage:.*?list:.*?use:.*?current:.*?prompt_info.*$/m
|
21
|
+
end
|
22
|
+
|
23
|
+
RSpec.configure do |config|
|
24
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
25
|
+
config.run_all_when_everything_filtered = true
|
26
|
+
config.filter_run :focus
|
27
|
+
end
|
data/spec/usage_spec.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/spec_helper.rb")
|
2
|
+
|
3
|
+
module Vircs
|
4
|
+
describe Virc do
|
5
|
+
context "#usage" do
|
6
|
+
it "displays the porper usage" do
|
7
|
+
capture(:stdout) { subject.usage }.should =~ usage_pattern
|
8
|
+
end
|
9
|
+
|
10
|
+
it "displays usage when an improper command is provided" do
|
11
|
+
capture(:stdout) { subject.some_random_missing_method }.should =~ usage_pattern
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/spec/use_spec.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/spec_helper.rb")
|
2
|
+
|
3
|
+
module Vircs
|
4
|
+
describe Virc do
|
5
|
+
context "#use" do
|
6
|
+
context "with args" do
|
7
|
+
let(:args) { "foo" }
|
8
|
+
it "saves the current config" do
|
9
|
+
subject.should_receive(:check_for).with("foo")
|
10
|
+
subject.should_receive(:unlink_current)
|
11
|
+
subject.should_receive(:setup_links).with("foo")
|
12
|
+
subject.should_receive(:save_current).with("foo")
|
13
|
+
capture(:stdout) { subject.use(args) }.should == ""
|
14
|
+
end
|
15
|
+
|
16
|
+
it "saves the current configuration when files are present" do
|
17
|
+
subject = Virc.new File.expand_path('examples', File.dirname(__FILE__))
|
18
|
+
subject.should_receive(:check_for).with("flinstone")
|
19
|
+
subject.should_receive(:unlink_current)
|
20
|
+
# subject.setup_links: is called but we want it to execute
|
21
|
+
# but without actually creating symbolic links
|
22
|
+
File.stub(:symlink)
|
23
|
+
subject.should_receive(:save_current).with("flinstone")
|
24
|
+
capture(:stdout) { subject.use("flinstone") }.should =~ /Added\s+\[.+\/bambam\]/
|
25
|
+
end
|
26
|
+
|
27
|
+
it "raises an exception when the supplied folder is not present" do
|
28
|
+
subject.stub_chain(:check_for).and_raise("KA-BOOM")
|
29
|
+
expect { subject.use(args) }.to raise_error("KA-BOOM")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
context "without args" do
|
33
|
+
it "shows usage when no args are provided" do
|
34
|
+
capture(:stdout) { subject.use }.should =~ usage_pattern
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/vircs
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'vircs'
|
3
|
+
|
4
|
+
module Vircs
|
5
|
+
|
6
|
+
end
|
7
|
+
|
8
|
+
|
9
|
+
config_reader = Vircs::ConfigurationReader.new
|
10
|
+
instance = Vircs::Virc.new config_reader.configuration_path
|
11
|
+
if ARGV.size > 0
|
12
|
+
begin
|
13
|
+
command = ARGV.shift
|
14
|
+
instance.send(command, ARGV)
|
15
|
+
rescue Exception => e
|
16
|
+
puts e.message
|
17
|
+
end
|
18
|
+
else
|
19
|
+
instance.usage
|
20
|
+
end
|
21
|
+
|
data/vircs.gemspec
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path('../lib/vircs/version', __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |gem|
|
5
|
+
gem.authors = ["Jeremy W. Rowe"]
|
6
|
+
gem.email = ["jeremy.w.rowe@gmail.com"]
|
7
|
+
gem.summary = %q{A simplistic approach to managing vim configuration files.}
|
8
|
+
|
9
|
+
gem.files = `git ls-files`.split($\)
|
10
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
11
|
+
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
12
|
+
gem.name = "vircs"
|
13
|
+
gem.bindir = 'bin'
|
14
|
+
gem.executables = ['vircs']
|
15
|
+
gem.default_executable = 'vircs'
|
16
|
+
gem.require_paths = ["lib"]
|
17
|
+
gem.version = Vircs::VERSION
|
18
|
+
|
19
|
+
gem.add_development_dependency('rake')
|
20
|
+
gem.add_development_dependency('rspec')
|
21
|
+
gem.add_development_dependency('guard')
|
22
|
+
gem.add_development_dependency('guard-rspec')
|
23
|
+
gem.add_development_dependency('rb-fsevent')
|
24
|
+
gem.add_development_dependency('growl')
|
25
|
+
gem.add_development_dependency('pry')
|
26
|
+
end
|
metadata
ADDED
@@ -0,0 +1,205 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: vircs
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.2
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Jeremy W. Rowe
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-09-30 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rake
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rspec
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: guard
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: guard-rspec
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: rb-fsevent
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: growl
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: pry
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
description:
|
127
|
+
email:
|
128
|
+
- jeremy.w.rowe@gmail.com
|
129
|
+
executables:
|
130
|
+
- vircs
|
131
|
+
extensions: []
|
132
|
+
extra_rdoc_files: []
|
133
|
+
files:
|
134
|
+
- .gitignore
|
135
|
+
- .rspec
|
136
|
+
- .rvmrc
|
137
|
+
- .travis.yml
|
138
|
+
- Gemfile
|
139
|
+
- Gemfile.lock
|
140
|
+
- Guardfile
|
141
|
+
- LICENSE
|
142
|
+
- README.md
|
143
|
+
- Rakefile
|
144
|
+
- bin/vircs
|
145
|
+
- lib/vircs.rb
|
146
|
+
- lib/vircs/configuration_reader.rb
|
147
|
+
- lib/vircs/version.rb
|
148
|
+
- lib/vircs/virc.rb
|
149
|
+
- spec/configuration_reader_spec.rb
|
150
|
+
- spec/current_spec.rb
|
151
|
+
- spec/examples/flinstone/bambam
|
152
|
+
- spec/examples/flinstone/wilma
|
153
|
+
- spec/examples/fred/barefoot
|
154
|
+
- spec/examples/fred/caveman
|
155
|
+
- spec/list_spec.rb
|
156
|
+
- spec/prompt_info_spec.rb
|
157
|
+
- spec/spec_helper.rb
|
158
|
+
- spec/usage_spec.rb
|
159
|
+
- spec/use_spec.rb
|
160
|
+
- spec/version_spec.rb
|
161
|
+
- vircs
|
162
|
+
- vircs.gemspec
|
163
|
+
homepage:
|
164
|
+
licenses: []
|
165
|
+
post_install_message:
|
166
|
+
rdoc_options: []
|
167
|
+
require_paths:
|
168
|
+
- lib
|
169
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
170
|
+
none: false
|
171
|
+
requirements:
|
172
|
+
- - ! '>='
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: '0'
|
175
|
+
segments:
|
176
|
+
- 0
|
177
|
+
hash: -702391878186625004
|
178
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
179
|
+
none: false
|
180
|
+
requirements:
|
181
|
+
- - ! '>='
|
182
|
+
- !ruby/object:Gem::Version
|
183
|
+
version: '0'
|
184
|
+
segments:
|
185
|
+
- 0
|
186
|
+
hash: -702391878186625004
|
187
|
+
requirements: []
|
188
|
+
rubyforge_project:
|
189
|
+
rubygems_version: 1.8.24
|
190
|
+
signing_key:
|
191
|
+
specification_version: 3
|
192
|
+
summary: A simplistic approach to managing vim configuration files.
|
193
|
+
test_files:
|
194
|
+
- spec/configuration_reader_spec.rb
|
195
|
+
- spec/current_spec.rb
|
196
|
+
- spec/examples/flinstone/bambam
|
197
|
+
- spec/examples/flinstone/wilma
|
198
|
+
- spec/examples/fred/barefoot
|
199
|
+
- spec/examples/fred/caveman
|
200
|
+
- spec/list_spec.rb
|
201
|
+
- spec/prompt_info_spec.rb
|
202
|
+
- spec/spec_helper.rb
|
203
|
+
- spec/usage_spec.rb
|
204
|
+
- spec/use_spec.rb
|
205
|
+
- spec/version_spec.rb
|