vvm-rb 0.2.2 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +10 -8
- data/Gemfile +5 -5
- data/VERSION +1 -1
- data/bin/vvm +13 -0
- data/lib/vvm/accessor.rb +37 -0
- data/lib/vvm/cli.rb +78 -0
- data/lib/vvm/constants.rb +3 -0
- data/lib/vvm/ext/mkmf.rb +8 -0
- data/lib/vvm/installer.rb +83 -0
- data/lib/vvm/switcher.rb +18 -0
- data/lib/vvm/uninstaller.rb +23 -0
- data/lib/vvm/validator.rb +55 -0
- data/lib/vvm/version.rb +43 -0
- data/lib/vvm.rb +10 -0
- data/spec/accessor_spec.rb +40 -0
- data/spec/installer_spec.rb +19 -18
- data/spec/spec_helper.rb +3 -7
- data/spec/switcher_spec.rb +5 -5
- data/spec/uninstaller_spec.rb +6 -5
- data/spec/validator_spec.rb +13 -30
- data/spec/version_spec.rb +12 -12
- data/vvm-rb.gemspec +32 -32
- metadata +26 -26
- data/bin/vvm-rb +0 -14
- data/lib/vvm-rb/accesser.rb +0 -35
- data/lib/vvm-rb/base.rb +0 -19
- data/lib/vvm-rb/cli.rb +0 -101
- data/lib/vvm-rb/constants.rb +0 -1
- data/lib/vvm-rb/installer.rb +0 -68
- data/lib/vvm-rb/switcher.rb +0 -17
- data/lib/vvm-rb/uninstaller.rb +0 -21
- data/lib/vvm-rb/validator.rb +0 -44
- data/lib/vvm-rb/version.rb +0 -41
- data/lib/vvm-rb.rb +0 -13
- data/spec/accesser_spec.rb +0 -40
data/lib/vvm-rb/installer.rb
DELETED
@@ -1,68 +0,0 @@
|
|
1
|
-
require 'fileutils'
|
2
|
-
|
3
|
-
class Installer
|
4
|
-
def initialize(version, conf, silent = false)
|
5
|
-
vvmopt = ENV['VVMOPT']
|
6
|
-
@silent = silent ? '> /dev/null 2>&1' : ''
|
7
|
-
@version = version
|
8
|
-
@conf = conf.flatten.empty? && vvmopt ? vvmopt.split(' ') : conf
|
9
|
-
end
|
10
|
-
|
11
|
-
def self.fetch
|
12
|
-
FileUtils.mkdir_p(get_repos_dir)
|
13
|
-
repos_dir = get_vimorg_dir
|
14
|
-
system("hg -q clone #{VIM_URI} #{repos_dir}") unless File.exist?(repos_dir)
|
15
|
-
end
|
16
|
-
|
17
|
-
def self.pull
|
18
|
-
Dir.chdir(get_vimorg_dir) { system('hg -q pull') }
|
19
|
-
end
|
20
|
-
|
21
|
-
def checkout
|
22
|
-
src_dir = get_src_dir
|
23
|
-
FileUtils.mkdir_p(src_dir)
|
24
|
-
unless File.exist?(get_src_dir(@version))
|
25
|
-
archive = "hg archive -t tar -r #{@version} -p #{@version} -"
|
26
|
-
expand = "(cd #{src_dir} && tar xf -)"
|
27
|
-
Dir.chdir get_vimorg_dir do
|
28
|
-
system("#{archive} | #{expand} #{@silent}")
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def configure
|
34
|
-
vims_dir = get_vims_dir(@version)
|
35
|
-
src_dir = get_src_dir(@version)
|
36
|
-
default = "--prefix=#{vims_dir}"
|
37
|
-
Dir.chdir src_dir do
|
38
|
-
system("./configure #{default} #{@conf.join(' ')} #{@silent}")
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def make_clean
|
43
|
-
src_dir = get_src_dir(@version)
|
44
|
-
Dir.chdir src_dir do
|
45
|
-
system("make clean #{@silent}")
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
def make_install
|
50
|
-
src_dir = get_src_dir(@version)
|
51
|
-
Dir.chdir src_dir do
|
52
|
-
system("make all install #{@silent}")
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
def self.cp_etc
|
57
|
-
current_login = get_login_file
|
58
|
-
path = File.join(File.dirname(__FILE__), '..', '..', 'etc', 'login')
|
59
|
-
login = File.expand_path(path)
|
60
|
-
if !File.exist?(current_login)
|
61
|
-
etc_dir = get_etc_dir
|
62
|
-
FileUtils.mkdir_p(etc_dir)
|
63
|
-
FileUtils.cp(login, etc_dir)
|
64
|
-
elsif !FileUtils.compare_file(login, current_login)
|
65
|
-
FileUtils.cp(login, get_etc_dir)
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
data/lib/vvm-rb/switcher.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
require 'fileutils'
|
2
|
-
|
3
|
-
class Switcher
|
4
|
-
def initialize(version)
|
5
|
-
@version = version
|
6
|
-
end
|
7
|
-
|
8
|
-
def use
|
9
|
-
current = get_current_dir
|
10
|
-
FileUtils.rm(current) if File.exist?(current)
|
11
|
-
unless @version == 'system'
|
12
|
-
vims_dir = get_vims_dir(@version)
|
13
|
-
abort "#{@version} is not installed." unless File.exist?(vims_dir)
|
14
|
-
FileUtils.ln_s(vims_dir, current)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
data/lib/vvm-rb/uninstaller.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
require 'fileutils'
|
2
|
-
|
3
|
-
class Uninstaller
|
4
|
-
def initialize(version)
|
5
|
-
@version = version
|
6
|
-
end
|
7
|
-
|
8
|
-
def uninstall
|
9
|
-
current = get_current_dir
|
10
|
-
vims_dir = get_vims_dir(@version)
|
11
|
-
src_dir = get_src_dir(@version)
|
12
|
-
if File.exist?(current)
|
13
|
-
target = File.readlink(current)
|
14
|
-
if target == vims_dir
|
15
|
-
abort "#{@version} can not be uninstalled; it is currently used."
|
16
|
-
end
|
17
|
-
end
|
18
|
-
FileUtils.rm_rf(src_dir) if File.exist?(src_dir)
|
19
|
-
FileUtils.rm_rf(vims_dir) if File.exist?(vims_dir)
|
20
|
-
end
|
21
|
-
end
|
data/lib/vvm-rb/validator.rb
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
module Validator
|
2
|
-
module_function
|
3
|
-
|
4
|
-
def has_hg?
|
5
|
-
unless Kernel.system('which hg > /dev/null')
|
6
|
-
abort 'mercurial is required to install.'
|
7
|
-
end
|
8
|
-
return true
|
9
|
-
end
|
10
|
-
|
11
|
-
def version?
|
12
|
-
if get_version.nil?
|
13
|
-
abort 'undefined vim version. please run [ vvm-rb list ].'
|
14
|
-
end
|
15
|
-
return true
|
16
|
-
end
|
17
|
-
|
18
|
-
def new_version?(version = get_version)
|
19
|
-
abort "#{version} is already installed." if version_include?(version)
|
20
|
-
return true
|
21
|
-
end
|
22
|
-
|
23
|
-
def has_version?(version = get_version)
|
24
|
-
abort "#{version} is not installed." unless version_include?(version)
|
25
|
-
return true
|
26
|
-
end
|
27
|
-
|
28
|
-
private
|
29
|
-
|
30
|
-
def get_version
|
31
|
-
version_regex = /\Av7-.+\z|\A(\d\.\d(a|b){0,1}(\.\d+){0,1})\z/
|
32
|
-
regex = /(\Astart\z|\Atip\z|\Asystem\z|\Alatest\z|#{version_regex})/
|
33
|
-
version = $*.find { |v| v =~ regex }
|
34
|
-
return Version.format(version)
|
35
|
-
end
|
36
|
-
|
37
|
-
def version_include?(version)
|
38
|
-
return Version.versions.include?(version) || use_system?(version)
|
39
|
-
end
|
40
|
-
|
41
|
-
def use_system?(version)
|
42
|
-
return version == 'system' && $*.include?('use')
|
43
|
-
end
|
44
|
-
end
|
data/lib/vvm-rb/version.rb
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
class Version
|
2
|
-
def self.list
|
3
|
-
Dir.chdir(get_vimorg_dir) do
|
4
|
-
list = `hg tags`.split.reverse
|
5
|
-
return list.values_at(* list.each_index.select { |i| i.odd? })
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
def self.versions
|
10
|
-
output = []
|
11
|
-
vims_dir = get_vims_dir
|
12
|
-
return output unless File.exist?(vims_dir)
|
13
|
-
Dir.glob(File.join(vims_dir, 'v*')).sort.each do |d|
|
14
|
-
output << File.basename(d)
|
15
|
-
end
|
16
|
-
return output
|
17
|
-
end
|
18
|
-
|
19
|
-
def self.latest
|
20
|
-
return list.select { |v| v =~ /\Av7-.+\z/ }.last
|
21
|
-
end
|
22
|
-
|
23
|
-
def self.current
|
24
|
-
c = get_current_dir
|
25
|
-
return File.exist?(c) ? File.basename(File.readlink(c)) : 'system'
|
26
|
-
end
|
27
|
-
|
28
|
-
def self.convert(version)
|
29
|
-
return "v#{version.gsub(/\./, '-')}"
|
30
|
-
end
|
31
|
-
|
32
|
-
def self.format(version)
|
33
|
-
case version
|
34
|
-
when /\Alatest\z/
|
35
|
-
version = latest
|
36
|
-
when /\A(\d\.\d(a|b){0,1}(\.\d+){0,1})\z/
|
37
|
-
version = convert(version)
|
38
|
-
end
|
39
|
-
return version
|
40
|
-
end
|
41
|
-
end
|
data/lib/vvm-rb.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
require 'vvm-rb/base'
|
2
|
-
require 'vvm-rb/constants'
|
3
|
-
require 'vvm-rb/installer'
|
4
|
-
require 'vvm-rb/uninstaller'
|
5
|
-
require 'vvm-rb/switcher'
|
6
|
-
require 'vvm-rb/validator'
|
7
|
-
require 'vvm-rb/accesser'
|
8
|
-
require 'vvm-rb/version'
|
9
|
-
|
10
|
-
module VvmRb
|
11
|
-
include Accesser
|
12
|
-
include Validator
|
13
|
-
end
|
data/spec/accesser_spec.rb
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe 'Accesser' do
|
4
|
-
it 'can access vvm-rb home directory' do
|
5
|
-
expect(File.exist?(get_dot_dir)).to be_true
|
6
|
-
end
|
7
|
-
|
8
|
-
it 'can access etc directory' do
|
9
|
-
expect(File.exist?(get_etc_dir)).to be_true
|
10
|
-
end
|
11
|
-
|
12
|
-
it 'can access repos directory' do
|
13
|
-
expect(File.exist?(get_repos_dir)).to be_true
|
14
|
-
end
|
15
|
-
|
16
|
-
it 'can access src directory' do
|
17
|
-
expect(File.exist?(get_src_dir)).to be_true
|
18
|
-
end
|
19
|
-
|
20
|
-
it 'can access vims directory' do
|
21
|
-
expect(File.exist?(get_vims_dir)).to be_true
|
22
|
-
end
|
23
|
-
|
24
|
-
it 'can access vimorg directory' do
|
25
|
-
expect(File.exist?(get_vimorg_dir)).to be_true
|
26
|
-
end
|
27
|
-
|
28
|
-
it 'can access login file' do
|
29
|
-
expect(File.exist?(get_login_file)).to be_true
|
30
|
-
end
|
31
|
-
|
32
|
-
context 'of current directory' do
|
33
|
-
before { Switcher.new(VERSION1).use }
|
34
|
-
after { Switcher.new('system').use }
|
35
|
-
|
36
|
-
it 'can access current directory' do
|
37
|
-
expect(File.exist?(get_current_dir)).to be_true
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|