vim-flavor 1.1.5 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/features/.nav +6 -0
- data/features/branches/README.md +12 -0
- data/features/branches/changing_tracking_branches.feature +78 -0
- data/features/branches/detect_incompatible_declarations.feature +72 -0
- data/features/branches/install.feature +51 -0
- data/features/branches/upgrade.feature +30 -0
- data/features/install_vim_flavor.md +1 -1
- data/features/news.md +10 -0
- data/features/philosophy.md +22 -1
- data/features/resolve_dependencies/basics.feature +0 -32
- data/features/step_definitions/flavor_steps.rb +10 -0
- data/features/support/env.rb +7 -1
- data/features/version_lock.feature +1 -20
- data/features/version_tag_format.feature +44 -8
- data/lib/vim-flavor.rb +2 -0
- data/lib/vim-flavor/branchversion.rb +28 -0
- data/lib/vim-flavor/facade.rb +7 -3
- data/lib/vim-flavor/flavor.rb +20 -5
- data/lib/vim-flavor/flavorfile.rb +13 -12
- data/lib/vim-flavor/lockfileparser.rb +18 -4
- data/lib/vim-flavor/plainversion.rb +28 -0
- data/lib/vim-flavor/version.rb +10 -17
- data/lib/vim-flavor/versionconstraint.rb +23 -7
- data/spec/branchversion_spec.rb +50 -0
- data/spec/enumerableextension_spec.rb +4 -4
- data/spec/facade_spec.rb +2 -2
- data/spec/flavor_spec.rb +9 -8
- data/spec/flavorfile_spec.rb +44 -25
- data/spec/lockfile_spec.rb +58 -23
- data/spec/plainversion_spec.rb +75 -0
- data/spec/spec_helper.rb +10 -0
- data/spec/stringextension_spec.rb +4 -3
- data/spec/version_spec.rb +33 -51
- data/spec/versionconstraint_spec.rb +81 -26
- data/vim-flavor.gemspec +1 -0
- metadata +35 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ed8e9b52605c8aaa5285aa081653824e1f4c0e1b
|
4
|
+
data.tar.gz: c300452d28a9bdebeaa480d40d85c5a641ebda59
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d4ae143d043e5426572b17b09e9d5006cbaadd7ba787fac00afcbed39b1b2c915ddff92519e5c66f48e4dbea89c4b91fec712f666c06ac1881a6b29a2571201e
|
7
|
+
data.tar.gz: ca4552878793038715ca13b5eb46a1641dec9d7b9b99473a103548c8380ec2fcd0cf39a09785c195c27323f6cbe9e82d1c88a539bfca1741853b7c3f62f73ae1
|
data/.travis.yml
CHANGED
data/features/.nav
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
- news.md
|
1
2
|
- philosophy.md
|
2
3
|
- install_vim_flavor.md (Install vim-flavor)
|
3
4
|
- uninstall_vim_flavor.md (Uninstall vim-flavor)
|
@@ -17,3 +18,8 @@
|
|
17
18
|
- failures.feature
|
18
19
|
- specifying_test_scripts.feature
|
19
20
|
- version_tag_format.feature
|
21
|
+
- branches:
|
22
|
+
- install.feature
|
23
|
+
- upgrade.feature
|
24
|
+
- changing_tracking_branches.feature
|
25
|
+
- detect_incompatible_declarations.feature
|
@@ -0,0 +1,12 @@
|
|
1
|
+
Sometimes it's necessary to try out proposed changes of a Vim plugin which are
|
2
|
+
not released as a proper version. So that `vim-flavor` can also track the
|
3
|
+
latest revision of a specific branch of a Vim plugin.
|
4
|
+
|
5
|
+
Unlike plain versions, branches are not comparable. So that it's not possible
|
6
|
+
to detect incompatible plugins before installing. It's not recommended for
|
7
|
+
daily use. Use branches at your own risk.
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
|
12
|
+
<!-- vim: set expandtab shiftwidth=4 softtabstop=4 textwidth=78 : -->
|
@@ -0,0 +1,78 @@
|
|
1
|
+
Feature: Changing tracking branches
|
2
|
+
In order to try out another branch instead of the currently used one,
|
3
|
+
as a lazy Vim user,
|
4
|
+
I want to use the latest revision of the new branch.
|
5
|
+
|
6
|
+
Background:
|
7
|
+
Given a repository "foo" with versions "1.0.0 1.0.1 1.0.2"
|
8
|
+
|
9
|
+
Scenario: Changing tracking branches
|
10
|
+
Given a flavorfile with:
|
11
|
+
"""ruby
|
12
|
+
flavor '$foo_uri', branch: 'master'
|
13
|
+
"""
|
14
|
+
And a lockfile with:
|
15
|
+
"""
|
16
|
+
$foo_uri ($foo_rev_101 at experimental)
|
17
|
+
"""
|
18
|
+
When I run `vim-flavor install`
|
19
|
+
Then it should pass with template:
|
20
|
+
"""
|
21
|
+
Checking versions...
|
22
|
+
Use $foo_uri ... $foo_rev_102 at master
|
23
|
+
Deploying plugins...
|
24
|
+
$foo_uri $foo_rev_102 at master ... done
|
25
|
+
Completed.
|
26
|
+
"""
|
27
|
+
And a bootstrap script is created in "$home/.vim"
|
28
|
+
And a flavor "$foo_uri" version "1.0.2" is deployed to "$home/.vim"
|
29
|
+
|
30
|
+
Scenario: Use a branch instead of a version
|
31
|
+
Given a flavorfile with:
|
32
|
+
"""ruby
|
33
|
+
flavor '$foo_uri', branch: 'master'
|
34
|
+
"""
|
35
|
+
And a lockfile with:
|
36
|
+
"""
|
37
|
+
$foo_uri (1.0.1)
|
38
|
+
"""
|
39
|
+
When I run `vim-flavor install`
|
40
|
+
Then it should pass with template:
|
41
|
+
"""
|
42
|
+
Checking versions...
|
43
|
+
Use $foo_uri ... $foo_rev_102 at master
|
44
|
+
Deploying plugins...
|
45
|
+
$foo_uri $foo_rev_102 at master ... done
|
46
|
+
Completed.
|
47
|
+
"""
|
48
|
+
And a lockfile is created with:
|
49
|
+
"""
|
50
|
+
$foo_uri ($foo_rev_102 at master)
|
51
|
+
"""
|
52
|
+
And a bootstrap script is created in "$home/.vim"
|
53
|
+
And a flavor "$foo_uri" version "1.0.2" is deployed to "$home/.vim"
|
54
|
+
|
55
|
+
Scenario: Use a version instead of a branch
|
56
|
+
Given a flavorfile with:
|
57
|
+
"""ruby
|
58
|
+
flavor '$foo_uri', '~> 1.0.1'
|
59
|
+
"""
|
60
|
+
And a lockfile with:
|
61
|
+
"""
|
62
|
+
$foo_uri ($foo_rev_100 at master)
|
63
|
+
"""
|
64
|
+
When I run `vim-flavor install`
|
65
|
+
Then it should pass with template:
|
66
|
+
"""
|
67
|
+
Checking versions...
|
68
|
+
Use $foo_uri ... 1.0.2
|
69
|
+
Deploying plugins...
|
70
|
+
$foo_uri 1.0.2 ... done
|
71
|
+
Completed.
|
72
|
+
"""
|
73
|
+
And a lockfile is created with:
|
74
|
+
"""
|
75
|
+
$foo_uri (1.0.2)
|
76
|
+
"""
|
77
|
+
And a bootstrap script is created in "$home/.vim"
|
78
|
+
And a flavor "$foo_uri" version "1.0.2" is deployed to "$home/.vim"
|
@@ -0,0 +1,72 @@
|
|
1
|
+
Feature: Detect incompatible declarations
|
2
|
+
In order to avoid using Vim with inconsistent configurations,
|
3
|
+
as a lazy Vim user,
|
4
|
+
I want to detect incompatible declaratios before installing Vim plugins.
|
5
|
+
|
6
|
+
Scenario: Detect incompatible branches
|
7
|
+
Given a repository "L" with versions "0.1 0.2 0.3 0.4"
|
8
|
+
And "L" has "experimental" branch
|
9
|
+
And a repository "A" with versions "0.0" and a flavorfile:
|
10
|
+
"""ruby
|
11
|
+
flavor '$L_uri', branch: 'master'
|
12
|
+
"""
|
13
|
+
And a repository "B" with versions "0.0" and a flavorfile:
|
14
|
+
"""ruby
|
15
|
+
flavor '$L_uri', branch: 'experimental'
|
16
|
+
"""
|
17
|
+
And a flavorfile with:
|
18
|
+
"""ruby
|
19
|
+
flavor '$A_uri'
|
20
|
+
flavor '$B_uri'
|
21
|
+
"""
|
22
|
+
When I run `vim-flavor install`
|
23
|
+
Then it should fail with template:
|
24
|
+
"""
|
25
|
+
Checking versions...
|
26
|
+
Use $A_uri ... 0.0
|
27
|
+
Use $L_uri ... $L_rev_04 at master
|
28
|
+
Use $B_uri ... 0.0
|
29
|
+
Use $L_uri ... $L_rev_04 at experimental
|
30
|
+
Found incompatible declarations:
|
31
|
+
$L_uri branch: master is required by $A_uri
|
32
|
+
$L_uri branch: experimental is required by $B_uri
|
33
|
+
Please resolve the conflict.
|
34
|
+
"""
|
35
|
+
And a bootstrap script is not created in "$home/.vim"
|
36
|
+
And a flavor "$A_uri" is not deployed to "$home/.vim"
|
37
|
+
And a flavor "$B_uri" is not deployed to "$home/.vim"
|
38
|
+
And a flavor "$L_uri" is not deployed to "$home/.vim"
|
39
|
+
|
40
|
+
Scenario: Detect mixed use of branchs and versions
|
41
|
+
Given a repository "L" with versions "0.1 0.2 0.3 0.4"
|
42
|
+
And "L" has "experimental" branch
|
43
|
+
And a repository "A" with versions "0.0" and a flavorfile:
|
44
|
+
"""ruby
|
45
|
+
flavor '$L_uri', branch: 'master'
|
46
|
+
"""
|
47
|
+
And a repository "B" with versions "0.0" and a flavorfile:
|
48
|
+
"""ruby
|
49
|
+
flavor '$L_uri', '~> 0.2'
|
50
|
+
"""
|
51
|
+
And a flavorfile with:
|
52
|
+
"""ruby
|
53
|
+
flavor '$A_uri'
|
54
|
+
flavor '$B_uri'
|
55
|
+
"""
|
56
|
+
When I run `vim-flavor install`
|
57
|
+
Then it should fail with template:
|
58
|
+
"""
|
59
|
+
Checking versions...
|
60
|
+
Use $A_uri ... 0.0
|
61
|
+
Use $L_uri ... $L_rev_04 at master
|
62
|
+
Use $B_uri ... 0.0
|
63
|
+
Use $L_uri ... 0.4
|
64
|
+
Found incompatible declarations:
|
65
|
+
$L_uri branch: master is required by $A_uri
|
66
|
+
$L_uri ~> 0.2 is required by $B_uri
|
67
|
+
Please resolve the conflict.
|
68
|
+
"""
|
69
|
+
And a bootstrap script is not created in "$home/.vim"
|
70
|
+
And a flavor "$A_uri" is not deployed to "$home/.vim"
|
71
|
+
And a flavor "$B_uri" is not deployed to "$home/.vim"
|
72
|
+
And a flavor "$L_uri" is not deployed to "$home/.vim"
|
@@ -0,0 +1,51 @@
|
|
1
|
+
Feature: Install Vim plugins with specific branches
|
2
|
+
In order to try out proposed changes which are not released yet,
|
3
|
+
as a lazy Vim user,
|
4
|
+
I want to track the latest revision of a specific branch.
|
5
|
+
|
6
|
+
Background:
|
7
|
+
Given a repository "foo" with versions "1.0.0 1.0.1 1.0.2"
|
8
|
+
|
9
|
+
Scenario: Install a new plugin from scratch
|
10
|
+
Given a flavorfile with:
|
11
|
+
"""ruby
|
12
|
+
flavor '$foo_uri', branch: 'master'
|
13
|
+
"""
|
14
|
+
When I run `vim-flavor install`
|
15
|
+
Then it should pass with template:
|
16
|
+
"""
|
17
|
+
Checking versions...
|
18
|
+
Use $foo_uri ... $foo_rev_102 at master
|
19
|
+
Deploying plugins...
|
20
|
+
$foo_uri $foo_rev_102 at master ... done
|
21
|
+
Completed.
|
22
|
+
"""
|
23
|
+
And a lockfile is created with:
|
24
|
+
"""
|
25
|
+
$foo_uri ($foo_rev_102 at master)
|
26
|
+
"""
|
27
|
+
And a bootstrap script is created in "$home/.vim"
|
28
|
+
And a flavor "$foo_uri" version "1.0.2" is deployed to "$home/.vim"
|
29
|
+
|
30
|
+
Scenario: Install a plugin according to a lockfile
|
31
|
+
Given a flavorfile with:
|
32
|
+
"""ruby
|
33
|
+
flavor '$foo_uri', branch: 'master'
|
34
|
+
"""
|
35
|
+
And I run `vim-flavor install`
|
36
|
+
And a lockfile is created with:
|
37
|
+
"""
|
38
|
+
$foo_uri ($foo_rev_102 at master)
|
39
|
+
"""
|
40
|
+
And "foo" version "1.0.3" is released
|
41
|
+
When I run `vim-flavor install`
|
42
|
+
Then it should pass with template:
|
43
|
+
"""
|
44
|
+
Checking versions...
|
45
|
+
Use $foo_uri ... $foo_rev_102 at master
|
46
|
+
Deploying plugins...
|
47
|
+
$foo_uri $foo_rev_102 at master ... skipped (already deployed)
|
48
|
+
Completed.
|
49
|
+
"""
|
50
|
+
And a bootstrap script is created in "$home/.vim"
|
51
|
+
And a flavor "$foo_uri" version "1.0.2" is deployed to "$home/.vim"
|
@@ -0,0 +1,30 @@
|
|
1
|
+
Feature: Upgrade Vim plugins with specific branches
|
2
|
+
In order to try out proposed changes which are not released yet,
|
3
|
+
as a lazy Vim user,
|
4
|
+
I want to track the latest revision of a specific branch.
|
5
|
+
|
6
|
+
Background:
|
7
|
+
Given a repository "foo" with versions "1.0.0 1.0.1 1.0.2"
|
8
|
+
|
9
|
+
Scenario: Upgrade a plugin
|
10
|
+
Given a flavorfile with:
|
11
|
+
"""ruby
|
12
|
+
flavor '$foo_uri', branch: 'master'
|
13
|
+
"""
|
14
|
+
And I run `vim-flavor install`
|
15
|
+
And a lockfile is created with:
|
16
|
+
"""
|
17
|
+
$foo_uri ($foo_rev_102 at master)
|
18
|
+
"""
|
19
|
+
And "foo" version "1.0.3" is released
|
20
|
+
When I run `vim-flavor upgrade`
|
21
|
+
Then it should pass with template:
|
22
|
+
"""
|
23
|
+
Checking versions...
|
24
|
+
Use $foo_uri ... $foo_rev_103 at master
|
25
|
+
Deploying plugins...
|
26
|
+
$foo_uri $foo_rev_103 at master ... done
|
27
|
+
Completed.
|
28
|
+
"""
|
29
|
+
And a bootstrap script is created in "$home/.vim"
|
30
|
+
And a flavor "$foo_uri" version "1.0.3" is deployed to "$home/.vim"
|
@@ -1,7 +1,7 @@
|
|
1
1
|
## Required softwares
|
2
2
|
|
3
3
|
* [Git](http://git-scm.com/) 1.7.9 or later
|
4
|
-
* [Ruby](http://www.ruby-lang.org/)
|
4
|
+
* [Ruby](http://www.ruby-lang.org/) 2.0.0 or later
|
5
5
|
* Recommendation: Use [RVM](http://beginrescueend.com/) or other tools
|
6
6
|
for ease of installation across different envinronments.
|
7
7
|
* [Vim](http://www.vim.org/) 7.3 or later
|
data/features/news.md
ADDED
data/features/philosophy.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
## Installable plugins
|
2
2
|
|
3
|
-
|
3
|
+
Basically, not all Vim plugins can be installed with vim-flavor.
|
4
4
|
vim-flavor can install plugins which meet the following conditions:
|
5
5
|
|
6
6
|
* Plugins must have dedicated Git repositories.
|
@@ -41,6 +41,27 @@ vim-flavor can install plugins which meet the following conditions:
|
|
41
41
|
Such plugins are not ready to use for everyone.
|
42
42
|
So that it should not be installable.
|
43
43
|
|
44
|
+
Though the above principle is not changed, nowadays (2014)
|
45
|
+
|
46
|
+
* www.vim.org becomes less popular as a central repository of Vim plugins.
|
47
|
+
Because:
|
48
|
+
* It's a tedious task to publish plugins at www.vim.org because there is no
|
49
|
+
standard tool to automate the process to publish plugins.
|
50
|
+
* As GitHub becomes more popular, many plugin authors seem to choose only
|
51
|
+
GitHub to publish plugins because it is easy and fast.
|
52
|
+
* As a result, vim-scripts.org's mirrors are mostly outdated. Latest versions
|
53
|
+
are not usually found in the mirrors. So that GitHub repositories rather
|
54
|
+
than vim-scripts.org's mirrors are specified in [flavorfile](./flavorfile)
|
55
|
+
in most cases.
|
56
|
+
* But unlike vim-scripts.org's mirrors, "version" tags might not exist in wild
|
57
|
+
repositories.
|
58
|
+
* And sometimes it's necessary to track a brach with proposed changes which
|
59
|
+
are not ready to release as a proper version.
|
60
|
+
|
61
|
+
So that [branches](./branches) are also supported. But branches are not
|
62
|
+
comparable and it's not possible to detect incompatibility before installing
|
63
|
+
plugins. It's not recommended for daily use. Use branches at your own risk.
|
64
|
+
|
44
65
|
|
45
66
|
|
46
67
|
|
@@ -148,35 +148,3 @@ Feature: Resolve dependencies of Vim plugins
|
|
148
148
|
And a bootstrap script is created in "$home/.vim"
|
149
149
|
And a flavor "$foo_uri" version "2.1" is deployed to "$home/.vim"
|
150
150
|
And a flavor "$bar_uri" version "2.1" is deployed to "$home/.vim"
|
151
|
-
|
152
|
-
Scenario: Resolve dependencies with different style version tags
|
153
|
-
Given a repository "foo" with versions "v4.5 v6.7 v8.9"
|
154
|
-
And a repository "bar" with versions "1.0 1.1 2.0 2.1" and a flavorfile:
|
155
|
-
"""ruby
|
156
|
-
flavor '$foo_uri', '>= 6.7'
|
157
|
-
"""
|
158
|
-
And a flavorfile with:
|
159
|
-
"""ruby
|
160
|
-
flavor '$foo_uri'
|
161
|
-
flavor '$bar_uri'
|
162
|
-
"""
|
163
|
-
When I run `vim-flavor install`
|
164
|
-
Then it should pass with template:
|
165
|
-
"""
|
166
|
-
Checking versions...
|
167
|
-
Use $bar_uri ... 2.1
|
168
|
-
Use $foo_uri ... v8.9
|
169
|
-
Use $foo_uri ... v8.9
|
170
|
-
Deploying plugins...
|
171
|
-
$bar_uri 2.1 ... done
|
172
|
-
$foo_uri v8.9 ... done
|
173
|
-
Completed.
|
174
|
-
"""
|
175
|
-
And a lockfile is created with:
|
176
|
-
"""
|
177
|
-
$bar_uri (2.1)
|
178
|
-
$foo_uri (v8.9)
|
179
|
-
"""
|
180
|
-
And a bootstrap script is created in "$home/.vim"
|
181
|
-
And a flavor "$foo_uri" version "v8.9" is deployed to "$home/.vim"
|
182
|
-
And a flavor "$bar_uri" version "2.1" is deployed to "$home/.vim"
|
@@ -44,6 +44,16 @@ Given /^"([^"]*)" version "([^"]*)" is released$/ do |basename, version|
|
|
44
44
|
}
|
45
45
|
end
|
46
46
|
|
47
|
+
Given /^"([^"]*)" has "([^"]*)" branch$/ do |basename, branch|
|
48
|
+
repository_path = make_repo_path(basename)
|
49
|
+
sh <<-"END"
|
50
|
+
{
|
51
|
+
cd '#{repository_path}' &&
|
52
|
+
git branch '#{branch}'
|
53
|
+
} >/dev/null
|
54
|
+
END
|
55
|
+
end
|
56
|
+
|
47
57
|
Given /^a repository "([^"]*)" from offline cache$/ do |repo_name|
|
48
58
|
repository_path = make_repo_path(repo_name).sub(expand('$tmp/'), '')
|
49
59
|
sh <<-"END"
|
data/features/support/env.rb
CHANGED
@@ -30,10 +30,16 @@ FF
|
|
30
30
|
done
|
31
31
|
} >/dev/null
|
32
32
|
END
|
33
|
+
versions.split.each do |v|
|
34
|
+
variable_table["#{basename}_rev_#{v.gsub('.', '')}"] = sh(<<-"END").chomp
|
35
|
+
cd '#{repository_path}' &&
|
36
|
+
git rev-list -n1 '#{v}' --
|
37
|
+
END
|
38
|
+
end
|
33
39
|
end
|
34
40
|
|
35
41
|
def expand(virtual_path)
|
36
|
-
virtual_path.gsub(/\$([A-Za-
|
42
|
+
virtual_path.gsub(/\$([A-Za-z0-9_]+)/) {
|
37
43
|
variable_table[$1]
|
38
44
|
}
|
39
45
|
end
|
@@ -3,7 +3,7 @@ Feature: Version lock
|
|
3
3
|
as a lazy Vim user,
|
4
4
|
I want to keep versions of Vim plugins which I installed before.
|
5
5
|
|
6
|
-
Scenario: Install with a lockfile
|
6
|
+
Scenario: Install with a lockfile
|
7
7
|
Given a repository "foo" with versions "1.0.0 1.0.1 1.0.2"
|
8
8
|
And a flavorfile with:
|
9
9
|
"""ruby
|
@@ -21,22 +21,3 @@ Feature: Version lock
|
|
21
21
|
"""
|
22
22
|
And a bootstrap script is created in "$home/.vim"
|
23
23
|
And a flavor "$foo_uri" version "1.0.0" is deployed to "$home/.vim"
|
24
|
-
|
25
|
-
Scenario: Install with a lockfile including "vX.Y.Z" style tags
|
26
|
-
Given a repository "foo" with versions "v4.5.6 v8.8 v9.0"
|
27
|
-
And a flavorfile with:
|
28
|
-
"""ruby
|
29
|
-
flavor '$foo_uri'
|
30
|
-
"""
|
31
|
-
And a lockfile with:
|
32
|
-
"""
|
33
|
-
$foo_uri (v8.8)
|
34
|
-
"""
|
35
|
-
When I run `vim-flavor install`
|
36
|
-
Then it should pass
|
37
|
-
And the lockfile is updated with:
|
38
|
-
"""
|
39
|
-
$foo_uri (v8.8)
|
40
|
-
"""
|
41
|
-
And a bootstrap script is created in "$home/.vim"
|
42
|
-
And a flavor "$foo_uri" version "v8.8" is deployed to "$home/.vim"
|