vimpack 0.0.1
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.
- data/.autotest +13 -0
- data/.gitignore +6 -0
- data/.rspec +2 -0
- data/.rvmrc +1 -0
- data/Gemfile +2 -0
- data/LICENSE +21 -0
- data/README.md +47 -0
- data/Rakefile +5 -0
- data/autotest/discover.rb +2 -0
- data/bin/vimpack +103 -0
- data/cucumber.yml +13 -0
- data/features/commands/environments.feature +26 -0
- data/features/commands/git.feature +77 -0
- data/features/commands/info.feature +28 -0
- data/features/commands/init.feature +47 -0
- data/features/commands/install.feature +50 -0
- data/features/commands/list.feature +18 -0
- data/features/commands/search.feature +137 -0
- data/features/commands/uninstall.feature +46 -0
- data/features/step_definitions/environment_steps.rb +3 -0
- data/features/step_definitions/file_utils_steps.rb +36 -0
- data/features/step_definitions/initialize_steps.rb +14 -0
- data/features/step_definitions/output_steps.rb +12 -0
- data/features/step_definitions/vimpack_git_steps.rb +91 -0
- data/features/support/env.rb +11 -0
- data/features/support/executable_paths.rb +15 -0
- data/lib/vimpack/commands/command.rb +46 -0
- data/lib/vimpack/commands/git.rb +32 -0
- data/lib/vimpack/commands/info.rb +26 -0
- data/lib/vimpack/commands/init.rb +23 -0
- data/lib/vimpack/commands/install.rb +35 -0
- data/lib/vimpack/commands/list.rb +14 -0
- data/lib/vimpack/commands/search.rb +37 -0
- data/lib/vimpack/commands/uninstall.rb +27 -0
- data/lib/vimpack/commands.rb +8 -0
- data/lib/vimpack/models/apibase.rb +7 -0
- data/lib/vimpack/models/base.rb +29 -0
- data/lib/vimpack/models/repo.rb +117 -0
- data/lib/vimpack/models/script.rb +110 -0
- data/lib/vimpack/models.rb +8 -0
- data/lib/vimpack/utils/api.rb +39 -0
- data/lib/vimpack/utils/file.rb +66 -0
- data/lib/vimpack/utils/file_path.rb +25 -0
- data/lib/vimpack/utils/git.rb +103 -0
- data/lib/vimpack/utils/github.rb +41 -0
- data/lib/vimpack/utils/io.rb +26 -0
- data/lib/vimpack/utils/process.rb +61 -0
- data/lib/vimpack/utils/vimscripts.rb +64 -0
- data/lib/vimpack/version.rb +4 -0
- data/lib/vimpack.rb +46 -0
- data/simplecov_setup.rb +5 -0
- data/spec/spec_helper.rb +32 -0
- data/spec/vimpack/models/repo_spec.rb +150 -0
- data/spec/vimpack/models/script_spec.rb +230 -0
- data/spec/vimpack/utils/github_spec.rb +39 -0
- data/spec/vimpack/utils/vimscripts_spec.rb +38 -0
- data/tasks/cucumber.rake +8 -0
- data/tasks/default.rake +2 -0
- data/tasks/rspec.rake +5 -0
- data/templates/vimrc.erb +6 -0
- data/vimpack.gemspec +42 -0
- metadata +333 -0
@@ -0,0 +1,36 @@
|
|
1
|
+
def check_git_repo(path)
|
2
|
+
prep_for_fs_check do
|
3
|
+
res = %x{ cd #{path} ; git status ; cd - }
|
4
|
+
res.should_not match(/Not a git repo/)
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
def check_git_submodule(submodule, repo)
|
9
|
+
name = submodule.split('/')[-1]
|
10
|
+
prep_for_fs_check do
|
11
|
+
res = %x{ cd #{repo} ; git submodule ; cd - }
|
12
|
+
res.should match(/#{name}/)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
Then /^a directory named "([^"]*)" should exist and be a git repo$/ do |directory|
|
17
|
+
check_directory_presence([directory], true)
|
18
|
+
check_git_repo(directory)
|
19
|
+
end
|
20
|
+
|
21
|
+
Then /^a symlink named "([^"]*)" should exist and link to "([^"]*)"$/ do |link, target|
|
22
|
+
File.should exist(File.join(@dirs, link))
|
23
|
+
require 'pathname'
|
24
|
+
Pathname.new(File.join(@dirs, link)).realpath.to_s.gsub('/private', '').should == File.join(@dirs, target)
|
25
|
+
end
|
26
|
+
|
27
|
+
Then /^a symlink named "([^"]*)" should not exist$/ do |link|
|
28
|
+
File.exists?(File.join(@dirs, link)).should be_false
|
29
|
+
end
|
30
|
+
|
31
|
+
Then /^a directory named "([^"]*)" should exist and be a git submodule of "([^"]*)"$/ do |submodule, repo|
|
32
|
+
check_directory_presence([repo], true)
|
33
|
+
check_directory_presence([submodule], true)
|
34
|
+
check_git_submodule(submodule, repo)
|
35
|
+
end
|
36
|
+
|
@@ -0,0 +1,14 @@
|
|
1
|
+
Given /^an initialized vimpack in "([^"]*)"$/ do |homedir|
|
2
|
+
steps %Q{
|
3
|
+
Given a directory named "#{homedir}/.vim"
|
4
|
+
And an empty file named "#{homedir}/.vimrc"
|
5
|
+
And "#{homedir}" is my home directory
|
6
|
+
When I run `vimpack -e development init`
|
7
|
+
Then the output should contain "vimpack initialized!"
|
8
|
+
}
|
9
|
+
end
|
10
|
+
|
11
|
+
Given /^"([^"]*)" is already installed$/ do |script_name|
|
12
|
+
steps %Q{ Given I run `vimpack -e development install #{script_name}` }
|
13
|
+
end
|
14
|
+
|
@@ -0,0 +1,91 @@
|
|
1
|
+
def check_vimpack_remote(remote_name, url)
|
2
|
+
prep_for_fs_check do
|
3
|
+
res = %x{ cd test_vimpack/.vimpack ; git config -l ; cd - }
|
4
|
+
res.should match(/remote.#{Regexp.escape(remote_name)}.url=#{Regexp.escape(url)}/)
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
def check_vimpack_last_commit_log(message)
|
9
|
+
prep_for_fs_check do
|
10
|
+
res = %x{ cd test_vimpack/.vimpack ; git log -1 ; cd - }
|
11
|
+
res.should match(/#{Regexp.escape(message)}/)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def check_vimpack_status
|
16
|
+
prep_for_fs_check do
|
17
|
+
res = %x{ cd test_vimpack/.vimpack ; git status ; cd - }
|
18
|
+
res.should match(/#{Regexp.escape('nothing to commit')}/)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def initialize_git_repo(path)
|
23
|
+
prep_for_fs_check do
|
24
|
+
@full_path = File.join(File.expand_path(FileUtils.pwd), @path)
|
25
|
+
end
|
26
|
+
FileUtils.rmtree(@full_path).should be_true if File::directory?(@full_path)
|
27
|
+
FileUtils.mkdir(@full_path).should be_true
|
28
|
+
res = %x( git init --bare #{@full_path} )
|
29
|
+
$?.should eq(0)
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
Then /^the vimpack git remote "([^"]*)" should be "([^"]*)"$/ do |remote_name, url|
|
34
|
+
check_vimpack_remote(remote_name, url)
|
35
|
+
end
|
36
|
+
|
37
|
+
Then /^the vimpack git commit logs last message should be "([^"]*)"$/ do |message|
|
38
|
+
check_vimpack_last_commit_log(message)
|
39
|
+
end
|
40
|
+
|
41
|
+
Then /^the vimpack git status should be empty$/ do
|
42
|
+
check_vimpack_status
|
43
|
+
end
|
44
|
+
|
45
|
+
Given /^an initialized git repo in "([^"]*)"$/ do |path|
|
46
|
+
@path = path
|
47
|
+
@full_path = nil
|
48
|
+
initialize_git_repo(@path)
|
49
|
+
end
|
50
|
+
|
51
|
+
Given /^an existing git repo in "([^"]*)"$/ do |path|
|
52
|
+
steps %Q{
|
53
|
+
Given an initialized git repo in "#{path}"
|
54
|
+
And I run `vimpack -e development git remote add origin /tmp/aruba/#{path}`
|
55
|
+
When I run `vimpack -e development git publish -m '[TEST] testing vimpack'`
|
56
|
+
Then the exit status should be 0
|
57
|
+
And the output should contain:
|
58
|
+
"""
|
59
|
+
* publishing vimpack repo
|
60
|
+
vimpack repo published!
|
61
|
+
"""
|
62
|
+
And the vimpack git remote "origin" should be "/tmp/aruba/#{path}"
|
63
|
+
}
|
64
|
+
end
|
65
|
+
|
66
|
+
Given /^an initialized vimpack in "([^"]*)" from remote "([^"]*)"$/ do |homedir, remote_path|
|
67
|
+
steps %Q{
|
68
|
+
Given a directory named "#{homedir}/.vim"
|
69
|
+
And an empty file named "#{homedir}/.vimrc"
|
70
|
+
And "#{homedir}" is my home directory
|
71
|
+
When I run `vimpack -e development init /tmp/aruba/#{remote_path}`
|
72
|
+
Then the exit status should be 0
|
73
|
+
And the output should contain "vimpack initialized!"
|
74
|
+
And the vimpack git remote "origin" should be "/tmp/aruba/#{remote_path}"
|
75
|
+
}
|
76
|
+
end
|
77
|
+
|
78
|
+
Given /^an initialized vimpack in "([^"]*)" that is out of sync with its remote$/ do |path|
|
79
|
+
steps %Q{
|
80
|
+
Given an initialized vimpack in "#{path}"
|
81
|
+
And "rails.vim" is already installed
|
82
|
+
And an existing git repo in "vimpack-repo"
|
83
|
+
And an initialized vimpack in "test_vimpack_remoted" from remote "vimpack-repo"
|
84
|
+
And "#{path}" is my home directory
|
85
|
+
And "cucumber.zip" is already installed
|
86
|
+
And I run `vimpack -e development git publish -m '[CUKE] added cucumber.zip'`
|
87
|
+
And "test_vimpack_remoted" is my home directory
|
88
|
+
And "haml.zip" is already installed
|
89
|
+
}
|
90
|
+
end
|
91
|
+
|
@@ -0,0 +1,11 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__), '..', '..', 'lib')
|
2
|
+
require 'vimpack'
|
3
|
+
require 'cucumber/formatter/unicode' # Remove this line if you don't want Cucumber Unicode support
|
4
|
+
require 'aruba/cucumber'
|
5
|
+
|
6
|
+
Before do
|
7
|
+
FileUtils.rmtree('/tmp/aruba')
|
8
|
+
@dirs = ["/tmp/aruba"]
|
9
|
+
@aruba_timeout_seconds = 60
|
10
|
+
end
|
11
|
+
|
@@ -0,0 +1,15 @@
|
|
1
|
+
#module ArubaOverrides
|
2
|
+
# def detect_ruby_script(cmd)
|
3
|
+
# puts "CMD IS: #{cmd}"
|
4
|
+
# if cmd =~ /^vimpack /
|
5
|
+
# lib_path = File.join(File.dirname(__FILE__), '..', '..', 'lib')
|
6
|
+
# cmd_path = File.join(File.dirname(__FILE__), '..', '..', 'bin', cmd)
|
7
|
+
# puts "RUNNING VIMPACK!"
|
8
|
+
# "ruby -I#{lib_path} -S #{cmd_path}"
|
9
|
+
# else
|
10
|
+
# super(cmd)
|
11
|
+
# end
|
12
|
+
# end
|
13
|
+
#end
|
14
|
+
#
|
15
|
+
#World(ArubaOverrides)
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module Vimpack
|
2
|
+
module Commands
|
3
|
+
class Command
|
4
|
+
include ::Vimpack::Utils::File
|
5
|
+
include ::Vimpack::Utils::Io
|
6
|
+
include ::Vimpack::Utils::Git
|
7
|
+
include ::Vimpack::Utils::Process
|
8
|
+
|
9
|
+
def initialize(options, global_options)
|
10
|
+
@options = options
|
11
|
+
@global_options = global_options
|
12
|
+
@commands = ARGV
|
13
|
+
setup_paths(@options[:home_directory] || ENV['HOME'])
|
14
|
+
initialize_environment
|
15
|
+
initialize_global_options
|
16
|
+
initialize_options
|
17
|
+
initialize_commands
|
18
|
+
end
|
19
|
+
|
20
|
+
def initialize_environment
|
21
|
+
Vimpack.environment = @global_options[:environment].to_sym
|
22
|
+
unless Vimpack.env?('production')
|
23
|
+
say(" * using environment #{Vimpack.environment.inspect}")
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def initialize_global_options
|
28
|
+
end
|
29
|
+
|
30
|
+
def initialize_options
|
31
|
+
end
|
32
|
+
|
33
|
+
def initialize_commands
|
34
|
+
end
|
35
|
+
|
36
|
+
def run
|
37
|
+
raise NotImplemented
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.run(options = Hash.new, commands = Hash.new)
|
41
|
+
new(options, commands).run
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Vimpack
|
2
|
+
module Commands
|
3
|
+
class Git < Command
|
4
|
+
SUB_COMMANDS = %w{ publish }
|
5
|
+
|
6
|
+
def initialize_commands
|
7
|
+
die!("git requires at least one argument") if @commands.size < 1
|
8
|
+
@subcommand = @commands.shift
|
9
|
+
end
|
10
|
+
|
11
|
+
def run
|
12
|
+
return git_exec unless SUB_COMMANDS.include?(@subcommand)
|
13
|
+
send("git_#{@subcommand}".to_sym)
|
14
|
+
end
|
15
|
+
|
16
|
+
def git_publish
|
17
|
+
say(" * publishing vimpack repo")
|
18
|
+
Vimpack::Models::Repo.publish!(@options[:message])
|
19
|
+
say("vimpack repo published!")
|
20
|
+
end
|
21
|
+
|
22
|
+
def git_exec
|
23
|
+
say(" * running git #{@subcommand} #{@commands.join(' ')}")
|
24
|
+
command = Vimpack::Models::Repo.git_exec(@subcommand, @commands)
|
25
|
+
say("command complete!")
|
26
|
+
say(command.message, :default)
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Vimpack
|
2
|
+
module Commands
|
3
|
+
class Info < Command
|
4
|
+
|
5
|
+
def initialize_commands
|
6
|
+
die!("info requires a single argument") unless @commands.size == 1
|
7
|
+
@script_name = @commands[0]
|
8
|
+
end
|
9
|
+
|
10
|
+
def run
|
11
|
+
begin
|
12
|
+
script = Vimpack::Models::Script.info(@script_name)
|
13
|
+
rescue Vimpack::Models::Script::ScriptNotFound
|
14
|
+
return exit_with_error!('Script not found!')
|
15
|
+
end
|
16
|
+
say("Name: #{script.name}")
|
17
|
+
say("Author: #{script.author}")
|
18
|
+
say("Version: #{script.version} (#{script.version_date})")
|
19
|
+
say("Type: #{script.type}")
|
20
|
+
say("Description: #{script.description}")
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Vimpack
|
2
|
+
module Commands
|
3
|
+
class Init < Command
|
4
|
+
def initialize_commands
|
5
|
+
die!("init takes a single optional argument") if @commands.size > 1
|
6
|
+
@repo_url = @commands.size == 1 ? @commands[0] : nil
|
7
|
+
end
|
8
|
+
|
9
|
+
def run
|
10
|
+
say(start_message)
|
11
|
+
Vimpack::Models::Repo.initialize!(@repo_url)
|
12
|
+
say('vimpack initialized!')
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def start_message
|
18
|
+
" * initializing vimpack repo#{@repo_url.nil? ? '' : " from #{@repo_url}"}"
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Vimpack
|
2
|
+
module Commands
|
3
|
+
class Install < Command
|
4
|
+
|
5
|
+
def initialize_commands
|
6
|
+
die!("install requires at least one script name argument") unless @commands.size >= 0
|
7
|
+
@script_names = @commands
|
8
|
+
end
|
9
|
+
|
10
|
+
def run
|
11
|
+
@script_names.each do |script_name|
|
12
|
+
begin
|
13
|
+
script = Vimpack::Models::Script.get(script_name)
|
14
|
+
rescue Vimpack::Models::Script::ScriptNotFound
|
15
|
+
exit_with_did_you_mean!(script_name)
|
16
|
+
end
|
17
|
+
say(" * installing #{script.name}")
|
18
|
+
script.install!
|
19
|
+
say("#{script.name} (#{script.version}) installed!")
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def exit_with_did_you_mean!(script_name)
|
26
|
+
possible = Vimpack::Models::Script.search(script_name).first rescue nil
|
27
|
+
return possible.nil? ?
|
28
|
+
exit_with_error!('Script not found!') :
|
29
|
+
exit_with_error!("Script not found! Did you mean #{possible.name}?")
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Vimpack
|
2
|
+
module Commands
|
3
|
+
class Search < Command
|
4
|
+
|
5
|
+
def initialize_options
|
6
|
+
@conditions = Vimpack::Models::Script::SCRIPT_TYPES.map.inject([]) do |conditions, script_type|
|
7
|
+
conditions << script_type if @options[script_type.gsub(' ', '_').to_sym]
|
8
|
+
conditions
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def initialize_commands
|
13
|
+
die!("search requires a single argument") unless (@commands.size == 1 || !@conditions.empty?)
|
14
|
+
@pattern = @commands[0] if @commands.size >= 1
|
15
|
+
end
|
16
|
+
|
17
|
+
def run
|
18
|
+
scripts = Vimpack::Models::Script.search(@pattern, @conditions)
|
19
|
+
return exit_with_error!('No scripts found!', 0) if scripts.empty?
|
20
|
+
say_justified_script_names(scripts)
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def say_justified_script_names(scripts)
|
26
|
+
linesize = scripts.sort do |a,b|
|
27
|
+
a.name.size <=> b.name.size
|
28
|
+
end.reverse.first.name.size + 1
|
29
|
+
scripts.each do |script|
|
30
|
+
say("#{script.name.ljust(linesize)} #{script.type}")
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Vimpack
|
2
|
+
module Commands
|
3
|
+
class Uninstall < Command
|
4
|
+
|
5
|
+
def initialize_commands
|
6
|
+
die!("uninstall requires at least one script name argument") unless @commands.size >= 0
|
7
|
+
@script_names = @commands
|
8
|
+
end
|
9
|
+
|
10
|
+
def run
|
11
|
+
@script_names.each do |script_name|
|
12
|
+
begin
|
13
|
+
script = ::Vimpack::Models::Script.get(script_name)
|
14
|
+
return exit_with_error!('Script not found!') unless file_exists?(script.install_path)
|
15
|
+
rescue ::Vimpack::Models::Script::ScriptNotFound
|
16
|
+
return exit_with_error!('Script not found!')
|
17
|
+
end
|
18
|
+
say(" * uninstalling #{script.name}")
|
19
|
+
script.uninstall!
|
20
|
+
say("#{script.name} uninstalled!")
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
@@ -0,0 +1,8 @@
|
|
1
|
+
require 'vimpack/commands/command'
|
2
|
+
require 'vimpack/commands/init'
|
3
|
+
require 'vimpack/commands/search'
|
4
|
+
require 'vimpack/commands/install'
|
5
|
+
require 'vimpack/commands/uninstall'
|
6
|
+
require 'vimpack/commands/list'
|
7
|
+
require 'vimpack/commands/info'
|
8
|
+
require 'vimpack/commands/git'
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Vimpack
|
2
|
+
module Models
|
3
|
+
|
4
|
+
class Base
|
5
|
+
class << self
|
6
|
+
|
7
|
+
include ::Vimpack::Utils::File
|
8
|
+
include ::Vimpack::Utils::Git
|
9
|
+
|
10
|
+
attr_reader :attributes
|
11
|
+
def attributes(*attribute_names)
|
12
|
+
return @attributes if attribute_names.empty?
|
13
|
+
attribute_names = attribute_names.map(&:to_sym)
|
14
|
+
@attributes = attribute_names
|
15
|
+
attr_accessor *attribute_names
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
setup_paths(ENV['HOME'])
|
20
|
+
|
21
|
+
def initialize(attributes = Hash.new)
|
22
|
+
attributes.each do |name, value|
|
23
|
+
send("#{name}=".to_sym, value)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,117 @@
|
|
1
|
+
module Vimpack
|
2
|
+
module Models
|
3
|
+
|
4
|
+
class Repo < Base
|
5
|
+
class AlreadyInitialized < StandardError ; end
|
6
|
+
class NotInitialized < StandardError ; end
|
7
|
+
class OriginRemoteUnset < StandardError ; end
|
8
|
+
|
9
|
+
class << self
|
10
|
+
include ::Vimpack::Utils::File
|
11
|
+
include ::Vimpack::Utils::Git
|
12
|
+
|
13
|
+
def initialize!(repo_url=nil)
|
14
|
+
raise_if_initialized!
|
15
|
+
@repo_url = repo_url
|
16
|
+
backup_existing_vim_environment
|
17
|
+
@repo_url.nil? ? initialize_vimpack_repo : initialize_vimpack_remote_repo
|
18
|
+
end
|
19
|
+
|
20
|
+
def initialized?
|
21
|
+
directory_exists?(pack_path.to_s)
|
22
|
+
end
|
23
|
+
|
24
|
+
def raise_if_initialized!
|
25
|
+
raise AlreadyInitialized if initialized?
|
26
|
+
end
|
27
|
+
|
28
|
+
def raise_unless_initialized!
|
29
|
+
raise NotInitialized unless initialized?
|
30
|
+
end
|
31
|
+
|
32
|
+
def publish!(message)
|
33
|
+
raise OriginRemoteUnset unless origin_set?
|
34
|
+
repo_add_dot
|
35
|
+
repo_commit(message)
|
36
|
+
repo_push
|
37
|
+
true
|
38
|
+
end
|
39
|
+
|
40
|
+
def git_exec(subcommand, commands)
|
41
|
+
repo_exec(subcommand, commands)
|
42
|
+
end
|
43
|
+
|
44
|
+
def installed_script_names
|
45
|
+
Dir.glob(script_directories).each.inject([]) do |scripts, script_dir|
|
46
|
+
script_name = ::File.split(script_dir)[-1]
|
47
|
+
scripts << script_name unless script_name == 'pathogen.vim'
|
48
|
+
scripts
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def installed_scripts
|
53
|
+
installed_script_names.each.inject([]) do |scripts, script_name|
|
54
|
+
scripts << Script.info(script_name)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
private
|
59
|
+
def script_directories
|
60
|
+
Script::SCRIPT_TYPES.map do |script_type|
|
61
|
+
script_path.join(script_type.gsub(' ', '_'), '*')
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def origin_set?
|
66
|
+
repo_remote?('origin')
|
67
|
+
end
|
68
|
+
|
69
|
+
def initialize_vimpack_remote_repo
|
70
|
+
repo_clone(@repo_url, self.pack_path.to_s)
|
71
|
+
init_submodule
|
72
|
+
update_submodule
|
73
|
+
link_dot_vim
|
74
|
+
initialize_vimrc
|
75
|
+
end
|
76
|
+
|
77
|
+
def backup_existing_vim_environment
|
78
|
+
move_path(home_path.join('.vim'), home_path.join('.vim.before_vimpack'))
|
79
|
+
move_path(home_path.join('.vimrc'), home_path.join('.vimrc.before_vimpack'))
|
80
|
+
end
|
81
|
+
|
82
|
+
def initialize_vimpack_repo
|
83
|
+
%w{ autoload bundle }.each do |directory|
|
84
|
+
make_dir(vim_path.join(directory))
|
85
|
+
::FileUtils.touch(vim_path.join(directory, '.gitkeep'))
|
86
|
+
end
|
87
|
+
make_dir(script_path.to_s)
|
88
|
+
create_vimpack_repo
|
89
|
+
initialize_pathogen_submodule
|
90
|
+
link_dot_vim
|
91
|
+
initialize_vimrc
|
92
|
+
end
|
93
|
+
|
94
|
+
def link_dot_vim
|
95
|
+
create_link(self.vim_path.to_s, self.home_path.join('.vim'))
|
96
|
+
end
|
97
|
+
|
98
|
+
def initialize_pathogen_submodule
|
99
|
+
Script.get('pathogen.vim').install!(false)
|
100
|
+
create_link(script_path.join('utility', 'pathogen.vim', 'plugin', 'pathogen.vim'),
|
101
|
+
vim_path.join('autoload', 'pathogen.vim'))
|
102
|
+
end
|
103
|
+
|
104
|
+
def create_vimpack_repo
|
105
|
+
init_repo(pack_path)
|
106
|
+
end
|
107
|
+
|
108
|
+
def initialize_vimrc
|
109
|
+
template('vimrc', self.pack_path.join('vimrc')) unless ::File.exists?(self.pack_path.join('vimrc'))
|
110
|
+
create_link(self.pack_path.join('vimrc'), self.home_path.join('.vimrc'))
|
111
|
+
end
|
112
|
+
|
113
|
+
end
|
114
|
+
setup_paths(ENV['HOME'])
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|