Class: Pvim::Plugin

Inherits:
Thor
  • Object
show all
Includes:
Thor::Actions
Defined in:
lib/pvim/plugin.rb

Instance Method Summary collapse

Instance Method Details

#add(url, *urls) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/pvim/plugin.rb', line 31

def add(url, *urls)
  urls.unshift url
  urls.uniq!
  urls.each do |u|
    u = add_github_prefix(u)
    check_url(u)
    inside pvim do
      empty_directory bundle_dir unless Dir.exists?(bundle_dir)
      run "git submodule add #{u.inspect} #{installed_dir(u).inspect}"
    end
  end
end

#listObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/pvim/plugin.rb', line 12

def list
  inside pvim do
    plugins = load_plugins
    plugins = plugins.values
    if plugins.any?
      plugins.sort_by!{ |(name, _, _)| name.downcase } if options[:sort]
      say "Installed plugins:", Color::GREEN
      say
      plugins.unshift [ 'Name', 'Repository URL', 'Installed at' ]
      print_table plugins
      say
      say "Total: #{plugins.size - 1}"
    else
      say "No installed plugins."
    end
  end
end

#remove(url, *urls) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/pvim/plugin.rb', line 45

def remove(url, *urls)
  urls.unshift url
  urls.uniq!
  urls.each do |u|
    u = add_github_prefix(u)
    check_url(u)
    if plugin = find_plugin(u)
      inside pvim do
        empty_directory bundle_dir unless Dir.exists?(bundle_dir)
        path = plugin.last
        submodule = ['submodule', path].join('.')
        run "git submodule deinit -f #{path.inspect}"
        run "git rm -rf #{path.inspect}"
        run "git config -f .gitmodules --remove-section #{submodule.inspect}"
        remove_file File.join('.git', 'modules', path)
      end
    else
      say "#{url} is not installed", Color::RED
    end
  end
end

#updateObject



68
69
70
71
72
73
# File 'lib/pvim/plugin.rb', line 68

def update
  inside pvim do
    empty_directory bundle_dir
    run "git submodule update"
  end
end