neobundle 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 350829563c57e414fb95e1ed8429f6bd516f895f
4
+ data.tar.gz: 77170cadbd091451248eb29787cf7286deb48b06
5
+ SHA512:
6
+ metadata.gz: b2a610737b1bdc2672185702f098f34c1b8ddd1a7c4177399785f23b57f03166f49093d231df920ebbeed723039cb22dbf0162b439709ec57e27ca16e3b11775
7
+ data.tar.gz: cbb2f04444ef8c21f8b8baf46a48880b1503af037c6bfc21e3cfcf4e777d596ba88571e0e3a63acb6a37578bcf69cd3d758127282556b49bd02a4d8acfdea3cc
@@ -0,0 +1,23 @@
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
18
+ *.bundle
19
+ *.so
20
+ *.o
21
+ *.a
22
+ mkmf.log
23
+ /vendor/bundle
@@ -0,0 +1,3 @@
1
+ [submodule "vendor/neobundle.vim"]
2
+ path = vendor/neobundle.vim
3
+ url = https://github.com/Shougo/neobundle.vim
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
@@ -0,0 +1,3 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.1.2
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in neobundle.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Yuichi Murata
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,126 @@
1
+ # NeoBundle
2
+
3
+ [NeoBundle](https://github.com/Shougo/neobundle.vim "Shougo/neobundle.vim") command line tools.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'neobundle'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install neobundle
18
+
19
+ ## Setting
20
+
21
+ 1\. Install the NeoBundle:
22
+
23
+ ```bash
24
+ $ mkdir -p ~/.vim/bundle
25
+ $ cd ~/.vim/bundle/
26
+ $ git clone https://github.com/Shougo/neobundle.vim
27
+ ```
28
+
29
+ 2\. Add the NeoBundle settings to the `~/.vimrc`:
30
+
31
+ ```VimL
32
+ if has('vim_starting')
33
+ set runtimepath+=~/.vim/bundle/neobundle.vim
34
+ call neobundle#rc('~/.vim/bundle/')
35
+ endif
36
+
37
+ NeoBundle 'Shougo/vimproc.vim', {
38
+ \ 'build': {
39
+ \ 'windows': 'make -f make_mingw32.mak',
40
+ \ 'cygwin': 'make -f make_cygwin.mak',
41
+ \ 'mac': 'make -f make_mac.mak',
42
+ \ 'unix': 'make -f make_unix.mak',
43
+ \ },
44
+ \}
45
+
46
+ NeoBundle 'Shougo/neocomplete.vim'
47
+ NeoBundle 'Shougo/vimshell.vim'
48
+ NeoBundle 'Shougo/unite.vim'
49
+ ```
50
+
51
+ ## Usage
52
+
53
+ The structure of the command line is shown below:
54
+
55
+ ```bash
56
+ $ neobundle [--help] [--version]
57
+ [--vim=<path>] [--vimrc=<path>]
58
+ <command>
59
+ ```
60
+
61
+ ### commands
62
+
63
+ #### install
64
+
65
+ This command will install the Vim plugins by the NeoBundle which is described the `vimrc`.
66
+ It equals the `:NeoBundleInstall` vim command.
67
+
68
+ ```bash
69
+ $ neobundle install
70
+ ```
71
+
72
+ #### clean
73
+
74
+ This command will delete the Vim plugins which is unused.
75
+ It equals the `:NeoBundleClean!` vim command.
76
+
77
+ ```bash
78
+ $ neobundle clean
79
+ ```
80
+
81
+ #### list
82
+
83
+ This command will enumerate the Vim plugins by the NeoBundle which is described the `vimrc`.
84
+ It equals the `:NeoBundleList` vim command.
85
+
86
+ ```bash
87
+ $ neobundle list
88
+ ```
89
+
90
+ ### options
91
+
92
+ #### --vim
93
+
94
+ This option designates the vim command location.
95
+
96
+ ```bash
97
+ --vim=<path>
98
+ ```
99
+
100
+ The default value is `vim`, and this case is searched from the `PATH` environment variable by the system.
101
+ Also, this value is able to overriden by the `NEOBUNDLE_CMD_VIM` environment variable.
102
+
103
+ #### --vimrc
104
+
105
+ This option designates the vimrc location.
106
+
107
+ ```bash
108
+ --vimrc=<path>
109
+ ```
110
+
111
+ The default value is shown below:
112
+
113
+ | platform | value |
114
+ | -------- | ----- |
115
+ | Mac OS X and Linux | $HOME/.vimrc |
116
+ | Windows | %USERPROFILE%\\\_vimrc |
117
+
118
+ Also, this value is able to overriden by the `NEOBUNDLE_CMD_VIMRC` environment variable.
119
+
120
+ ## Contributing
121
+
122
+ 1. Fork it ( https://github.com/mrk21/neobundle-cmd/fork )
123
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
124
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
125
+ 4. Push to the branch (`git push origin my-new-feature`)
126
+ 5. Create a new Pull Request
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'neobundle'
4
+
5
+ NeoBundle::CommandLine.run
@@ -0,0 +1,15 @@
1
+ require 'neobundle/version'
2
+ require 'rake/pathmap'
3
+
4
+ module NeoBundle
5
+ class Error < StandardError; def status; 1 end end
6
+ class VimscriptError < Error; def status; 2 end end
7
+ class NeoBundleNotFoundError < Error; def status; 3 end end
8
+ class OperationAlreadyCompletedError < Error; def status; 4 end end
9
+ class CommandLineError < Error; def status; 5 end end
10
+ class VimCommandError < Error; def status; 6 end end
11
+ end
12
+
13
+ Dir[__FILE__.pathmap('%X/*.rb')].each do |rb|
14
+ require rb.pathmap('%-1d/%n')
15
+ end
@@ -0,0 +1,77 @@
1
+ require 'optparse'
2
+ require 'neobundle/runner'
3
+
4
+ module NeoBundle
5
+ class CommandLine
6
+ attr_reader :arguments
7
+
8
+ def self.run
9
+ begin
10
+ if block_given? then
11
+ yield
12
+ else
13
+ self.new.execute
14
+ end
15
+ rescue NeoBundle::Error => e
16
+ $stderr.puts e.message unless e.instance_of? NeoBundle::OperationAlreadyCompletedError
17
+ exit e.status
18
+ rescue SystemExit => e
19
+ exit e.status
20
+ rescue Exception => e
21
+ $stderr.puts e.inspect
22
+ $stderr.puts e.backtrace
23
+ exit 255
24
+ else
25
+ exit 0
26
+ end
27
+ end
28
+
29
+ def initialize(args=ARGV)
30
+ @arguments = {
31
+ command: nil,
32
+ config: {}
33
+ }
34
+ opt = OptionParser.new
35
+ opt.version = NeoBundle::VERSION
36
+ opt.banner = <<-SH.gsub(/^( {2}){4}/,'')
37
+ Usage: neobundle [--help] [--version]
38
+ [--vim=<path>] [--vimrc=<path>]
39
+ <command>
40
+
41
+ commands:
42
+ install:
43
+ $ neobundle install
44
+
45
+ clean:
46
+ $ neobundle clean
47
+
48
+ list:
49
+ $ neobundle list
50
+
51
+ options:
52
+ SH
53
+
54
+ opt.on('--vim=<path>','Path to the vim command.'){|v| @arguments[:config][:vim] = v}
55
+ opt.on('--vimrc=<path>','Path to the vimrc.'){|v| @arguments[:config][:vimrc] = v}
56
+ opt.order!(args)
57
+
58
+ command = args.shift.to_s.intern
59
+ case command
60
+ when :install, :clean, :list then
61
+ @arguments[:command] = command
62
+ opt.parse!(args)
63
+ when :'', :help then
64
+ opt.parse(['--help'])
65
+ else
66
+ raise NeoBundle::CommandLineError, 'Invalid command: %s' % command
67
+ end
68
+ rescue OptionParser::ParseError => e
69
+ raise NeoBundle::CommandLineError, e.message
70
+ end
71
+
72
+ def execute
73
+ runner = Runner.new(self.arguments[:config])
74
+ runner.send(self.arguments[:command])
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,50 @@
1
+ require 'neobundle/vimscript'
2
+
3
+ module NeoBundle
4
+ class Runner
5
+ attr_reader :script
6
+
7
+ def self.default_config(platform = RUBY_PLATFORM)
8
+ config = {
9
+ vim: ENV['NEOBUNDLE_CMD_VIM'] || 'vim',
10
+ vimrc: ENV['NEOBUNDLE_CMD_VIMRC'],
11
+ }
12
+ case platform
13
+ when /darwin/,/linux/ then
14
+ config[:vimrc] ||= File.join(ENV['HOME'], '.vimrc')
15
+ when /mswin(?!ce)|mingw|cygwin|bccwin/ then
16
+ config[:vimrc] ||= File.join(ENV['HOME'], '_vimrc')
17
+ end
18
+ config
19
+ end
20
+
21
+ def initialize(config={}, script=nil)
22
+ @script = script || Vimscript.new(self.class.default_config.merge(config))
23
+ begin
24
+ self.script.exec('NeoBundleList')
25
+ rescue NeoBundle::VimscriptError
26
+ raise NeoBundle::NeoBundleNotFoundError, 'NeoBundle not found!'
27
+ end
28
+ end
29
+
30
+ def list
31
+ @script.exec('NeoBundleList', $stdout)
32
+ end
33
+
34
+ def install
35
+ dir = @script.exec('echo neobundle#get_neobundle_dir()').strip
36
+ before = Dir['%s/*' % dir]
37
+ @script.exec('NeoBundleInstall', $stdout)
38
+ after = Dir['%s/*' % dir]
39
+ raise NeoBundle::OperationAlreadyCompletedError, 'Already installed!' if before == after
40
+ end
41
+
42
+ def clean
43
+ dir = @script.exec('echo neobundle#get_neobundle_dir()').strip
44
+ before = Dir['%s/*' % dir]
45
+ @script.exec('NeoBundleClean!', $stdout)
46
+ after = Dir['%s/*' % dir]
47
+ raise NeoBundle::OperationAlreadyCompletedError, 'Already cleaned!' if before == after
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,3 @@
1
+ module NeoBundle
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,81 @@
1
+ require 'shellwords'
2
+
3
+ module NeoBundle
4
+ class Vimscript
5
+ MARK = '[neobundle-cmd/vim-script/command-part]'
6
+
7
+ def initialize(config={})
8
+ @config = {
9
+ vim: 'vim',
10
+ vimrc: 'NONE',
11
+ }
12
+ @config.merge!(config)
13
+ begin
14
+ result = %x[#{'%{vim} --version' % self.escaped_config}]
15
+ unless result =~ /^VIM - Vi IMproved / and $? == 0 then
16
+ raise NeoBundle::VimCommandError, 'command is not vim!'
17
+ end
18
+ rescue SystemCallError
19
+ raise NeoBundle::VimCommandError, 'vim command not found!'
20
+ end
21
+ end
22
+
23
+ def exec(cmd, io=nil)
24
+ raise NeoBundle::VimscriptError, 'Command is empty!' if cmd.to_s.strip.empty?
25
+ command = (<<-SH % self.escaped_config).gsub(/\s+/,' ').strip
26
+ %{vim} -u %{vimrc} -U NONE -i NONE -e -s -V1
27
+ -c "
28
+ try |
29
+ echo '#{MARK}' |
30
+ #{cmd} |
31
+ echo '#{MARK}' |
32
+ echo '' |
33
+ finally |
34
+ q! |
35
+ endtry
36
+ "
37
+ -c "
38
+ echo '#{MARK}' |
39
+ echo '' |
40
+ q
41
+ "
42
+ SH
43
+ r,w = IO.pipe
44
+ process = Process.detach spawn(command, out: w, err: w)
45
+
46
+ Thread.new do
47
+ process.join
48
+ r.close
49
+ w.close
50
+ end
51
+
52
+ begin
53
+ result = []
54
+ is_outputting = false
55
+
56
+ loop do
57
+ line = r.gets.rstrip
58
+ if line == MARK then
59
+ is_outputting = !is_outputting
60
+ elsif is_outputting then
61
+ io.puts line unless io.nil?
62
+ result.push line
63
+ end
64
+ end
65
+ rescue IOError
66
+ result = result.join("\n")
67
+ raise NeoBundle::VimscriptError, result if process.value != 0
68
+ result
69
+ end
70
+ end
71
+
72
+ protected
73
+
74
+ def escaped_config
75
+ result = @config.clone
76
+ result[:vim] = Shellwords.escape result[:vim]
77
+ result[:vimrc] = Shellwords.escape result[:vimrc]
78
+ result
79
+ end
80
+ end
81
+ 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 'neobundle/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "neobundle"
8
+ spec.version = NeoBundle::VERSION
9
+ spec.authors = ["Yuichi Murata"]
10
+ spec.email = ["mrk21info+rubygems@gmail.com"]
11
+ spec.summary = %q{NeoBundle command line tools.}
12
+ spec.description = %q{NeoBundle command line tools.}
13
+ spec.homepage = "https://github.com/mrk21/neobundle-cmd"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
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.6"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "rspec", "~> 3.0"
24
+ end
@@ -0,0 +1,2 @@
1
+ @echo off
2
+ ruby non_vim.rb
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env ruby
2
+ puts 'This program is not the vim!'
@@ -0,0 +1,2 @@
1
+ @echo off
2
+ ruby non_vim2.rb
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ puts 'VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jun 4 2014 00:25:30)'
3
+ exit 1
@@ -0,0 +1 @@
1
+ set runtimepath=$_neobundle_root/tmp,$_neobundle_root/tmp/after
@@ -0,0 +1,6 @@
1
+ source $_neobundle_root/spec/fixtures/vimrc/base.vim
2
+
3
+ if has('vim_starting')
4
+ set runtimepath+=$_neobundle_root/vendor/neobundle.vim
5
+ call neobundle#rc($_neobundle_root .'/tmp/bundle/')
6
+ endif
@@ -0,0 +1,113 @@
1
+ require 'spec_helper'
2
+ require 'stringio'
3
+
4
+ module NeoBundle
5
+ describe NeoBundle::CommandLine do
6
+ subject do
7
+ CommandLine.new(self.args.split(/\s+/))
8
+ end
9
+
10
+ let(:args){''}
11
+
12
+ describe '#arguments()' do
13
+ subject { super().arguments }
14
+
15
+ describe 'install command' do
16
+ let(:args){'install'}
17
+ it { is_expected.to eq(command: :install, config: {}) }
18
+ end
19
+
20
+ describe 'clean command' do
21
+ let(:args){'clean'}
22
+ it { is_expected.to eq(command: :clean, config: {}) }
23
+ end
24
+
25
+ describe 'list command' do
26
+ let(:args){'list'}
27
+ it { is_expected.to eq(command: :list, config: {}) }
28
+ end
29
+
30
+ describe 'help or version' do
31
+ before { $stderr = $stdout = StringIO.new }
32
+ after { $stderr = STDERR; $stdout = STDOUT }
33
+
34
+ ['', 'help', '--help', '-h', '--version'].each do |args|
35
+ describe '"%s"' % args do
36
+ let(:args){args}
37
+ it { expect{subject}.to raise_error(SystemExit) }
38
+ end
39
+ end
40
+ end
41
+
42
+ describe 'options' do
43
+ let(:args){'--vim=path1 --vimrc=path3 install --vimrc=path4 --vim=path2'}
44
+ it do
45
+ is_expected.to eq(
46
+ command: :install,
47
+ config: {
48
+ vim: 'path2',
49
+ vimrc: 'path4'
50
+ }
51
+ )
52
+ end
53
+ end
54
+
55
+ describe 'invalid command' do
56
+ let(:args){'invalid-command'}
57
+ it { expect{subject}.to raise_error(NeoBundle::CommandLineError, 'Invalid command: invalid-command') }
58
+ end
59
+
60
+ describe 'invalid option' do
61
+ let(:args){'--invalid-option'}
62
+ it { expect{subject}.to raise_error(NeoBundle::CommandLineError, 'invalid option: --invalid-option') }
63
+ end
64
+ end
65
+
66
+ describe '::run(&block)' do
67
+ subject do
68
+ begin
69
+ CommandLine.run do
70
+ self.exception
71
+ end
72
+ rescue SystemExit => e
73
+ self.io.rewind
74
+ return [e.status, self.io.read.strip]
75
+ end
76
+ end
77
+
78
+ let(:exception){nil}
79
+ let(:io){StringIO.new('','r+')}
80
+
81
+ before { $stderr = self.io }
82
+ after { $stderr = STDERR }
83
+
84
+ context 'when became successful' do
85
+ it {expect(subject[0]).to eq(0) }
86
+ end
87
+
88
+ context 'when the `NeoBundle::Error` was thrown' do
89
+ let(:exception){raise NeoBundle::VimscriptError, 'VimscriptError message'}
90
+ it { expect(subject[0]).to eq(2) }
91
+ it { expect(subject[1]).to eq('VimscriptError message') }
92
+
93
+ context 'when the `NeoBundle::Error` was thrown' do
94
+ let(:exception){raise NeoBundle::OperationAlreadyCompletedError, 'OperationAlreadyCompletedError'}
95
+ it { expect(subject[0]).to eq(4) }
96
+ it { expect(subject[1]).to eq('') }
97
+ end
98
+ end
99
+
100
+ context 'when the `SystemExit` was thrown' do
101
+ let(:exception){abort 'abort message'}
102
+ it { expect(subject[0]).to eq(1) }
103
+ it { expect(subject[1]).to eq('abort message') }
104
+ end
105
+
106
+ context 'when the unknown exception was thrown' do
107
+ let(:exception){raise StandardError, 'StandardError message'}
108
+ it { expect(subject[0]).to eq(255) }
109
+ it { expect(subject[1]).to match(/^#<StandardError: StandardError message>/) }
110
+ end
111
+ end
112
+ end
113
+ end
@@ -0,0 +1,144 @@
1
+ require 'spec_helper'
2
+
3
+ module NeoBundle
4
+ describe NeoBundle::Runner do
5
+ subject { Runner.new({}, self.script) }
6
+
7
+ let(:script){Vimscript.new(vimrc: './spec/fixtures/vimrc/with_neobundle.vim')}
8
+
9
+ before do
10
+ ENV['_neobundle_root'] = Dir.pwd
11
+ FileUtils.mkdir_p './tmp/after'
12
+ FileUtils.mkdir_p './tmp/plugin'
13
+ FileUtils.mkdir_p './tmp/bundle'
14
+ File.write('./tmp/plugin/empty.vim','')
15
+ end
16
+
17
+ it { expect{subject}.to_not raise_error }
18
+
19
+ context 'when the NeoBundle was not installed' do
20
+ let(:script){Vimscript.new(vimrc: './spec/fixtures/vimrc/base.vim')}
21
+ it { expect{subject}.to raise_error(NeoBundle::NeoBundleNotFoundError, 'NeoBundle not found!') }
22
+ end
23
+
24
+ describe '#install()' do
25
+ subject { super().install }
26
+
27
+ let(:script) do
28
+ s = super()
29
+ d = double('Vimscript')
30
+ allow(d).to receive(:exec) do |cmd|
31
+ if cmd == 'NeoBundleInstall' then
32
+ self.on_install()
33
+ ''
34
+ else
35
+ s.exec(cmd)
36
+ end
37
+ end
38
+ d
39
+ end
40
+
41
+ let(:on_install) do
42
+ File.write('./tmp/bundle/test.vim','')
43
+ end
44
+
45
+ it { expect{subject}.to_not raise_error }
46
+
47
+ context 'when installed nothing' do
48
+ let(:on_install){}
49
+ it { expect{subject}.to raise_error(NeoBundle::OperationAlreadyCompletedError, 'Already installed!') }
50
+ end
51
+ end
52
+
53
+ describe '#clean()' do
54
+ subject { super().clean }
55
+
56
+ let(:script) do
57
+ s = super()
58
+ d = double('Vimscript')
59
+ allow(d).to receive(:exec) do |cmd|
60
+ if cmd == 'NeoBundleClean!' then
61
+ self.on_clean()
62
+ ''
63
+ else
64
+ s.exec(cmd)
65
+ end
66
+ end
67
+ d
68
+ end
69
+
70
+ let(:on_clean) do
71
+ FileUtils.rm_f './tmp/bundle/test.vim'
72
+ end
73
+
74
+ before do
75
+ File.write('./tmp/bundle/test.vim','')
76
+ end
77
+
78
+ it { expect{subject}.to_not raise_error }
79
+
80
+ context 'when deleted nothing' do
81
+ let(:on_clean){}
82
+ it { expect{subject}.to raise_error(NeoBundle::OperationAlreadyCompletedError, 'Already cleaned!') }
83
+ end
84
+ end
85
+
86
+ describe '::default_config([platform])' do
87
+ subject { Runner.default_config(self.platform) }
88
+
89
+ before do
90
+ ENV['NEOBUNDLE_CMD_VIM'] = nil
91
+ ENV['NEOBUNDLE_CMD_VIMRC'] = nil
92
+ end
93
+
94
+ after do
95
+ ENV['NEOBUNDLE_CMD_VIM'] = nil
96
+ ENV['NEOBUNDLE_CMD_VIMRC'] = nil
97
+ end
98
+
99
+ context 'when the platform was "Mac OS X"' do
100
+ let(:platform){'x86_64-darwin13.0'}
101
+ it do
102
+ is_expected.to eq(
103
+ vim: 'vim',
104
+ vimrc: File.expand_path('~/.vimrc')
105
+ )
106
+ end
107
+
108
+ context 'with options' do
109
+ before do
110
+ ENV['NEOBUNDLE_CMD_VIM'] = 'path/to/vim'
111
+ ENV['NEOBUNDLE_CMD_VIMRC'] = 'path/to/vimrc'
112
+ end
113
+
114
+ it do
115
+ is_expected.to eq(
116
+ vim: 'path/to/vim',
117
+ vimrc: 'path/to/vimrc'
118
+ )
119
+ end
120
+ end
121
+ end
122
+
123
+ context 'when the platform was "Linux"' do
124
+ let(:platform){'x86_64-linux'}
125
+ it do
126
+ is_expected.to eq(
127
+ vim: 'vim',
128
+ vimrc: File.expand_path('~/.vimrc')
129
+ )
130
+ end
131
+ end
132
+
133
+ context 'when the platform was "Windows"' do
134
+ let(:platform){'x64-mingw32'}
135
+ it do
136
+ is_expected.to eq(
137
+ vim: 'vim',
138
+ vimrc: File.expand_path('~/_vimrc')
139
+ )
140
+ end
141
+ end
142
+ end
143
+ end
144
+ end
@@ -0,0 +1,71 @@
1
+ require 'spec_helper'
2
+ require 'stringio'
3
+
4
+ module NeoBundle
5
+ describe NeoBundle::Vimscript do
6
+ subject { Vimscript.new(self.config) }
7
+ let(:config){{}}
8
+
9
+ it { expect{subject}.to_not raise_error }
10
+
11
+ context 'when the vim command not found' do
12
+ let(:config){{vim: './not/existed/path'}}
13
+ it { expect{subject}.to raise_error(NeoBundle::VimCommandError, 'vim command not found!') }
14
+ end
15
+
16
+ context 'when the command which is designated was not the "vim"' do
17
+ describe 'output' do
18
+ if ENV['OS'].nil?
19
+ let(:config){{vim: './spec/fixtures/vim-command/non_vim.rb'}}
20
+ else
21
+ let(:config){{vim: './spec/fixtures/vim-command/non_vim.bat'}}
22
+ end
23
+ it { expect{subject}.to raise_error(NeoBundle::VimCommandError, 'command is not vim!') }
24
+ end
25
+
26
+ describe 'status' do
27
+ if ENV['OS'].nil?
28
+ let(:config){{vim: './spec/fixtures/vim-command/non_vim2.rb'}}
29
+ else
30
+ let(:config){{vim: './spec/fixtures/vim-command/non_vim2.bat'}}
31
+ end
32
+ it { expect{subject}.to raise_error(NeoBundle::VimCommandError, 'command is not vim!') }
33
+ end
34
+ end
35
+
36
+ describe '#exec(cmd[, io])' do
37
+ subject { super().exec(self.cmd, self.io) }
38
+ let(:cmd){'echo 1'}
39
+ let(:io){nil}
40
+
41
+ it { is_expected.to eq(ENV['OS'].nil? ? '1' : "\n1\n") }
42
+
43
+ context 'when the `cmd` was empty' do
44
+ ['""', 'nil', '" \n "'].each do |empty_cmd|
45
+ describe empty_cmd do
46
+ let(:cmd){eval empty_cmd}
47
+ it { expect{subject}.to raise_error(NeoBundle::VimscriptError, 'Command is empty!') }
48
+ end
49
+ end
50
+ end
51
+
52
+ context 'when occured the Vim script error' do
53
+ let(:cmd){'invalid-command'}
54
+ it { expect{subject}.to raise_error(NeoBundle::VimscriptError, /E492:/) }
55
+ end
56
+
57
+ describe 'IO output' do
58
+ subject do
59
+ super()
60
+ self.io.rewind
61
+ self.io.read
62
+ end
63
+
64
+ let(:cmd){'echo 1 | echo 2'}
65
+ let(:io){StringIO.new('','r+')}
66
+
67
+ it { is_expected.to eq(ENV['OS'].nil? ? "1\n2\n" : "\n1\n\n2\n\n") }
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe NeoBundle do
4
+ it 'has a version number' do
5
+ expect(NeoBundle::VERSION).not_to be nil
6
+ end
7
+ end
@@ -0,0 +1,17 @@
1
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
+ require 'neobundle'
3
+ require 'fileutils'
4
+
5
+ RSpec.configure do |config|
6
+ config.before(:all) do
7
+ FileUtils.mkdir_p './tmp'
8
+ end
9
+
10
+ config.before(:each) do
11
+ FileUtils.rm_rf './tmp/*'
12
+ end
13
+
14
+ config.after(:all) do
15
+ FileUtils.rm_rf './tmp'
16
+ end
17
+ end
metadata ADDED
@@ -0,0 +1,124 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: neobundle
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Yuichi Murata
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-07-22 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.6'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
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: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ description: NeoBundle command line tools.
56
+ email:
57
+ - mrk21info+rubygems@gmail.com
58
+ executables:
59
+ - neobundle
60
+ extensions: []
61
+ extra_rdoc_files: []
62
+ files:
63
+ - ".gitignore"
64
+ - ".gitmodules"
65
+ - ".rspec"
66
+ - ".travis.yml"
67
+ - Gemfile
68
+ - LICENSE.txt
69
+ - README.md
70
+ - Rakefile
71
+ - bin/neobundle
72
+ - lib/neobundle.rb
73
+ - lib/neobundle/command_line.rb
74
+ - lib/neobundle/runner.rb
75
+ - lib/neobundle/version.rb
76
+ - lib/neobundle/vimscript.rb
77
+ - neobundle.gemspec
78
+ - spec/fixtures/vim-command/non_vim.bat
79
+ - spec/fixtures/vim-command/non_vim.rb
80
+ - spec/fixtures/vim-command/non_vim2.bat
81
+ - spec/fixtures/vim-command/non_vim2.rb
82
+ - spec/fixtures/vimrc/base.vim
83
+ - spec/fixtures/vimrc/with_neobundle.vim
84
+ - spec/neobundle/command_line_spec.rb
85
+ - spec/neobundle/runner_spec.rb
86
+ - spec/neobundle/vimscript_spec.rb
87
+ - spec/neobundle_spec.rb
88
+ - spec/spec_helper.rb
89
+ homepage: https://github.com/mrk21/neobundle-cmd
90
+ licenses:
91
+ - MIT
92
+ metadata: {}
93
+ post_install_message:
94
+ rdoc_options: []
95
+ require_paths:
96
+ - lib
97
+ required_ruby_version: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ required_rubygems_version: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: '0'
107
+ requirements: []
108
+ rubyforge_project:
109
+ rubygems_version: 2.2.2
110
+ signing_key:
111
+ specification_version: 4
112
+ summary: NeoBundle command line tools.
113
+ test_files:
114
+ - spec/fixtures/vim-command/non_vim.bat
115
+ - spec/fixtures/vim-command/non_vim.rb
116
+ - spec/fixtures/vim-command/non_vim2.bat
117
+ - spec/fixtures/vim-command/non_vim2.rb
118
+ - spec/fixtures/vimrc/base.vim
119
+ - spec/fixtures/vimrc/with_neobundle.vim
120
+ - spec/neobundle/command_line_spec.rb
121
+ - spec/neobundle/runner_spec.rb
122
+ - spec/neobundle/vimscript_spec.rb
123
+ - spec/neobundle_spec.rb
124
+ - spec/spec_helper.rb