vvm-rb 0.2.2 → 1.0.0
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.
- 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
|