vim-flavor 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md ADDED
@@ -0,0 +1,198 @@
1
+ # vim-flavor, a tool to manage your favorite Vim plugins
2
+
3
+
4
+
5
+
6
+ ## Set up the tool for a new-style plugin management
7
+
8
+ ### Requirements
9
+
10
+ * [Git](http://git-scm.com/) 1.7.9 or later
11
+ * [Ruby](http://www.ruby-lang.org/) 1.9.2 or later
12
+ * Recommendation: Use [RVM](http://beginrescueend.com/) or other tools
13
+ for ease of installation across different envinronments.
14
+ * [Vim](http://www.vim.org/) 7.3 or later
15
+ * Note that Vim should be compiled as normal, big or huge version
16
+ to use most of plugins.
17
+
18
+
19
+ ### Supported platforms
20
+
21
+ * Unix-like environments such as Linux, Mac OS X, etc.
22
+ * Though Microsoft Windows is not directly supported,
23
+ it is possible to manage Vim plugins via Cygwin or other environments.
24
+
25
+
26
+ ### Installation steps
27
+
28
+ gem install vim-flavor
29
+
30
+
31
+
32
+
33
+ ## Typical usage
34
+
35
+ ### Start using vim-flavor
36
+
37
+ cd $YOUR_REPOSITORY_FOR_DOTFILES
38
+
39
+ cat >VimFlavor <<'END'
40
+ # * Declare using git://github.com/kana/vim-textobj-indent.git
41
+ # * vim-flavor fetches git://github.com/$USER/$REPO.git
42
+ # if the argument is written in '$USER/$REPO' format.
43
+ # * kana/vim-textobj-indent requires kana/vim-textobj-user.
44
+ # Such dependencies are automatically installed
45
+ # if the flavored plugin declares its dependencies with VimFlavor file.
46
+ # (FIXME: Resolving dependencies will be implemented later.)
47
+ flavor 'kana/vim-textobj-indent'
48
+
49
+ # * Declare using git://github.com/vim-scripts/fakeclip.git
50
+ # * vim-flavor fetches git://github.com/vim-scripts/$REPO.git
51
+ # if the argument is written in '$REPO' format.
52
+ flavor 'fakeclip'
53
+
54
+ # * Declare using git://github.com/kana/vim-altr.git
55
+ # * vim-flavor fetches the URI
56
+ # if the argument seems to be a URI.
57
+ flavor 'git://github.com/kana/vim-altr.git'
58
+
59
+ # * Declare using kana/vim-smartchr 0.1.0 or later and older than 0.2.0.
60
+ flavor 'kana/vim-smartchr', '~> 0.1.0'
61
+
62
+ # * Declare using kana/vim-smartword 0.1 or later and older than 1.0.
63
+ flavor 'kana/vim-smartword', '~> 0.1'
64
+
65
+ # * Declare using kana/vim-smarttill 0.1.0 or later.
66
+ flavor 'kana/vim-smarttill', '>= 0.1.0'
67
+ END
68
+
69
+ # Fetch the plugins declared in the VimFlavor,
70
+ # create VimFlavor.lock for a snapshot of all plugins and versions,
71
+ # then install the plugins and a bootstrap script into ~/.vim etc.
72
+ vim-flavor install
73
+
74
+ # Add the following line into the first line of your vimrc:
75
+ #
76
+ # runtime flavors/bootstrap.vim
77
+ vim vimrc
78
+
79
+ git add VimFlavor VimFlavor.lock vimrc
80
+ git commit -m 'Use vim-flavor to manage my favorite Vim plugins'
81
+
82
+
83
+ ### Upgrade all plugins to the latest version
84
+
85
+ vim-flavor upgrade
86
+
87
+ git add VimFlavor.lock
88
+ git commit -m 'Upgrade my favorite Vim plugins'
89
+
90
+
91
+ ### Add more plugins into your dotfile repository
92
+
93
+ cat >>VimFlavor <<'END'
94
+
95
+ flavor 'kana/vim-operator-replace'
96
+
97
+ END
98
+
99
+ # Fetch newly added plugins,
100
+ # update VimFlavor.lock for the plugins,
101
+ # then install the plugins into ~/.vim etc.
102
+ vim-flavor install
103
+
104
+ git add VimFlavor VimFlavor.lock
105
+ git commit -m 'Use kana/vim-operator-replace'
106
+
107
+
108
+ ### Remove plugins from your dotfile repository
109
+
110
+ # Remove declarations of unused plugins from VimFlavor.
111
+ sed -i~ -e '/vim-smartchr/d' VimFlavor
112
+
113
+ # Update VimFlavor.lock for the removed plugins,
114
+ # then clean up the plugins from ~/.vim etc.
115
+ vim-flavor install
116
+
117
+ git add VimFlavor VimFlavor.lock
118
+ git commit -m 'Farewell kana/vim-smartchr'
119
+
120
+
121
+
122
+ ### Install plugins into a non-standard directory
123
+
124
+ vim-flavor install --vimfiles-path=/cygdrive/c/Users/kana/vimfiles
125
+
126
+
127
+ ### Farewell to vim-flavor
128
+
129
+ rm -r ~/.vim-flavor
130
+ rm -r ~/.vim/flavors # or ~/vimfiles/flavors etc.
131
+
132
+ cd $YOUR_REPOSITORY_FOR_DOTFILES
133
+ rm VimFlavor VimFlavor.lock
134
+ git commit -am 'Farewell to vim-flavor'
135
+
136
+
137
+
138
+
139
+ ## Philosophy
140
+
141
+ I know that there are several implementations for the same purpose and many
142
+ users love them, but all of them do not meet my taste. That's why I wrote
143
+ vim-flavor. The philosofy on vim-flavor is as follows:
144
+
145
+ Whole configuration including *versions of plugins* should be under a version
146
+ control system. All of existing implementations do not manage versions of
147
+ plugins. This means that *it's not possible to use the same configuration
148
+ across multiple environments* (the only one exception is using
149
+ [pathogen](https://github.com/tpope/vim-pathogen) with Git submodules,
150
+ but you'll find it's painful to manually manage many plugins).
151
+
152
+ There should be a standard way to describe proper dependencies of plugins to
153
+ install dependencies without explicit declarations. Most of existing
154
+ implementations do not resolve dependencies automatically (the only one
155
+ exception is
156
+ [vim-addon-manager](https://github.com/MarcWeber/vim-addon-manager), but it
157
+ doesn't take care about required versions). The configuration file formats of
158
+ vim-flavor are also used to describe dependencies of plugins with required
159
+ versions. This means that vim-flavor installs plugins and their dependencies
160
+ automatically (unfortunately this feature is not implemented yet, but it'll be
161
+ available soon).
162
+
163
+ Any software should have enough and reproducable test cases.
164
+ But existing implementations such as
165
+ [vundle](https://github.com/gmarik/vundle) and
166
+ [neobundle](https://github.com/Shougo/neobundle.vim) are not developed so.
167
+ It's horrible for me.
168
+
169
+ Installation steps should be small, be reproducable, and not affect existing
170
+ envinronment as less as possible. Most of existing implementations require to
171
+ manually tweak `~/.vim` etc. It's painful to set up such stuffs manually
172
+ because a vimfiles path is varied on each platform.
173
+
174
+ Finally, a tool and files deployed by the tool should be uninstalled easily.
175
+ [Vimana](https://github.com/c9s/Vimana) does not meet this because it directly
176
+ puts files into `~/.vim/colors` etc and it doesn't provide `uninstall`
177
+ command.
178
+
179
+
180
+
181
+
182
+ ## License
183
+
184
+ vim-flavor is released under the terms of so-called MIT/X license.
185
+ See the LICENSE file for the details.
186
+
187
+
188
+
189
+
190
+ ## Author
191
+
192
+ * [Kana Natsuno](http://whileimautomaton.net/)
193
+ (also known as [@kana1](http://twitter.com/kana1))
194
+
195
+
196
+
197
+
198
+ <!-- vim: set expandtab shiftwidth=4 softtabstop=4 textwidth=78 : -->
@@ -1,5 +1,5 @@
1
1
  module Vim
2
2
  module Flavor
3
- VERSION = '0.0.1'
3
+ VERSION = '0.0.2'
4
4
  end
5
5
  end
data/lib/vim-flavor.rb CHANGED
@@ -61,8 +61,17 @@ module Vim
61
61
  end
62
62
  end
63
63
 
64
- DOT_PATH = "#{Dir.getwd()}/.vim-flavor"
65
- CACHED_REPOS_PATH = "#{DOT_PATH}/repos"
64
+ class << self
65
+ @@dot_path = File.expand_path('~/.vim-flavor')
66
+
67
+ def dot_path
68
+ @@dot_path
69
+ end
70
+
71
+ def dot_path= path
72
+ @@dot_path = path
73
+ end
74
+ end
66
75
 
67
76
  class Flavor
68
77
  @@properties = [
@@ -94,7 +103,7 @@ module Vim
94
103
 
95
104
  def cached_repo_path
96
105
  @cached_repo_path ||=
97
- "#{CACHED_REPOS_PATH}/#{zapped_repo_dir_name}"
106
+ "#{Vim::Flavor.dot_path}/repos/#{zapped_repo_dir_name}"
98
107
  end
99
108
 
100
109
  def make_deploy_path(vimfiles_path)
data/spec/facade_spec.rb CHANGED
@@ -15,8 +15,9 @@ describe Vim::Flavor::Facade do
15
15
  end
16
16
 
17
17
  describe '#load' do
18
+ with_temporary_directory
19
+
18
20
  before :each do
19
- @tmp_path = "#{Vim::Flavor::DOT_PATH}/tmp"
20
21
  @facade = described_class.new()
21
22
  @facade.flavorfile_path = "#{@tmp_path}/VimFlavor"
22
23
  @facade.lockfile_path = "#{@tmp_path}/VimFlavor.lock"
@@ -38,7 +39,6 @@ describe Vim::Flavor::Facade do
38
39
  @flavor2d = @flavor2.dup()
39
40
  @flavor2d.locked_version = Gem::Version.create('4.5.6')
40
41
 
41
- FileUtils.mkdir_p(@tmp_path)
42
42
  File.open(@facade.flavorfile_path, 'w') do |f|
43
43
  f.write(<<-'END')
44
44
  flavor 'kana/vim-smartinput'
@@ -58,10 +58,6 @@ describe Vim::Flavor::Facade do
58
58
  end
59
59
  end
60
60
 
61
- after :each do
62
- FileUtils.rm_rf([Vim::Flavor::DOT_PATH], :secure => true)
63
- end
64
-
65
61
  it 'should load both files' do
66
62
  @facade.load()
67
63
 
@@ -184,16 +180,19 @@ describe Vim::Flavor::Facade do
184
180
  end
185
181
 
186
182
  describe '#create_vim_script_for_bootstrap' do
183
+ with_temporary_directory
184
+
187
185
  before :each do
188
186
  @facade = described_class.new()
189
- @home_path = "#{Vim::Flavor::DOT_PATH}"
187
+ @home_path =
188
+ if File.symlink?(@tmp_path)
189
+ File.readlink(@tmp_path)
190
+ else
191
+ @tmp_path
192
+ end
190
193
  @vimfiles_path = "#{@home_path}/.vim"
191
194
  end
192
195
 
193
- after :each do
194
- FileUtils.rm_rf([Vim::Flavor::DOT_PATH], :secure => true)
195
- end
196
-
197
196
  it 'should create a bootstrap script into a given vimfiles path' do
198
197
  bootstrap_path = "#{@vimfiles_path.to_flavors_path()}/bootstrap.vim"
199
198
 
@@ -213,34 +212,40 @@ describe Vim::Flavor::Facade do
213
212
  done
214
213
  vim -u NONE -i NONE -e -s -c '
215
214
  set nocompatible verbose=1
215
+ let vimfiles_path = split(&runtimepath, ",")[0]
216
216
  source #{@vimfiles_path}/flavors/bootstrap.vim
217
- verbose echo &runtimepath
217
+ for path in split(&runtimepath, ",")
218
+ if stridx(path, vimfiles_path) == 0
219
+ echo substitute(path, vimfiles_path, "!", "")
220
+ endif
221
+ endfor
218
222
  qall!
219
223
  ' 2>&1
220
224
  }
221
225
  rtps =
222
226
  _rtp.
223
- gsub(/[\r\n]/, '').
224
- split(/,/).
225
- select {|p| p.start_with?(@home_path)}
227
+ split(/[\r\n]/).
228
+ select {|p| p != ''}
226
229
  rtps.should == [
227
- "#{@home_path}/.vim",
228
- "#{@home_path}/.vim/flavors/bar",
229
- "#{@home_path}/.vim/flavors/baz",
230
- "#{@home_path}/.vim/flavors/foo",
231
- "#{@home_path}/.vim/flavors/foo/after",
232
- "#{@home_path}/.vim/flavors/baz/after",
233
- "#{@home_path}/.vim/flavors/bar/after",
234
- "#{@home_path}/.vim/after",
230
+ '!',
231
+ '!/flavors/bar',
232
+ '!/flavors/baz',
233
+ '!/flavors/foo',
234
+ '!/flavors/foo/after',
235
+ '!/flavors/baz/after',
236
+ '!/flavors/bar/after',
237
+ '!/after',
235
238
  ]
236
239
  end
237
240
  end
238
241
 
239
242
  describe '#deploy_flavors' do
243
+ with_temporary_directory
244
+
240
245
  before :each do
241
246
  @facade = described_class.new()
242
247
 
243
- @test_repo_path = "#{Vim::Flavor::DOT_PATH}/test/origin"
248
+ @test_repo_path = "#{@tmp_path}/test/origin"
244
249
 
245
250
  @flavor = Vim::Flavor::Flavor.new()
246
251
  @flavor.repo_name = '@test_repo_path'
@@ -249,14 +254,10 @@ describe Vim::Flavor::Facade do
249
254
 
250
255
  @flavors = [@flavor]
251
256
 
252
- @vimfiles_path = "#{Vim::Flavor::DOT_PATH}/vimfiles"
257
+ @vimfiles_path = "#{@tmp_path}/vimfiles"
253
258
  @bootstrap_path = "#{@vimfiles_path.to_flavors_path()}/bootstrap.vim"
254
259
  end
255
260
 
256
- after :each do
257
- FileUtils.rm_rf([Vim::Flavor::DOT_PATH], :secure => true)
258
- end
259
-
260
261
  it 'should replace a given path with given flavors' do
261
262
  create_a_test_repo(@test_repo_path)
262
263
  @flavors.each do |f|
@@ -293,23 +294,19 @@ describe Vim::Flavor::Facade do
293
294
  end
294
295
 
295
296
  describe '#save_lockfile' do
297
+ with_temporary_directory
298
+
296
299
  before :each do
297
- @tmp_path = "#{Vim::Flavor::DOT_PATH}/tmp"
298
300
  @facade = described_class.new()
299
301
  @facade.flavorfile_path = "#{@tmp_path}/VimFlavor"
300
302
  @facade.lockfile_path = "#{@tmp_path}/VimFlavor.lock"
301
303
 
302
- FileUtils.mkdir_p(@tmp_path)
303
304
  File.open(@facade.flavorfile_path, 'w') do |f|
304
305
  f.write(<<-'END')
305
306
  END
306
307
  end
307
308
  end
308
309
 
309
- after :each do
310
- clean_up_stashed_stuffs()
311
- end
312
-
313
310
  it 'should save locked flavors' do
314
311
  @facade.load()
315
312
 
@@ -342,15 +339,15 @@ describe Vim::Flavor::Facade do
342
339
  end
343
340
 
344
341
  describe '#complete_locked_flavors' do
342
+ with_temporary_directory
343
+
345
344
  before :each do
346
- @test_repo_path = "#{Vim::Flavor::DOT_PATH}/test/origin"
347
- @tmp_path = "#{Vim::Flavor::DOT_PATH}/tmp"
345
+ @test_repo_path = "#{@tmp_path}/test/origin"
348
346
  @facade = described_class.new()
349
347
  @facade.flavorfile_path = "#{@tmp_path}/VimFlavor"
350
348
  @facade.lockfile_path = "#{@tmp_path}/VimFlavor.lock"
351
349
 
352
350
  create_a_test_repo(@test_repo_path)
353
- FileUtils.mkdir_p(@tmp_path)
354
351
  File.open(@facade.flavorfile_path, 'w') do |f|
355
352
  f.write(<<-"END")
356
353
  flavor 'file://#{@test_repo_path}', '~> 1.1.1'
@@ -358,10 +355,6 @@ describe Vim::Flavor::Facade do
358
355
  end
359
356
  end
360
357
 
361
- after :each do
362
- clean_up_stashed_stuffs()
363
- end
364
-
365
358
  it 'should complete flavors if they are not locked' do
366
359
  @facade.load()
367
360
 
@@ -456,16 +449,16 @@ describe Vim::Flavor::Facade do
456
449
  end
457
450
 
458
451
  describe '#install' do
452
+ with_temporary_directory
453
+
459
454
  before :each do
460
- @test_repo_path = "#{Vim::Flavor::DOT_PATH}/test/origin"
461
- @tmp_path = "#{Vim::Flavor::DOT_PATH}/tmp"
462
- @vimfiles_path = "#{Vim::Flavor::DOT_PATH}/vimfiles"
455
+ @test_repo_path = "#{@tmp_path}/test/origin"
456
+ @vimfiles_path = "#{@tmp_path}/vimfiles"
463
457
  @facade = described_class.new()
464
458
  @facade.flavorfile_path = "#{@tmp_path}/VimFlavor"
465
459
  @facade.lockfile_path = "#{@tmp_path}/VimFlavor.lock"
466
460
 
467
461
  create_a_test_repo(@test_repo_path)
468
- FileUtils.mkdir_p(@tmp_path)
469
462
  File.open(@facade.flavorfile_path, 'w') do |f|
470
463
  f.write(<<-"END")
471
464
  flavor 'file://#{@test_repo_path}', '~> 1.1.1'
@@ -473,10 +466,6 @@ describe Vim::Flavor::Facade do
473
466
  end
474
467
  end
475
468
 
476
- after :each do
477
- clean_up_stashed_stuffs()
478
- end
479
-
480
469
  it 'should install Vim plugins according to VimFlavor' do
481
470
  File.exists?(@facade.lockfile_path).should be_false
482
471
  File.exists?(@vimfiles_path).should be_false
@@ -509,16 +498,16 @@ describe Vim::Flavor::Facade do
509
498
  end
510
499
 
511
500
  describe '#upgrade' do
501
+ with_temporary_directory
502
+
512
503
  before :each do
513
- @test_repo_path = "#{Vim::Flavor::DOT_PATH}/test/origin"
514
- @tmp_path = "#{Vim::Flavor::DOT_PATH}/tmp"
515
- @vimfiles_path = "#{Vim::Flavor::DOT_PATH}/vimfiles"
504
+ @test_repo_path = "#{@tmp_path}/test/origin"
505
+ @vimfiles_path = "#{@tmp_path}/vimfiles"
516
506
  @facade = described_class.new()
517
507
  @facade.flavorfile_path = "#{@tmp_path}/VimFlavor"
518
508
  @facade.lockfile_path = "#{@tmp_path}/VimFlavor.lock"
519
509
 
520
510
  create_a_test_repo(@test_repo_path)
521
- FileUtils.mkdir_p(@tmp_path)
522
511
  File.open(@facade.flavorfile_path, 'w') do |f|
523
512
  f.write(<<-"END")
524
513
  flavor 'file://#{@test_repo_path}', '~> 1.1.1'
@@ -526,10 +515,6 @@ describe Vim::Flavor::Facade do
526
515
  end
527
516
  end
528
517
 
529
- after :each do
530
- clean_up_stashed_stuffs()
531
- end
532
-
533
518
  it 'should upgrade Vim plugins according to VimFlavor' do
534
519
  File.exists?(@facade.lockfile_path).should be_false
535
520
  File.exists?(@vimfiles_path).should be_false
data/spec/flavor_spec.rb CHANGED
@@ -20,8 +20,10 @@ describe Vim::Flavor::Flavor do
20
20
  end
21
21
 
22
22
  describe '#clone' do
23
+ with_temporary_directory
24
+
23
25
  before :each do
24
- @test_repo_path = "#{Vim::Flavor::DOT_PATH}/test/origin"
26
+ @test_repo_path = "#{@tmp_path}/test/origin"
25
27
 
26
28
  @flavor = described_class.new()
27
29
  @flavor.repo_name = '@test_repo_path'
@@ -29,10 +31,6 @@ describe Vim::Flavor::Flavor do
29
31
  @flavor.locked_version = '1.0.0'
30
32
  end
31
33
 
32
- after :each do
33
- clean_up_stashed_stuffs()
34
- end
35
-
36
34
  it 'should clone the repository into a given path' do
37
35
  create_a_test_repo(@test_repo_path)
38
36
 
@@ -45,8 +43,10 @@ describe Vim::Flavor::Flavor do
45
43
  end
46
44
 
47
45
  describe '#fetch' do
46
+ with_temporary_directory
47
+
48
48
  before :each do
49
- @test_repo_path = "#{Vim::Flavor::DOT_PATH}/test/origin"
49
+ @test_repo_path = "#{@tmp_path}/test/origin"
50
50
 
51
51
  @flavor = described_class.new()
52
52
  @flavor.repo_name = '@test_repo_path'
@@ -54,10 +54,6 @@ describe Vim::Flavor::Flavor do
54
54
  @flavor.locked_version = '1.0.0'
55
55
  end
56
56
 
57
- after :each do
58
- clean_up_stashed_stuffs()
59
- end
60
-
61
57
  it 'should fail if the repository is not cloned yet' do
62
58
  expect {
63
59
  @flavor.fetch()
@@ -87,22 +83,20 @@ describe Vim::Flavor::Flavor do
87
83
  end
88
84
 
89
85
  describe '#deploy' do
86
+ with_temporary_directory
87
+
90
88
  before :each do
91
- @test_repo_path = "#{Vim::Flavor::DOT_PATH}/test/origin"
89
+ @test_repo_path = "#{@tmp_path}/test/origin"
92
90
 
93
91
  @flavor = described_class.new()
94
92
  @flavor.repo_name = '@test_repo_path'
95
93
  @flavor.repo_uri = @test_repo_path
96
94
  @flavor.locked_version = '1.0.0'
97
95
 
98
- @vimfiles_path = "#{Vim::Flavor::DOT_PATH}/vimfiles"
96
+ @vimfiles_path = "#{@tmp_path}/vimfiles"
99
97
  @deploy_path = @flavor.make_deploy_path(@vimfiles_path)
100
98
  end
101
99
 
102
- after :each do
103
- clean_up_stashed_stuffs()
104
- end
105
-
106
100
  it 'should deploy files of a locked version to a given path' do
107
101
  create_a_test_repo(@test_repo_path)
108
102
  @flavor.clone()
@@ -179,22 +173,20 @@ describe Vim::Flavor::Flavor do
179
173
  end
180
174
 
181
175
  describe '#undeploy' do
176
+ with_temporary_directory
177
+
182
178
  before :each do
183
- @test_repo_path = "#{Vim::Flavor::DOT_PATH}/test/origin"
179
+ @test_repo_path = "#{@tmp_path}/test/origin"
184
180
 
185
181
  @flavor = described_class.new()
186
182
  @flavor.repo_name = '@test_repo_path'
187
183
  @flavor.repo_uri = @test_repo_path
188
184
  @flavor.locked_version = '1.0.0'
189
185
 
190
- @vimfiles_path = "#{Vim::Flavor::DOT_PATH}/vimfiles"
186
+ @vimfiles_path = "#{@tmp_path}/vimfiles"
191
187
  @deploy_path = @flavor.make_deploy_path(@vimfiles_path)
192
188
  end
193
189
 
194
- after :each do
195
- clean_up_stashed_stuffs()
196
- end
197
-
198
190
  it 'should remove deployed files' do
199
191
  create_a_test_repo(@test_repo_path)
200
192
  @flavor.clone()
@@ -209,8 +201,10 @@ describe Vim::Flavor::Flavor do
209
201
  end
210
202
 
211
203
  describe '#list_versions' do
204
+ with_temporary_directory
205
+
212
206
  before :each do
213
- @test_repo_path = "#{Vim::Flavor::DOT_PATH}/test/origin"
207
+ @test_repo_path = "#{@tmp_path}/test/origin"
214
208
 
215
209
  @flavor = described_class.new()
216
210
  @flavor.repo_name = '@test_repo_path'
@@ -218,10 +212,6 @@ describe Vim::Flavor::Flavor do
218
212
  @flavor.locked_version = '1.0.0'
219
213
  end
220
214
 
221
- after :each do
222
- clean_up_stashed_stuffs()
223
- end
224
-
225
215
  it 'should list tags as versions' do
226
216
  create_a_test_repo(@test_repo_path)
227
217
  @flavor.clone()
@@ -236,8 +226,10 @@ describe Vim::Flavor::Flavor do
236
226
  end
237
227
 
238
228
  describe '#update_locked_version' do
229
+ with_temporary_directory
230
+
239
231
  before :each do
240
- @test_repo_path = "#{Vim::Flavor::DOT_PATH}/test/origin"
232
+ @test_repo_path = "#{@tmp_path}/test/origin"
241
233
 
242
234
  @flavor = described_class.new()
243
235
  @flavor.repo_name = '@test_repo_path'
@@ -245,10 +237,6 @@ describe Vim::Flavor::Flavor do
245
237
  @flavor.locked_version = nil
246
238
  end
247
239
 
248
- after :each do
249
- clean_up_stashed_stuffs()
250
- end
251
-
252
240
  it 'should update locked_version according to version_contraint' do
253
241
  create_a_test_repo(@test_repo_path)
254
242
  @flavor.clone()
@@ -1,4 +1,5 @@
1
1
  require 'bundler/setup'
2
+ require 'spec_helper'
2
3
  require 'vim-flavor'
3
4
 
4
5
  describe Vim::Flavor::FlavorFile do
@@ -1,14 +1,13 @@
1
1
  require 'bundler/setup'
2
2
  require 'fileutils'
3
+ require 'spec_helper'
3
4
  require 'vim-flavor'
4
5
 
5
6
  describe Vim::Flavor::LockFile do
6
- before :each do
7
- @lockfile_path = "#{Vim::Flavor::DOT_PATH}/VimFlavor.lock"
8
- end
7
+ with_temporary_directory
9
8
 
10
- after :each do
11
- FileUtils.rm_rf([Vim::Flavor::DOT_PATH], :secure => true)
9
+ before :each do
10
+ @lockfile_path = "#{@tmp_path}/VimFlavor.lock"
12
11
  end
13
12
 
14
13
  it 'should be initialized with a given path and no flavor' do
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,8 @@
1
1
  require 'bundler/setup'
2
2
  require 'fileutils'
3
+ require 'spec_helper'
4
+ require 'tmpdir'
5
+ require 'vim-flavor'
3
6
 
4
7
  def create_a_test_repo(path)
5
8
  system(<<-"END")
@@ -35,6 +38,26 @@ def update_a_test_repo(path)
35
38
  END
36
39
  end
37
40
 
38
- def clean_up_stashed_stuffs()
39
- FileUtils.rm_rf([Vim::Flavor::DOT_PATH], :secure => true)
41
+ def create_temporary_directory()
42
+ Dir.mktmpdir()
43
+ end
44
+
45
+ def remove_temporary_directory(path)
46
+ FileUtils.remove_entry_secure(path)
47
+ end
48
+
49
+ def with_temporary_directory()
50
+ before :each do
51
+ @tmp_path = create_temporary_directory()
52
+
53
+ @original_dot_path = Vim::Flavor.dot_path
54
+ @dot_path = "#{@tmp_path}/.vim-flavor"
55
+ Vim::Flavor.dot_path = @dot_path
56
+ end
57
+
58
+ after :each do
59
+ Vim::Flavor.dot_path = @original_dot_path
60
+
61
+ remove_temporary_directory(@tmp_path)
62
+ end
40
63
  end
@@ -1,4 +1,5 @@
1
1
  require 'bundler/setup'
2
+ require 'spec_helper'
2
3
  require 'vim-flavor'
3
4
 
4
5
  describe Vim::Flavor::VersionConstraint do
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: vim-flavor
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.1
5
+ version: 0.0.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Kana Natsuno
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2012-03-24 00:00:00 +09:00
13
+ date: 2012-03-27 00:00:00 +09:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -49,7 +49,7 @@ files:
49
49
  - Gemfile
50
50
  - Gemfile.lock
51
51
  - LICENSE
52
- - README.asciidoc
52
+ - README.md
53
53
  - Rakefile
54
54
  - bin/vim-flavor
55
55
  - lib/vim-flavor.rb
data/README.asciidoc DELETED
@@ -1,142 +0,0 @@
1
- = vim-flavor: a tool to manage your favorite Vim plugins
2
-
3
-
4
-
5
-
6
- == Set up the utility for a new-style plugin management
7
-
8
- === Requirements
9
-
10
- * Git 1.7.9 or later
11
- * Ruby 1.9.2 or later
12
- * Vim 7.3 or later
13
-
14
-
15
- === Supported platforms
16
-
17
- * Unix-like environments such as Linux, Mac OS X, etc.
18
- * Though Microsoft Windows is not directly supported,
19
- it is possible to manage Vim plugins via Cygwin or other environments.
20
-
21
-
22
- === Installation steps
23
-
24
- ----
25
- gem install vim-flavor
26
- ----
27
-
28
-
29
-
30
-
31
- == Start using vim-flavor
32
-
33
- ----
34
- cd $YOUR_REPOSITORY_FOR_DOTFILES
35
-
36
- cat >VimFlavor <<'END'
37
- # * Declare using git://github.com/kana/vim-textobj-indent.git
38
- # * vim-flavor fetches a plugin from git://github.com/$USER/$REPO.git
39
- # if the argument is written in '$USER/$REPO' format.
40
- # * kana/vim-textobj-indent requires kana/vim-textobj-user.
41
- # Such dependencies are automatically installed
42
- # if the flavored plugin declares its dependencies with VimFlavor file.
43
- # (FIXME: Resolving dependencies will be implemented later.)
44
- flavor 'kana/vim-textobj-indent'
45
-
46
- # * Declare using git://github.com/vim-scripts/fakeclip.git
47
- # * vim-flavor fetches a plugin from git://github.com/vim-scripts/$REPO.git
48
- # if the argument is written in '$REPO' format.
49
- flavor 'fakeclip'
50
-
51
- # * Declare using git://github.com/kana/vim-altr.git
52
- # * vim-flavor fetches a plugin from the URI
53
- # if the argument seems to be a URI.
54
- flavor 'git://github.com/kana/vim-altr.git'
55
-
56
- # * Declare using kana/vim-smartchr 0.1.0 or later and older than 0.2.0.
57
- flavor 'kana/vim-smartchr', '~> 0.1.0'
58
-
59
- # * Declare using kana/vim-smartword 0.1 or later and older than 1.0.
60
- flavor 'kana/vim-smartword', '~> 0.1'
61
-
62
- # * Declare using kana/vim-smarttill 0.1.0 or later.
63
- flavor 'kana/vim-smarttill', '>= 0.1.0'
64
- END
65
-
66
- # Fetch the plugins declared in the VimFlavor,
67
- # create VimFlavor.lock for a snapshot of all plugins and versions,
68
- # then install the plugins and a bootstrap script into ~/.vim etc.
69
- vim-flavor install
70
-
71
- # Add the following line into the first line of your vimrc:
72
- #
73
- # runtime flavors/bootstrap.vim
74
- vim vimrc
75
-
76
- git add VimFlavor VimFlavor.lock vimrc
77
- git commit -m 'Use vim-flavor to manage my favorite Vim plugins'
78
- ----
79
-
80
-
81
-
82
-
83
- == Upgrade all plugins to the latest version
84
-
85
- ----
86
- vim-flavor upgrade
87
-
88
- git add VimFlavor.lock
89
- git commit -m 'Upgrade my favorite Vim plugins'
90
- ----
91
-
92
-
93
-
94
-
95
- == Add more plugins into your dotfile repository
96
-
97
- ----
98
- cat >>VimFlavor <<'END'
99
-
100
- flavor 'kana/vim-operator-replace'
101
-
102
- END
103
-
104
- # Fetch newly added plugins,
105
- # update VimFlavor.lock for the plugins,
106
- # then install the plugins into ~/.vim etc.
107
- vim-flavor install
108
-
109
- git add VimFlavor VimFlavor.lock
110
- git commit -m 'Use kana/vim-operator-replace'
111
- ----
112
-
113
-
114
-
115
-
116
- == Remove plugins from your dotfile repository
117
-
118
- ----
119
- # Remove declarations of unused plugins from VimFlavor.
120
- sed -i~ -e '/vim-smartchr/d' VimFlavor
121
-
122
- # Update VimFlavor.lock for the removed plugins,
123
- # then clean up the plugins from ~/.vim etc.
124
- vim-flavor install
125
-
126
- git add VimFlavor VimFlavor.lock
127
- git commit -m 'Farewell kana/vim-smartchr'
128
- ----
129
-
130
-
131
-
132
-
133
- == Install plugins into a non-standard directory
134
-
135
- ----
136
- vim-flavor install --vimfiles-path=/cygdrive/c/Users/kana/vimfiles
137
- ----
138
-
139
-
140
-
141
-
142
- // vim: filetype=asciidoc