vim-sitter 0.0.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7d48ed65a7e13bb9488f6c6813c74e42fdf4f272
4
+ data.tar.gz: 94a243d4100b25f71c294b0f994bbb5b024d02eb
5
+ SHA512:
6
+ metadata.gz: e934266e70332ada08105d8004fec7749c52693be4e1272ae9620fb3998d91a79953ab8fa6a36231e2b004c9d6de47539d156144b6cf84500104cfb51afcd618
7
+ data.tar.gz: 6b708b5d2ad329354d4af506372014cb03e23553c62d23168244c67cfec4254736e53ee2ad087e7d992a792d1f9554dd1faffaf5504481c19cd1a3313328df1c
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in ..gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Zhon Johansen
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.
@@ -0,0 +1,33 @@
1
+ # vim-sitter
2
+
3
+ __vimsit__ a tool for keeping _your_ __VIM__ just the way _you_ like it:
4
+
5
+ 1. Create your backup, undo and swap directories.
6
+ 2. Setup sensible options (using tpope's vim-sensible)
7
+ 2. Create a minimal config file for you
8
+ 3. Install/update your plugins (via tpope's vim-pathogen)
9
+ 4. Remove any plugins not listed in your config.yaml
10
+
11
+ Works on Window, Unix, Mac.
12
+
13
+ ## Installation
14
+
15
+ $ gem install vim-sitter
16
+
17
+ ## Usage
18
+
19
+ You will need vim installed: http://www.vim.org/
20
+
21
+ You will need git installed: http://git-scm.com/
22
+
23
+ Configure your list of plugins to make VIM awesome! (you could copy config.yaml.sample to ~/.vim/config.yaml)
24
+
25
+ $ vimsit
26
+
27
+ ## Contributing
28
+
29
+ 1. Fork it
30
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
31
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
32
+ 4. Push to the branch (`git push origin my-new-feature`)
33
+ 5. Create new Pull Request
@@ -0,0 +1,9 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ require "rake/testtask"
4
+
5
+ task :default => [:test]
6
+
7
+ Rake::TestTask.new do |t|
8
+ t.pattern = "test/**/*_test.rb"
9
+ end
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env ruby
2
+ $: << File.dirname(__FILE__)+'/../lib'
3
+
4
+ require 'vim_sitter'
5
+
6
+ include VimSitter
7
+
8
+ def exit_with message
9
+ puts "Error #{message}!"
10
+ exit -1
11
+ end
12
+
13
+ exit_with "Missing 'Vim'" unless System.vim_installed?
14
+ exit_with "Missing 'git'" unless System.git_installed?
15
+
16
+ VimDir.create_autoload
17
+ VimDir.create_bundle
18
+ VimDir.create_swap
19
+ VimDir.create_backup
20
+ VimDir.create_undo
21
+
22
+ Pathogen.install
23
+
24
+ VimSitter::Config.create
25
+
26
+ Bundle.install
27
+
28
+ Bundle.delete_unused
@@ -0,0 +1,26 @@
1
+ ---
2
+ digitaltoad:
3
+ - vim-jade
4
+ godlygeek:
5
+ - tabular
6
+ msanders:
7
+ - snipmate.vim
8
+ pangloss:
9
+ - vim-javascript
10
+ tpope:
11
+ - vim-abolish
12
+ - vim-cucumber
13
+ - vim-endwise
14
+ - vim-fugitive
15
+ - vim-git
16
+ - vim-haml
17
+ - vim-pathogen
18
+ - vim-rails
19
+ - vim-repeat
20
+ - vim-sensible
21
+ - vim-surround
22
+ - vim-unimpaired
23
+ - vim-vividchalk
24
+ scrooloose:
25
+ - nerdtree
26
+ - nerdcommenter
@@ -0,0 +1,3 @@
1
+ module VimSitter
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,8 @@
1
+ require "version"
2
+
3
+ require 'vim_sitter/bundle'
4
+ require 'vim_sitter/config'
5
+ require 'vim_sitter/gitter'
6
+ require 'vim_sitter/pathogen'
7
+ require 'vim_sitter/system'
8
+ require 'vim_sitter/vim_dir'
@@ -0,0 +1,27 @@
1
+
2
+ require 'vim_sitter/config'
3
+ require 'vim_sitter/gitter'
4
+ require 'vim_sitter/vim_dir'
5
+
6
+ module VimSitter
7
+ class Bundle
8
+
9
+ def self.install
10
+ Config.each do |key, value|
11
+ value.each do |item|
12
+ Gitter.get key, item
13
+ end
14
+ end
15
+ end
16
+
17
+ def self.delete_unused
18
+ bundles = Dir.entries(VimDir.bundle_dir).select { |item|
19
+ File.directory?("#{VimDir.bundle_dir}/#{item}") && (item !~ /\.$/)
20
+ }
21
+ (bundles - Config.bundles).each do |item|
22
+ FileUtils.rm_rf "#{VimDir.bundle_dir}/#{item}", verbose: true
23
+ end
24
+ end
25
+
26
+ end
27
+ end
@@ -0,0 +1,40 @@
1
+ require 'vim_sitter/vim_dir'
2
+ require 'yaml/store'
3
+
4
+ module VimSitter
5
+ class Config
6
+
7
+ @@config = nil
8
+
9
+ def self.create
10
+ unless File.exist?("#{VimDir.base_dir}/config.yaml")
11
+ store = YAML::Store.new "#{VimDir.base_dir}/config.yaml"
12
+ store.transaction do
13
+ store['tpope'] = [ 'vim-pathogen', 'vim-sensible' ]
14
+ end
15
+ end
16
+ end
17
+
18
+ def self.each &block
19
+ reload unless @@config
20
+ @@config.each &block
21
+ end
22
+
23
+ def self.bundles
24
+ bundles = []
25
+ Config.each do |k,v|
26
+ bundles << v
27
+ end
28
+ bundles.flatten
29
+ end
30
+
31
+ def self.reload
32
+ @@config = YAML::load_file "#{VimDir.base_dir}/config.yaml"
33
+ end
34
+
35
+ def self.reset
36
+ @@config = nil
37
+ end
38
+
39
+ end
40
+ end
@@ -0,0 +1,19 @@
1
+ require 'vim_sitter/vim_dir'
2
+
3
+ module VimSitter
4
+ class Gitter
5
+
6
+ def self.get author, repo_name
7
+ if VimDir.repo_exists? repo_name
8
+ puts "Pulling #{repo_name}"
9
+ VimDir.cd_to_bundle repo_name
10
+ system "git pull origin master"
11
+ else
12
+ puts "Cloning #{repo_name}"
13
+ VimDir.cd_to_bundle
14
+ system "git clone git://github.com/#{author}/#{repo_name}.git"
15
+ end
16
+ end
17
+
18
+ end
19
+ end
@@ -0,0 +1,13 @@
1
+ require 'vim_sitter/gitter'
2
+
3
+ module VimSitter
4
+ class Pathogen
5
+
6
+ def self.install
7
+ Gitter.get 'tpope', 'vim-pathogen'
8
+ VimDir.cp_to_autoload 'vim-pathogen/autoload/pathogen.vim'
9
+ VimDir.add_to_vimrc "call pathogen#infect()\ncall pathogen#helptags()"
10
+ end
11
+
12
+ end
13
+ end
@@ -0,0 +1,23 @@
1
+
2
+ module VimSitter
3
+ class System
4
+
5
+ def self.git_installed?
6
+ app_installed? 'git'
7
+ end
8
+
9
+ def self.vim_installed?
10
+ app_installed? 'vim'
11
+ end
12
+
13
+ def self.app_installed? app
14
+ begin
15
+ `#{app} --version`
16
+ rescue
17
+ return false
18
+ end
19
+ return true
20
+ end
21
+
22
+ end
23
+ end
@@ -0,0 +1,94 @@
1
+ require 'fileutils'
2
+
3
+ module VimSitter
4
+ class VimDir
5
+ # TODO need
6
+ # linux
7
+
8
+ def self.create_bundle
9
+ FileUtils.mkdir_p(bundle_dir)
10
+ end
11
+
12
+ def self.create_autoload
13
+ FileUtils.mkdir_p autoload_dir
14
+ end
15
+
16
+ def self.create_swap
17
+ FileUtils.mkdir_p(data_dir + '/swap')
18
+ end
19
+
20
+ def self.create_backup
21
+ FileUtils.mkdir_p(data_dir + '/backup')
22
+ end
23
+
24
+ def self.create_undo
25
+ FileUtils.mkdir_p(data_dir + '/undo')
26
+ end
27
+
28
+ def self.cd_to_bundle repo_name=''
29
+ FileUtils.cd "#{bundle_dir}/#{repo_name}"
30
+ end
31
+
32
+ def self.repo_exists? repo_name
33
+ File.exists? "#{bundle_dir}/#{repo_name}"
34
+ end
35
+
36
+ def self.cp_to_autoload path
37
+ FileUtils.cp "#{bundle_dir}/#{path}", autoload_dir
38
+ end
39
+
40
+ def self.add_to_vimrc s
41
+ new_lines = s.split("\n").map {|item| item + "\n"}
42
+ lines = IO.readlines(vimrc_path)
43
+ unless lines & new_lines == new_lines
44
+ require 'tempfile'
45
+ begin
46
+ tmp = Tempfile.new('vimrc')
47
+ tmp.binmode
48
+ tmp.print new_lines.join
49
+ tmp.print lines.join
50
+ tmp.close
51
+ FileUtils.copy_file(tmp.path, vimrc_path)
52
+ ensure
53
+ tmp.close
54
+ tmp.unlink
55
+ end
56
+ end
57
+ end
58
+
59
+ def self.data_dir
60
+ if windows?
61
+ ENV['AppData'].gsub('\\','/') + '/Vim'
62
+ elsif mac?
63
+ File.expand_path "~/Library/Vim"
64
+ else
65
+ raise "os '#{RUBY_PLATFORM}' not recognized!"
66
+ end
67
+ end
68
+
69
+ def self.base_dir
70
+ File.expand_path("~/#{windows? ? 'vimfiles' : '.vim'}")
71
+ end
72
+
73
+ def self.bundle_dir
74
+ "#{base_dir}/bundle"
75
+ end
76
+
77
+ def self.autoload_dir
78
+ "#{base_dir}/autoload"
79
+ end
80
+
81
+ def self.vimrc_path
82
+ File.expand_path("~/#{windows? ? '_vimrc' : '.vimrc'}")
83
+ end
84
+
85
+ def self.windows?
86
+ RUBY_PLATFORM =~ /(win|w)32$/
87
+ end
88
+
89
+ def self.mac?
90
+ RUBY_PLATFORM =~ /darwin/
91
+ end
92
+
93
+ end
94
+ end
@@ -0,0 +1,65 @@
1
+ require "vim_sitter/bundle"
2
+
3
+ require_relative 'test_helper'
4
+
5
+ class BundleTest < FlexMockTestCase
6
+
7
+ def test_install_bundle
8
+ Config.reset
9
+ flexmock(YAML)
10
+ .should_receive(:load_file)
11
+ .once
12
+ .and_return({
13
+ author1: ['bundle'],
14
+ author2: ['bundle1', 'bundle2']
15
+ })
16
+ flexmock(Gitter)
17
+ .should_receive(:get)
18
+ .once
19
+ .with(:author1, 'bundle')
20
+ .should_receive(:get)
21
+ .once
22
+ .with(:author2, 'bundle1')
23
+ .should_receive(:get)
24
+ .once
25
+ .with(:author2, 'bundle2')
26
+ Bundle.install
27
+ end
28
+
29
+ def test_remove_bundle_not_listed_in_config
30
+ Config.reset
31
+ flexmock(YAML)
32
+ .should_receive(:load_file)
33
+ .and_return({
34
+ author1: ['bundle'],
35
+ })
36
+ flexmock(Dir)
37
+ .should_receive(:entries)
38
+ .with(/bundle/)
39
+ .and_return(['.', '..', 'file.txt', 'bundle', 'bundle2'])
40
+ .once
41
+ flexmock(File)
42
+ .should_receive(:directory?).with(/file.txt$/).and_return(false).once
43
+ .should_receive(:directory?).and_return(true)
44
+ flexmock(FileUtils)
45
+ .should_receive(:rm_rf).with(/bundle\/bundle2/).with_any_args.once
46
+ .should_receive(:rm_rf).with(%r{.}).never
47
+ .should_receive(:rm_rf).with(%r{..}).never
48
+ .should_receive(:rm_rf).with(/bundle$/).never
49
+ .should_receive(:rm_rf).with(/file.txt/).never
50
+ .should_receive(:rm_rf).with(%r{/$}).never
51
+ Bundle.delete_unused
52
+ end
53
+
54
+ def test_each_loads_file_only_once
55
+ Config.reset
56
+ flexmock(YAML)
57
+ .should_receive(:load_file)
58
+ .once
59
+ .and_return({
60
+ key: ['v1', 'v2']
61
+ })
62
+ Config.each
63
+ Config.each
64
+ end
65
+ end
@@ -0,0 +1,91 @@
1
+
2
+ require "vim_sitter/config"
3
+
4
+ require_relative 'test_helper'
5
+
6
+ class ConfigTest < FlexMockTestCase
7
+
8
+ def test_create_does_nothing_if_config_exists
9
+ flexmock(File)
10
+ .should_receive(:exist?)
11
+ .with(/config.yaml/)
12
+ .and_return(true)
13
+ .once
14
+ flexmock(YAML::Store)
15
+ .should_receive(:new)
16
+ .never
17
+ Config.create
18
+ end
19
+
20
+ def test_create
21
+ store = flexmock('store')
22
+ store
23
+ .should_receive(:transaction)
24
+ .once
25
+ .and_return { |block|
26
+ block.call
27
+ }
28
+ .should_receive(:[]=)
29
+ .with('tpope', [ 'vim-pathogen', 'vim-sensible' ])
30
+ .once
31
+ flexmock(YAML::Store)
32
+ .should_receive(:new)
33
+ .with(/config.yaml/)
34
+ .and_return(store)
35
+ .once
36
+ flexmock(File)
37
+ .should_receive(:exist?)
38
+ .and_return(false)
39
+ Config.create
40
+ end
41
+
42
+ def test_each_iterates_over_config_file
43
+ Config.reset
44
+ flexmock(YAML)
45
+ .should_receive(:load_file)
46
+ .with(/config.yaml/)
47
+ .once
48
+ .and_return({
49
+ key: ['v1', 'v2']
50
+ })
51
+ Config.each { |k,v|
52
+ assert_equal(:key, k)
53
+ assert_equal('v1', v[0])
54
+ assert_equal('v2', v[1])
55
+ }
56
+ Config.each
57
+ end
58
+
59
+ def test_each_loads_file_only_once
60
+ Config.reset
61
+ flexmock(YAML)
62
+ .should_receive(:load_file)
63
+ .once
64
+ .and_return({
65
+ key: ['v1', 'v2']
66
+ })
67
+ Config.each
68
+ Config.each
69
+ end
70
+
71
+ def test_list_bundles
72
+ Config.reset
73
+ flexmock(YAML)
74
+ .should_receive(:load_file)
75
+ .once
76
+ .and_return({
77
+ key: ['v1', 'v2'],
78
+ key2: ['v3', 'v4']
79
+ })
80
+ assert_equal ['v1','v2','v3','v4'], Config.bundles
81
+ end
82
+
83
+ def test_reload
84
+ flexmock(YAML)
85
+ .should_receive(:load_file)
86
+ .twice
87
+ Config.reload
88
+ Config.reload
89
+ end
90
+
91
+ end
@@ -0,0 +1,56 @@
1
+
2
+ require "vim_sitter/gitter"
3
+
4
+ require_relative 'test_helper'
5
+
6
+ class GitterTest < FlexMockTestCase
7
+
8
+ def test_clone_repo
9
+ author = 'jim'
10
+ repo_name = 'silly_code'
11
+ flexmock(VimDir)
12
+ .should_receive(:repo_exists?)
13
+ .and_return(false)
14
+ flexmock(Gitter)
15
+ .should_receive(:puts)
16
+ .with("Cloning #{repo_name}")
17
+ .once
18
+ flexmock(VimDir)
19
+ .should_receive(:cd_to_bundle)
20
+ .once
21
+ flexmock(Gitter)
22
+ .should_receive(:system)
23
+ .with(/git clone .*#{author}.*#{repo_name}/)
24
+ .once
25
+
26
+ Gitter.get author, repo_name
27
+ end
28
+
29
+ def test_pull_repo
30
+ author = 'jim'
31
+ repo_name = 'silly_code'
32
+ flexmock(VimDir)
33
+ .should_receive(:repo_exists?)
34
+ .with(repo_name)
35
+ .and_return(true)
36
+ .once
37
+ flexmock(Gitter)
38
+ .should_receive(:puts)
39
+ .with("Pulling #{repo_name}")
40
+ .once
41
+ flexmock(VimDir)
42
+ .should_receive(:cd_to_bundle)
43
+ .with(repo_name)
44
+ .once
45
+ flexmock(Gitter)
46
+ .should_receive(:system)
47
+ .with('git pull origin master')
48
+ .once
49
+
50
+ Gitter.get author, repo_name
51
+
52
+ end
53
+
54
+ end
55
+
56
+
@@ -0,0 +1,38 @@
1
+ require "vim_sitter/pathogen"
2
+ require "vim_sitter/vim_dir"
3
+
4
+ require_relative 'test_helper'
5
+
6
+ class PathogenTest < FlexMockTestCase
7
+
8
+ def test_install_gets_pathoten
9
+ flexmock(VimDir).should_receive(:cp_to_autoload)
10
+ flexmock(VimDir).should_receive(:add_to_vimrc)
11
+ flexmock(Gitter)
12
+ .should_receive(:get)
13
+ .with('tpope', 'vim-pathogen')
14
+ .once
15
+ Pathogen.install
16
+ end
17
+
18
+ def test_install_copies_pathogen_to_autoload
19
+ flexmock(Gitter).should_receive(:get)
20
+ flexmock(VimDir).should_receive(:add_to_vimrc)
21
+ flexmock(VimDir)
22
+ .should_receive(:cp_to_autoload)
23
+ .with(%r{vim-pathogen/autoload/pathogen.vim})
24
+ .once
25
+ Pathogen.install
26
+ end
27
+
28
+ def test_install_adds_to_vimrc
29
+ flexmock(Gitter).should_receive(:get)
30
+ flexmock(VimDir).should_receive(:cp_to_autoload)
31
+ flexmock(VimDir)
32
+ .should_receive(:add_to_vimrc)
33
+ .with("call pathogen#infect()\ncall pathogen#helptags()")
34
+ .once
35
+ Pathogen.install
36
+ end
37
+
38
+ end
@@ -0,0 +1,35 @@
1
+ require 'vim_sitter/system'
2
+
3
+ require_relative 'test_helper'
4
+
5
+ class SystemTest < FlexMockTestCase
6
+
7
+ def test_app_is_installed
8
+ flexmock(System)
9
+ .should_receive(:`)
10
+ .once
11
+ .with(/some_app/)
12
+ assert System.app_installed? 'some_app'
13
+ end
14
+
15
+ def test_app_is_not_installed
16
+ flexmock(System)
17
+ .should_receive(:`)
18
+ .once
19
+ .and_raise(Errno::ENOENT)
20
+ refute System.app_installed? 'some_app'
21
+ end
22
+
23
+ def test_git_is_installed
24
+ flexmock(System).should_receive(:app_installed?).once
25
+ .with(/git/)
26
+ System.git_installed?
27
+ end
28
+
29
+ def test_vim_is_installed
30
+ flexmock(System).should_receive(:app_installed?).once
31
+ .with(/vim/)
32
+ System.vim_installed?
33
+ end
34
+
35
+ end
@@ -0,0 +1,10 @@
1
+ require "minitest/unit"
2
+ require 'flexmock'
3
+
4
+ MiniTest::Unit.autorun
5
+
6
+
7
+ class FlexMockTestCase < MiniTest::Unit::TestCase
8
+ include FlexMock::TestCase
9
+ include VimSitter
10
+ end
@@ -0,0 +1,135 @@
1
+
2
+ require "vim_sitter/vim_dir"
3
+
4
+ require_relative 'test_helper'
5
+
6
+ class VimDirTest < FlexMockTestCase
7
+
8
+ def test_create_windows_dirs
9
+ check :create_bundle, /vimfiles.bundle/
10
+ check :create_autoload, /vimfiles.autoload/
11
+ check :create_swap, /AppData.+Vim.swap/
12
+ check :create_backup, /AppData.+Vim.backup/
13
+ check :create_undo, /AppData.+Vim.undo/
14
+ end
15
+
16
+ def test_vimrc_path_on_windows
17
+ flexmock(VimDir)
18
+ .should_receive(:windows?)
19
+ .and_return(true)
20
+ .once
21
+ assert_match /_vimrc/, VimDir.vimrc_path
22
+ end
23
+
24
+ def test_vimrc_path_on_unix_and_mac
25
+ flexmock(VimDir)
26
+ .should_receive(:windows?)
27
+ .and_return(false)
28
+ .once
29
+ assert_match /\.vimrc/, VimDir.vimrc_path
30
+ end
31
+
32
+ def test_base_dir_on_windows
33
+ flexmock(VimDir)
34
+ .should_receive(:windows?)
35
+ .and_return(true)
36
+ .once
37
+ assert_match /vimfiles/, VimDir.base_dir
38
+ end
39
+
40
+ def test_base_dir_on_unix_and_mac
41
+ flexmock(VimDir)
42
+ .should_receive(:windows?)
43
+ .and_return(false)
44
+ .once
45
+ assert_match /\.vim/, VimDir.base_dir
46
+ end
47
+
48
+ def test_data_dir_on_windows
49
+ flexmock(VimDir)
50
+ .should_receive(:windows?)
51
+ .and_return(true)
52
+ .once
53
+ assert_match /AppData/, VimDir.data_dir
54
+ end
55
+
56
+ def test_data_dir_on_mac
57
+ flexmock(VimDir)
58
+ .should_receive(:windows?)
59
+ .and_return(false)
60
+ .once
61
+ .should_receive(:mac?)
62
+ .and_return(true)
63
+ .once
64
+ assert_match /Library\/Vim/, VimDir.data_dir
65
+ end
66
+
67
+ def test_cd_to_bundle
68
+ flexmock(FileUtils)
69
+ .should_receive(:cd)
70
+ .with(/bundle\/$/)
71
+ .once
72
+ VimDir.cd_to_bundle
73
+ end
74
+
75
+ def test_cd_to_bundle_repo
76
+ flexmock(FileUtils)
77
+ .should_receive(:cd)
78
+ .with(/repo$/)
79
+ .once
80
+ VimDir.cd_to_bundle 'repo'
81
+ end
82
+
83
+ def test_repo_exists
84
+ flexmock(File)
85
+ .should_receive(:exists?)
86
+ .with(/repo/)
87
+ .once
88
+ VimDir.repo_exists? 'repo'
89
+ end
90
+
91
+ def test_cp_to_autoload
92
+ flexmock(FileUtils)
93
+ .should_receive(:cp)
94
+ .with(%r{/bundle/hello}, /autoload/)
95
+ .once
96
+ VimDir.cp_to_autoload 'hello'
97
+ end
98
+
99
+ def test_add_to_vimrc_does_nothing_if_already_there
100
+ flexmock(IO)
101
+ .should_receive(:readlines)
102
+ .with(/vimrc$/)
103
+ .and_return(["something\n", "silly\n"])
104
+ .once
105
+ flexmock(FileUtils)
106
+ .should_receive(:copy_file)
107
+ .never
108
+ VimDir.add_to_vimrc "something\nsilly"
109
+ end
110
+
111
+ def test_add_to_vimrc
112
+ require 'tempfile'
113
+ tempfile_mock = flexmock(close:nil, unlink:nil, print:nil,path:'',binmode:nil)
114
+ flexmock(Tempfile).should_receive(:new).and_return(tempfile_mock)
115
+ flexmock(IO)
116
+ .should_receive(:readlines)
117
+ .and_return(["some config\n", "silly\n"])
118
+ .once
119
+ flexmock(FileUtils)
120
+ .should_receive(:copy_file)
121
+ .with(//, /vimrc$/)
122
+ .once
123
+ VimDir.add_to_vimrc "something\nsilly"
124
+ end
125
+
126
+ def check(method, regex)
127
+ dir = VimDir
128
+ flexmock(FileUtils)
129
+ .should_receive(:mkdir_p)
130
+ .once
131
+ .with(regex)
132
+ dir.send method
133
+ end
134
+
135
+ end
@@ -0,0 +1,24 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "vim-sitter"
8
+ spec.version = VimSitter::VERSION
9
+ spec.authors = ["zhon"]
10
+ spec.email = ["zhon@xputah.org"]
11
+ spec.description = %q{vim-sitter will install/remove plugins; setup directories; and help you manage your vim settings}
12
+ spec.summary = %q{Helping you manage your settings}
13
+ spec.homepage = "https://github.com/zhon/vim-sitter"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.3"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "flexmock"
24
+ end
metadata ADDED
@@ -0,0 +1,118 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vim-sitter
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - zhon
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-04-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: flexmock
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: vim-sitter will install/remove plugins; setup directories; and help you
56
+ manage your vim settings
57
+ email:
58
+ - zhon@xputah.org
59
+ executables:
60
+ - vimsit
61
+ extensions: []
62
+ extra_rdoc_files: []
63
+ files:
64
+ - .gitignore
65
+ - Gemfile
66
+ - LICENSE.txt
67
+ - README.md
68
+ - Rakefile
69
+ - bin/vimsit
70
+ - config.yaml.sample
71
+ - lib/version.rb
72
+ - lib/vim_sitter.rb
73
+ - lib/vim_sitter/bundle.rb
74
+ - lib/vim_sitter/config.rb
75
+ - lib/vim_sitter/gitter.rb
76
+ - lib/vim_sitter/pathogen.rb
77
+ - lib/vim_sitter/system.rb
78
+ - lib/vim_sitter/vim_dir.rb
79
+ - test/bundle_test.rb
80
+ - test/config_test.rb
81
+ - test/gitter_test.rb
82
+ - test/pathongen_test.rb
83
+ - test/system_test.rb
84
+ - test/test_helper.rb
85
+ - test/vim_dir_test.rb
86
+ - vim_setter.gemspec
87
+ homepage: https://github.com/zhon/vim-sitter
88
+ licenses:
89
+ - MIT
90
+ metadata: {}
91
+ post_install_message:
92
+ rdoc_options: []
93
+ require_paths:
94
+ - lib
95
+ required_ruby_version: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - '>='
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ required_rubygems_version: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - '>='
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ requirements: []
106
+ rubyforge_project:
107
+ rubygems_version: 2.0.0
108
+ signing_key:
109
+ specification_version: 4
110
+ summary: Helping you manage your settings
111
+ test_files:
112
+ - test/bundle_test.rb
113
+ - test/config_test.rb
114
+ - test/gitter_test.rb
115
+ - test/pathongen_test.rb
116
+ - test/system_test.rb
117
+ - test/test_helper.rb
118
+ - test/vim_dir_test.rb