vimmer 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/.autotest ADDED
@@ -0,0 +1 @@
1
+ require 'autotest/growl'
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ pkg/*
2
+ *.gem
3
+ .bundle
4
+ tmp/
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format Fuubar
data/.rvmrc ADDED
@@ -0,0 +1,5 @@
1
+ if [[ -n "$rvm_environments_path" && -s "$rvm_environments_path/ruby-1.9.2-p0@vimmer" ]] ; then
2
+ . "$rvm_environments_path/ruby-1.9.2-p0@vimmer"
3
+ else
4
+ rvm --create "ruby-1.9.2-p0@vimmer"
5
+ fi
data/Gemfile ADDED
@@ -0,0 +1,9 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in vimmer.gemspec
4
+ gemspec
5
+
6
+ if RUBY_PLATFORM =~ /darwin/
7
+ gem "autotest-growl"
8
+ gem "autotest-fsevent"
9
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,67 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ vimmer (0.0.1)
5
+ thor
6
+
7
+ GEM
8
+ remote: http://rubygems.org/
9
+ specs:
10
+ aruba (0.2.6)
11
+ background_process
12
+ cucumber (~> 0.9.4)
13
+ autotest (4.4.2)
14
+ autotest-fsevent (0.2.3)
15
+ sys-uname
16
+ autotest-growl (0.2.6)
17
+ background_process (1.2)
18
+ builder (2.1.2)
19
+ cucumber (0.9.4)
20
+ builder (~> 2.1.2)
21
+ diff-lcs (~> 1.1.2)
22
+ gherkin (~> 2.2.9)
23
+ json (~> 1.4.6)
24
+ term-ansicolor (~> 1.0.5)
25
+ diff-lcs (1.1.2)
26
+ fakefs (0.2.1)
27
+ fuubar (0.0.2)
28
+ rspec (~> 2.0)
29
+ rspec-instafail (~> 0.1.4)
30
+ ruby-progressbar (~> 0.0.9)
31
+ gherkin (2.2.9)
32
+ json (~> 1.4.6)
33
+ term-ansicolor (~> 1.0.5)
34
+ json (1.4.6)
35
+ rr (1.0.2)
36
+ rspec (2.0.1)
37
+ rspec-core (~> 2.0.1)
38
+ rspec-expectations (~> 2.0.1)
39
+ rspec-mocks (~> 2.0.1)
40
+ rspec-core (2.0.1)
41
+ rspec-expectations (2.0.1)
42
+ diff-lcs (>= 1.1.2)
43
+ rspec-instafail (0.1.4)
44
+ rspec-mocks (2.0.1)
45
+ rspec-core (~> 2.0.1)
46
+ rspec-expectations (~> 2.0.1)
47
+ ruby-progressbar (0.0.9)
48
+ sys-uname (0.8.4)
49
+ term-ansicolor (1.0.5)
50
+ thor (0.14.4)
51
+
52
+ PLATFORMS
53
+ ruby
54
+
55
+ DEPENDENCIES
56
+ aruba
57
+ autotest
58
+ autotest-fsevent
59
+ autotest-growl
60
+ bundler (>= 1.0.0)
61
+ cucumber
62
+ fakefs
63
+ fuubar
64
+ rr
65
+ rspec (~> 2.0.0)
66
+ thor
67
+ vimmer!
data/README.mdown ADDED
@@ -0,0 +1,31 @@
1
+ # Vimmer: Easily manage your Vim plugins #
2
+
3
+ Vimmer makes it easy to install, remove and update Vim plugins from the following sources:
4
+
5
+ - Github
6
+ - Vim.org (coming soon)
7
+
8
+ N.B. Vimmer is a work in process. This is an early alpha release for those who want to give it a try and are willing to submit feedback. I am offering it with NO GUARANTEES. If you're still with me, you can submit your feedback at [https://github.com/densitypop/Vimmer/issues](https://github.com/densitypop/Vimmer/issues). Thank you!
9
+
10
+ ## Installation and Usage ##
11
+
12
+ Installing Vimmer is as simple as running:
13
+
14
+ gem install vimmer
15
+
16
+ ### Dependencies ###
17
+
18
+ Vimmer depends on the Pathogen plugin for managing Vim's runtime path. Using Pathogen, Vimmer will install plugins into ~/.vim/bundle. Installing a plugin is as simple as running:
19
+
20
+ vimmer install https://github.com/tpope/vim-fugitive.git
21
+
22
+ Restart Vim and you're done! For details on installing Pathogen see [Pathogen on Vim.org](http://www.vim.org/scripts/script.php?script_id=2332). Note: I am planning to automatically setup Pathogen during the Vimmer install process.
23
+
24
+ ## Contributing to Vimmer ##
25
+
26
+ 1. Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
27
+ 2. Check out the [issue tracker](http://github.com/densitypop/Vimmer/issues) to make sure someone already hasn't requested it and/or contributed it
28
+ 3. Fork the project
29
+ 4. Write some tests/Cukes; implement until you're happy. This is important to make sure I don't accidentally break your fix in the future
30
+ 5. Send me a pull request
31
+
data/Rakefile ADDED
@@ -0,0 +1,19 @@
1
+ require 'bundler'
2
+ require 'rspec/core/rake_task'
3
+ require 'cucumber/rake/task'
4
+
5
+ Bundler::GemHelper.install_tasks
6
+
7
+ Cucumber::Rake::Task.new(:features) do |t|
8
+ t.cucumber_opts = "features --format pretty"
9
+ end
10
+
11
+ RSpec::Core::RakeTask.new(:spec)
12
+
13
+ task :default => [:features, :spec]
14
+
15
+ namespace :relish do
16
+ task :push do
17
+ `relish push joefiorini/vimmer`
18
+ end
19
+ end
@@ -0,0 +1 @@
1
+ Autotest.add_discovery { "rspec2" }
data/bin/vimmer ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require 'vimmer/cli'
3
+ Vimmer::CLI.start
data/cucumber.yml ADDED
@@ -0,0 +1,5 @@
1
+ default: --format progress features
2
+ html_report: --format progress --format html --out=features_report.html features
3
+ wip: --tags @wip:1 --wip
4
+ autotest: --color
5
+ autotest-all: --color
@@ -0,0 +1,29 @@
1
+ Feature: Install plugin
2
+
3
+ Background:
4
+ Given a directory named ".vimmer"
5
+ And a bundle path set for my system
6
+
7
+ Scenario: Install from Github
8
+ Given I have no plugins installed
9
+ When I successfully run "vimmer install 'https://github.com/tpope/vim-awesomemofo.git'"
10
+ Then a plugin named "vim-awesomemofo" should be installed
11
+ And the stdout should contain "vim-awesomemofo has been installed"
12
+
13
+ Scenario: Install from Github with bad URL
14
+ Given I have no plugins installed
15
+ When I run "vimmer install 'https://github.com/tpope/not-found.git'"
16
+ Then I should still not have any plugins installed
17
+ And it should fail with:
18
+ """
19
+ The plugin not-found could not be found
20
+ """
21
+
22
+ Scenario: Install from Github with a non-Github URL
23
+ Given I have no plugins installed
24
+ When I run "vimmer install 'http://example.com/bad'"
25
+ Then I should still not have any plugins installed
26
+ And it should fail with:
27
+ """
28
+ The URL http://example.com/bad is invalid.
29
+ """
@@ -0,0 +1,16 @@
1
+ Feature: Setup
2
+
3
+ Scenario: Run without .vimmer directory
4
+ Given no directory named ".vimmer"
5
+ When I successfully run "vimmer install 'https://github.com/tpope/vim-awesomemofo.git'"
6
+ Then a directory named ".vimmer" should exist
7
+ And the file ".vimmer/config" should contain "bundle_path: ~/.vim/bundle"
8
+
9
+ Scenario: Run with .vimmer directory (doesn't overwrite)
10
+ Given a directory named ".vimmer"
11
+ And a file named ".vimmer/config" with:
12
+ """
13
+ bundle_path: ~/.vim/custom_bundle
14
+ """
15
+ When I successfully run "vimmer install 'https://github.com/tpope/vim-awesomemofo.git'"
16
+ Then the file ".vimmer/config" should contain "bundle_path: ~/.vim/custom_bundle"
@@ -0,0 +1,11 @@
1
+ Given /^a bundle path set for my system$/ do
2
+ bundle_path = File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "tmp", "aruba", "bundle"))
3
+ Given 'a file named ".vimmer/config" with:', "bundle_path: #{bundle_path}"
4
+ end
5
+
6
+ Given /^no directory named "([^"]*)"$/ do |directory|
7
+ in_current_dir do
8
+ FileUtils.rm_rf(directory)
9
+ end
10
+ end
11
+
@@ -0,0 +1,10 @@
1
+ Then /^a plugin named "([^"]*)" should be installed$/ do |name|
2
+ @vimmer.installed_plugins.should include(name)
3
+ @vimmer.plugin_store[name].should =~ %r{https://github.com/tpope/vim-awesomemofo.git}
4
+ end
5
+
6
+ Then /^I should still not have any plugins installed$/ do
7
+ @vimmer.installed_plugins.should be_empty
8
+ @vimmer.plugin_store.should == {}
9
+ end
10
+
@@ -0,0 +1,6 @@
1
+ Given /^I have no plugins installed$/ do
2
+ @vimmer = VimmerStub.new
3
+ Given 'a file named ".vimmer/plugins.yml" with:', {}.to_yaml
4
+ Given 'a directory named "bundle"'
5
+ end
6
+
@@ -0,0 +1,14 @@
1
+ #!/bin/bash
2
+
3
+ args=$#
4
+ url=${!args}
5
+
6
+ if echo $url | grep ".git$"
7
+ then
8
+ echo 404
9
+ elif echo $url | grep "not-found"
10
+ then
11
+ echo 404
12
+ else
13
+ echo 200
14
+ fi
@@ -0,0 +1,10 @@
1
+ #!/bin/bash
2
+ # $1 $2 $3
3
+ # clone https://github.com/tpope/vim-awesomemofo.git tmp/aruba/bundle
4
+
5
+ if [ $1 == "clone" ]; then
6
+ mkdir -p $3
7
+ else
8
+ echo "delegating to git"
9
+ /usr/local/git/bin/git $*
10
+ fi
@@ -0,0 +1,7 @@
1
+ After do
2
+ FileUtils.rm_rf("tmp/aruba/bundle")
3
+ end
4
+
5
+ at_exit do
6
+ FileUtils.rm_rf("tmp/aruba")
7
+ end
@@ -0,0 +1,5 @@
1
+ require 'aruba'
2
+
3
+ ENV['PATH'] = File.expand_path(File.dirname(__FILE__)) + ":" + ENV['PATH']
4
+ ENV['VIMMER_HOME'] = File.expand_path(File.join(File.dirname(__FILE__),
5
+ %w(.. .. tmp aruba .vimmer)))
@@ -0,0 +1,32 @@
1
+ class VimmerStub
2
+
3
+ def installed_plugins
4
+ bundle_path.entries.map do |entry|
5
+ next if entry.to_s =~ /^\.\.?$/
6
+
7
+ entry = bundle_path.join(entry)
8
+ if entry.directory?
9
+ entry.split.last.to_s
10
+ end
11
+ end.compact
12
+ end
13
+
14
+
15
+ def plugin_store
16
+ if plugin_store_file.exist?
17
+ YAML.load_file(plugin_store_file)
18
+ else
19
+ {}
20
+ end
21
+ end
22
+
23
+ def plugin_store_file
24
+ Pathname.new("tmp/aruba/.vimmer/plugins.yml")
25
+ end
26
+
27
+
28
+ def bundle_path
29
+ Pathname.new("tmp/aruba/bundle")
30
+ end
31
+
32
+ end
@@ -0,0 +1,19 @@
1
+ Feature: Uninstall plugin
2
+
3
+ Background:
4
+ Given a directory named ".vimmer"
5
+ And a bundle path set for my system
6
+ And I have no plugins installed
7
+
8
+ Scenario: Uninstall from Github
9
+ When I successfully run "vimmer install 'https://github.com/tpope/vim-awesomemofo.git'"
10
+ And I successfully run "vimmer uninstall 'vim-awesomemofo'"
11
+ Then I should still not have any plugins installed
12
+
13
+ Scenario: Attempt to uninstall a plugin that is not installed
14
+ When I run "vimmer uninstall not_installed"
15
+ Then it should fail with:
16
+ """
17
+ The plugin not_installed is not installed.
18
+ """
19
+
data/lib/vimmer/cli.rb ADDED
@@ -0,0 +1,47 @@
1
+ require 'thor'
2
+ require 'vimmer'
3
+
4
+ module Vimmer
5
+ class CLI < Thor
6
+
7
+ desc "install PATH", "Installs plugin available at path PATH"
8
+ def install(path)
9
+ setup
10
+ begin
11
+ installer = Vimmer::Installers::Github.new(:path => path)
12
+ installer.install
13
+ rescue Vimmer::InvalidPathError => e
14
+ $stderr.puts "The URL #{e.path} is invalid."
15
+ exit 1
16
+ rescue Vimmer::PluginNotFoundError
17
+ $stderr.puts "The plugin #{installer.plugin_name} could not be found"
18
+ exit 1
19
+ end
20
+ end
21
+
22
+
23
+ desc "uninstall NAME", "Removes plugin named NAME"
24
+ def uninstall(name)
25
+ unless Vimmer.plugin?(name)
26
+ $stderr.puts "The plugin #{name} is not installed."
27
+ exit 1
28
+ end
29
+ installer = Vimmer::Installers::Github.new(:name => name)
30
+ installer.uninstall
31
+ end
32
+
33
+ private
34
+
35
+ def setup
36
+ Vimmer.setup
37
+ end
38
+
39
+
40
+ def method_missing(name, *args)
41
+ $stderr.puts 'Could not find command "%s".' % name
42
+ exit 1
43
+ end
44
+
45
+
46
+ end
47
+ end
@@ -0,0 +1,62 @@
1
+ module Vimmer
2
+ module Installers
3
+ class Github
4
+ attr_reader :path, :plugin_name
5
+
6
+ def initialize(args={})
7
+ if args[:path]
8
+ initialize_with_path(args[:path])
9
+ elsif args[:name]
10
+ initialize_with_name(args[:name])
11
+ end
12
+ end
13
+
14
+
15
+ def install
16
+ if path_exists?
17
+ git_clone(path, File.join(Vimmer.bundle_path, plugin_name))
18
+ Vimmer.add_plugin(plugin_name, path)
19
+ puts "#{plugin_name} has been installed"
20
+ else
21
+ raise Vimmer::PluginNotFoundError
22
+ end
23
+ end
24
+
25
+
26
+ def uninstall
27
+ FileUtils.rm_rf(File.join(Vimmer.bundle_path, plugin_name))
28
+ Vimmer.remove_plugin(plugin_name)
29
+ end
30
+
31
+
32
+ def path_exists?
33
+ `curl --head -w %{http_code} -o /dev/null #{remove_extension(path)} 2> /dev/null`.chomp == "200"
34
+ end
35
+
36
+
37
+ private
38
+
39
+ def git_clone(path, install_to)
40
+ output = `git clone #{path} #{install_to}`
41
+ end
42
+
43
+
44
+ def initialize_with_path(path)
45
+ raise Vimmer::InvalidPathError.new(path) unless path =~ %r{^https://github.com/[a-zA-Z0-9\-_\+%]+/([a-zA-Z0-9\-_\+]+).git$}
46
+ @plugin_name = $1
47
+ @path = path
48
+ end
49
+
50
+
51
+ def initialize_with_name(name)
52
+ @path = Vimmer.plugins[name]
53
+ @plugin_name = name
54
+ end
55
+
56
+ def remove_extension(path)
57
+ path.gsub(/\.git$/, '')
58
+ end
59
+
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,7 @@
1
+ module Vimmer
2
+ module Installers
3
+
4
+ autoload :Github, 'vimmer/installers/github'
5
+
6
+ end
7
+ end
@@ -0,0 +1,96 @@
1
+ require 'pathname'
2
+ require 'yaml'
3
+
4
+ module Vimmer
5
+ class Settings
6
+
7
+
8
+ def initialize
9
+ @config = load_config(config_file)
10
+ end
11
+
12
+
13
+ def [](key)
14
+ value = @config[key.to_s]
15
+ if value && (File.directory?(value) || File.file?(value))
16
+ Pathname.new(value)
17
+ else
18
+ value
19
+ end
20
+ end
21
+
22
+
23
+ def config_file
24
+ config_root.join("config")
25
+ end
26
+
27
+ def plugin_store_file
28
+ @plugin_store_file ||= config_root.join("plugins.yml")
29
+ end
30
+
31
+ def config_root
32
+ Pathname.new(ENV['VIMMER_HOME'] || File.join(Gem.user_home, ".vimmer"))
33
+ end
34
+
35
+
36
+ def create_vimmer_home!
37
+ FileUtils.mkdir_p(config_root.to_s)
38
+ end
39
+
40
+
41
+ def create_default_config_file!
42
+ return if File.exist?(config_file.to_s)
43
+ write_default_config_file
44
+ @config = load_config(config_file)
45
+ end
46
+
47
+ def write_default_config_file
48
+ File.open(config_file.to_s, "w") do |f|
49
+ f << "bundle_path: ~/.vim/bundle"
50
+ end
51
+ end
52
+
53
+
54
+ def add_plugin(name, path)
55
+ existing_plugins = plugins.dup
56
+ existing_plugins.merge!(name => path)
57
+
58
+ write_to_manifest(existing_plugins)
59
+ end
60
+
61
+ def remove_plugin(name)
62
+ existing_plugins = plugins.dup
63
+ existing_plugins.delete(name)
64
+
65
+ write_to_manifest(existing_plugins)
66
+ end
67
+
68
+ def plugins
69
+ @plugins = if !File.exist?(plugin_store_file.to_s)
70
+ write_to_manifest({})
71
+ end
72
+
73
+ read_from_manifest
74
+ end
75
+
76
+
77
+ def read_from_manifest
78
+ YAML.load_file(plugin_store_file.to_s)
79
+ end
80
+
81
+ def write_to_manifest(hash)
82
+ File.open(plugin_store_file.to_s, "w") do |f|
83
+ f << hash.to_yaml
84
+ end
85
+ end
86
+
87
+ def load_config(config_file)
88
+ if File.exist?(config_file)
89
+ YAML.load_file(config_file)
90
+ else
91
+ {}
92
+ end
93
+ end
94
+
95
+ end
96
+ end
@@ -0,0 +1,3 @@
1
+ module Vimmer
2
+ VERSION = "0.1.0"
3
+ end
data/lib/vimmer.rb ADDED
@@ -0,0 +1,60 @@
1
+ module Vimmer
2
+
3
+ autoload :Installers, 'vimmer/installers'
4
+ autoload :Settings, 'vimmer/settings'
5
+ autoload :PluginPath, 'vimmer/plugin_path'
6
+ autoload :Plugin, 'vimmer/plugin'
7
+
8
+ class PluginNotFoundError < StandardError; end
9
+ class InvalidPathError < StandardError
10
+ attr_accessor :path
11
+
12
+ def initialize(path)
13
+ @path = path
14
+ end
15
+
16
+ end
17
+
18
+ def bundle_path
19
+ settings[:bundle_path]
20
+ end
21
+ module_function :bundle_path
22
+
23
+
24
+ def settings
25
+ @settings ||= Settings.new
26
+ end
27
+ module_function :settings
28
+
29
+
30
+ def add_plugin(name, path)
31
+ settings.add_plugin(name, path)
32
+ end
33
+ module_function :add_plugin
34
+
35
+
36
+ def remove_plugin(name)
37
+ settings.remove_plugin(name)
38
+ end
39
+ module_function :remove_plugin
40
+
41
+
42
+ def plugin?(name)
43
+ plugins.key?(name)
44
+ end
45
+ module_function :plugin?
46
+
47
+ def plugins
48
+ settings.plugins
49
+ end
50
+ module_function :plugins
51
+
52
+
53
+ def setup
54
+ settings.create_vimmer_home!
55
+ settings.create_default_config_file!
56
+ end
57
+ module_function :setup
58
+
59
+
60
+ end
@@ -0,0 +1,118 @@
1
+ require 'spec_helper'
2
+
3
+ include Vimmer::Installers
4
+
5
+ describe "When installing from Github" do
6
+
7
+ FOUND_URL = "https://github.com/tpope/vim-awesomemofo.git"
8
+ NOT_FOUND_URL = "https://github.com/tpope/not-found.git"
9
+
10
+ context "with a non-existant URL" do
11
+
12
+ let(:installer) { Github.new(:path => NOT_FOUND_URL) }
13
+
14
+ before do
15
+ stub(installer).path_exists? { false }
16
+ stub(installer).git_clone
17
+ end
18
+
19
+ specify "the installer should raise an exception" do
20
+ lambda { installer.install }.should raise_error(Vimmer::PluginNotFoundError)
21
+ end
22
+
23
+ end
24
+
25
+ context "with a good URL" do
26
+
27
+ let(:installer) { Github.new(:path => FOUND_URL) }
28
+
29
+ before do
30
+ stub(installer).git_clone
31
+ stub(installer).path_exists? { true }
32
+ end
33
+
34
+ specify "the installer should not raise an exception" do
35
+ lambda { installer.install }.should_not raise_error
36
+ end
37
+
38
+ specify "the installer calculates the plugin's name" do
39
+ installer.plugin_name.should == "vim-awesomemofo"
40
+ end
41
+
42
+ end
43
+
44
+ context "with a malformed URL" do
45
+
46
+ subject { Github.new(:path => "https://foo.com/bar") }
47
+
48
+ specify "the installer should raise an exception" do
49
+ lambda { subject }.should raise_error(Vimmer::InvalidPathError)
50
+ end
51
+
52
+ end
53
+
54
+ it "provides access to the path" do
55
+ Github.new(:path => FOUND_URL).
56
+ path.should == FOUND_URL
57
+ end
58
+
59
+ it "adds plugin to list of installed plugins" do
60
+
61
+ installer = Github.new(:path => FOUND_URL)
62
+
63
+ stub(installer).path_exists? { true }
64
+ stub(installer).git_clone
65
+
66
+ installer.install
67
+
68
+ Vimmer.plugins["vim-awesomemofo"].should == FOUND_URL
69
+
70
+ end
71
+
72
+ def stub_for_install!(installer)
73
+
74
+ stub(Vimmer).bundle_path do
75
+ Pathname.new("tmp/bundle")
76
+ end
77
+
78
+ stub(installer).git_clone do
79
+ FileUtils.mkdir_p(Vimmer.bundle_path.join("vim-awesomemofo", "plugins"))
80
+ FileUtils.touch(Vimmer.bundle_path.join("vim-awesomemofo", "plugins", "vim-awesomemofo.vim"))
81
+ end
82
+
83
+ stub(installer).path_exists? { true }
84
+
85
+ end
86
+
87
+
88
+ it "installs the plugin" do
89
+
90
+ installer = Github.new(:path => FOUND_URL)
91
+
92
+ stub_for_install! installer
93
+
94
+ installer.install
95
+
96
+ plugin_path = Vimmer.bundle_path.join("vim-awesomemofo")
97
+ File.directory?(plugin_path.to_s).should be_true
98
+ File.directory?(plugin_path.join("plugins").to_s).should be_true
99
+ File.file?(plugin_path.join("plugins", "vim-awesomemofo.vim")).should be_true
100
+ end
101
+
102
+ it "uninstalls the plugin" do
103
+
104
+ installer = Github.new(:name => "vim-awesomemofo")
105
+
106
+ stub_for_install! installer
107
+
108
+ installer.install
109
+
110
+ installer.uninstall
111
+
112
+ plugin_path = Vimmer.bundle_path.join("vim-awesomemofo")
113
+ File.directory?(plugin_path.to_s).should be_false
114
+ File.directory?(plugin_path.join("plugins").to_s).should be_false
115
+ end
116
+
117
+
118
+ end
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+ describe ".vimmer/" do
4
+
5
+ let(:settings) { Vimmer::Settings.new }
6
+
7
+ it "can be moved with an environment variable" do
8
+ ENV['VIMMER_HOME'] = app_root.join("tmp", ".vimmer").to_s
9
+ settings.config_root.relative_path_from(app_root).to_s.should == "tmp/.vimmer"
10
+ settings.config_file.relative_path_from(app_root).to_s.should == "tmp/.vimmer/config"
11
+ ENV['VIMMER_HOME'] = nil
12
+ end
13
+
14
+ it "creates the .vimmer directory" do
15
+ settings.create_vimmer_home!
16
+ settings.config_root.should exist
17
+ end
18
+
19
+
20
+ it "creates the config file" do
21
+ settings.create_default_config_file!
22
+ settings.config_file.should exist
23
+ File.read(settings.config_file).should =~ /bundle_path: ~\/.vim\/bundle/
24
+ end
25
+
26
+ end
@@ -0,0 +1,21 @@
1
+ require 'bundler/setup'
2
+
3
+ $:.unshift File.expand_path('..', __FILE__)
4
+ $:.unshift File.expand_path('../../lib', __FILE__)
5
+
6
+ require 'vimmer'
7
+
8
+ require 'fakefs/spec_helpers'
9
+
10
+ RSpec.configure do |config|
11
+
12
+ config.mock_with :rr
13
+
14
+ config.include FakeFS::SpecHelpers
15
+
16
+ def app_root
17
+ Pathname.new(File.join(__FILE__, "..", "tmp", ".vimmer"))
18
+ end
19
+
20
+
21
+ end
data/vimmer.gemspec ADDED
@@ -0,0 +1,32 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "vimmer/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "vimmer"
7
+ s.version = Vimmer::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Joe Fiorini"]
10
+ s.email = ["joe@densitypop.com"]
11
+ s.homepage = "http://rubygems.org/gems/vimmer"
12
+ s.summary = %q{Automated Vim plugin management}
13
+ s.description = %q{Install, update and remove Vim plugins without changing directories using this simple command line utility.}
14
+
15
+ s.rubyforge_project = "vimmer"
16
+
17
+ s.add_dependency "thor"
18
+
19
+ s.add_development_dependency "bundler", ">=1.0.0"
20
+ s.add_development_dependency "rspec", "~> 2.0.0"
21
+ s.add_development_dependency "cucumber"
22
+ s.add_development_dependency "autotest"
23
+ s.add_development_dependency "fuubar"
24
+ s.add_development_dependency "fakefs"
25
+ s.add_development_dependency "aruba"
26
+ s.add_development_dependency "rr"
27
+
28
+ s.files = `git ls-files`.split("\n")
29
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
30
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
31
+ s.require_paths = ["lib"]
32
+ end
metadata ADDED
@@ -0,0 +1,229 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vimmer
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ - 0
9
+ version: 0.1.0
10
+ platform: ruby
11
+ authors:
12
+ - Joe Fiorini
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-11-22 00:00:00 -05:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: thor
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ version: "0"
31
+ type: :runtime
32
+ version_requirements: *id001
33
+ - !ruby/object:Gem::Dependency
34
+ name: bundler
35
+ prerelease: false
36
+ requirement: &id002 !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 1
43
+ - 0
44
+ - 0
45
+ version: 1.0.0
46
+ type: :development
47
+ version_requirements: *id002
48
+ - !ruby/object:Gem::Dependency
49
+ name: rspec
50
+ prerelease: false
51
+ requirement: &id003 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ segments:
57
+ - 2
58
+ - 0
59
+ - 0
60
+ version: 2.0.0
61
+ type: :development
62
+ version_requirements: *id003
63
+ - !ruby/object:Gem::Dependency
64
+ name: cucumber
65
+ prerelease: false
66
+ requirement: &id004 !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ segments:
72
+ - 0
73
+ version: "0"
74
+ type: :development
75
+ version_requirements: *id004
76
+ - !ruby/object:Gem::Dependency
77
+ name: autotest
78
+ prerelease: false
79
+ requirement: &id005 !ruby/object:Gem::Requirement
80
+ none: false
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ segments:
85
+ - 0
86
+ version: "0"
87
+ type: :development
88
+ version_requirements: *id005
89
+ - !ruby/object:Gem::Dependency
90
+ name: fuubar
91
+ prerelease: false
92
+ requirement: &id006 !ruby/object:Gem::Requirement
93
+ none: false
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ segments:
98
+ - 0
99
+ version: "0"
100
+ type: :development
101
+ version_requirements: *id006
102
+ - !ruby/object:Gem::Dependency
103
+ name: fakefs
104
+ prerelease: false
105
+ requirement: &id007 !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ segments:
111
+ - 0
112
+ version: "0"
113
+ type: :development
114
+ version_requirements: *id007
115
+ - !ruby/object:Gem::Dependency
116
+ name: aruba
117
+ prerelease: false
118
+ requirement: &id008 !ruby/object:Gem::Requirement
119
+ none: false
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ segments:
124
+ - 0
125
+ version: "0"
126
+ type: :development
127
+ version_requirements: *id008
128
+ - !ruby/object:Gem::Dependency
129
+ name: rr
130
+ prerelease: false
131
+ requirement: &id009 !ruby/object:Gem::Requirement
132
+ none: false
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ segments:
137
+ - 0
138
+ version: "0"
139
+ type: :development
140
+ version_requirements: *id009
141
+ description: Install, update and remove Vim plugins without changing directories using this simple command line utility.
142
+ email:
143
+ - joe@densitypop.com
144
+ executables:
145
+ - vimmer
146
+ extensions: []
147
+
148
+ extra_rdoc_files: []
149
+
150
+ files:
151
+ - .autotest
152
+ - .gitignore
153
+ - .rspec
154
+ - .rvmrc
155
+ - Gemfile
156
+ - Gemfile.lock
157
+ - README.mdown
158
+ - Rakefile
159
+ - autotest/discover.rb
160
+ - bin/vimmer
161
+ - cucumber.yml
162
+ - features/install.feature
163
+ - features/setup.feature
164
+ - features/step_definitions/environment_context_steps.rb
165
+ - features/step_definitions/plugin_assertion_steps.rb
166
+ - features/step_definitions/plugin_context_steps.rb
167
+ - features/support/curl
168
+ - features/support/git
169
+ - features/support/hooks.rb
170
+ - features/support/setup.rb
171
+ - features/support/vimmer_stub.rb
172
+ - features/uninstall_plugin.feature
173
+ - lib/vimmer.rb
174
+ - lib/vimmer/cli.rb
175
+ - lib/vimmer/installers.rb
176
+ - lib/vimmer/installers/github.rb
177
+ - lib/vimmer/settings.rb
178
+ - lib/vimmer/version.rb
179
+ - spec/install/github_spec.rb
180
+ - spec/settings_spec.rb
181
+ - spec/spec_helper.rb
182
+ - vimmer.gemspec
183
+ has_rdoc: true
184
+ homepage: http://rubygems.org/gems/vimmer
185
+ licenses: []
186
+
187
+ post_install_message:
188
+ rdoc_options: []
189
+
190
+ require_paths:
191
+ - lib
192
+ required_ruby_version: !ruby/object:Gem::Requirement
193
+ none: false
194
+ requirements:
195
+ - - ">="
196
+ - !ruby/object:Gem::Version
197
+ segments:
198
+ - 0
199
+ version: "0"
200
+ required_rubygems_version: !ruby/object:Gem::Requirement
201
+ none: false
202
+ requirements:
203
+ - - ">="
204
+ - !ruby/object:Gem::Version
205
+ segments:
206
+ - 0
207
+ version: "0"
208
+ requirements: []
209
+
210
+ rubyforge_project: vimmer
211
+ rubygems_version: 1.3.7
212
+ signing_key:
213
+ specification_version: 3
214
+ summary: Automated Vim plugin management
215
+ test_files:
216
+ - features/install.feature
217
+ - features/setup.feature
218
+ - features/step_definitions/environment_context_steps.rb
219
+ - features/step_definitions/plugin_assertion_steps.rb
220
+ - features/step_definitions/plugin_context_steps.rb
221
+ - features/support/curl
222
+ - features/support/git
223
+ - features/support/hooks.rb
224
+ - features/support/setup.rb
225
+ - features/support/vimmer_stub.rb
226
+ - features/uninstall_plugin.feature
227
+ - spec/install/github_spec.rb
228
+ - spec/settings_spec.rb
229
+ - spec/spec_helper.rb