vimpk 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3352cab20c957f4b4fc580b6d9f2f0c91d0021cac3713ab6294111192ce5167d
4
- data.tar.gz: 1044a2130c51433400d29c970be3e841d86469ab7dd5ddfeab615b3115a88626
3
+ metadata.gz: 8d6e8ca14353f2e289dcf72b6049f1f694b7277ca702c48e95526a3bbc736a7a
4
+ data.tar.gz: efddf087e1596aa801a174dd30242bcf72913aeac50ba443976f7f0c5b64111a
5
5
  SHA512:
6
- metadata.gz: 31a0432618e7f85059b10d25b7aa2034ed18bf64b077b04665e08ae8f216402a8195a343ea53767911232af0908d7e2043e8ea3e8d234a81dbda53badac9f53f
7
- data.tar.gz: 6ed9798aedf9bfd255abffe3d93acb6d9aa5e3378c2462a4be569b55b10bc40b840cf8d3242a04fcd2f61098dc99cdfcf5d6b6fd68c245163170c6dea6071453
6
+ metadata.gz: 78c8fbb9298b12bce49f149507c7b89b7f2437b2942f53320f42e0c79fc63843ef83e565f0cbfc716657669f19c04b2150715aa8e8a60ed959cbca410065f7df
7
+ data.tar.gz: 575726746604f123e148bee44fc9c001222df4d7dfa9bf7cb092021a08e34aadd522c23d2b949ba383c9d86dbd5cfd2c4e1891ee775ac27d0e3b6797d23d4cc5
data/lib/vimpk/cli.rb CHANGED
@@ -19,6 +19,7 @@ module VimPK
19
19
  def call
20
20
  if @command
21
21
  send(@command, *@argv)
22
+ exit 0
22
23
  else
23
24
  puts @parser.parser
24
25
  end
@@ -37,6 +38,8 @@ module VimPK
37
38
  case name
38
39
  when "i", "install"
39
40
  :install_command
41
+ when "l", "list"
42
+ :list_command
40
43
  when "mv", "move"
41
44
  :move_command
42
45
  when "u", "update"
@@ -49,12 +52,18 @@ module VimPK
49
52
  end
50
53
  end
51
54
 
55
+ def list_command
56
+ command = List.new(@options)
57
+ list = command.call
58
+ puts list.sort_by(&:downcase)
59
+ end
60
+
52
61
  def install_command(package = nil)
53
62
  time = Time.now
54
- install = Install.new(package, @options[:path], @options[:pack], @options[:type])
55
- puts "Installing #{package} to #{install.dest}…"
56
- install.call
57
- puts colorize("Installed #{package} to #{install.dest}. Took #{Time.now - time} seconds.", color: :green)
63
+ command = Install.new(package, @options)
64
+ puts "Installing #{package} to #{command.dest}…"
65
+ command.call
66
+ puts colorize("Installed #{package} to #{command.dest}. Took #{Time.now - time} seconds.", color: :green)
58
67
  rescue Git::GitError => e
59
68
  warn colorize("Error: #{e.message}", color: :yellow)
60
69
  abort e.output.lines.map { |line| " #{line}" }.join
@@ -65,27 +74,27 @@ module VimPK
65
74
  end
66
75
 
67
76
  def move_command(name = nil)
68
- move = Move.new(name, @options[:path], @options[:pack], @options[:type])
69
- move.call
70
- puts colorize("Moved #{name} to #{move.dest}.", color: :green)
77
+ command = Move.new(name, @options)
78
+ command.call
79
+ puts colorize("Moved #{name} to #{command.dest}.", color: :green)
71
80
  rescue Move::PackageNotFoundError, Move::MultiplePackagesFoundError, ArgumentError => e
72
81
  abort colorize(e.message, color: :red)
73
82
  end
74
83
 
75
84
  def update_command
76
- update = Update.new(@options[:path])
77
- puts "Updating #{update.plugins.size} packages in #{@options[:path]}…"
85
+ command = Update.new(@options)
86
+ puts "Updating #{command.plugins.size} packages in #{@options[:path]}…"
78
87
  start_time = Time.now
79
- update.call
88
+ command.call
80
89
 
81
90
  statuses = {}
82
91
 
83
- while (log = update.logs.pop)
92
+ while (log = command.logs.pop)
84
93
  basename = log[:basename]
85
94
  statuses[basename] = log[:log]
86
95
  end
87
96
 
88
- basenames = update.plugins.map { |dir| File.basename(dir) }.sort_by(&:downcase)
97
+ basenames = command.plugins.map { |dir| File.basename(dir) }.sort_by(&:downcase)
89
98
 
90
99
  max_name_length = statuses.keys.map(&:length).max
91
100
 
@@ -97,11 +106,11 @@ module VimPK
97
106
  end
98
107
  end
99
108
 
100
- if statuses.size < update.jobs.size
101
- puts "The remaining #{update.jobs.size - statuses.size} plugins are up to date."
109
+ if statuses.size < command.jobs.size
110
+ puts "The remaining #{command.jobs.size - statuses.size} plugins are up to date."
102
111
  end
103
112
 
104
- puts colorize("Finished updating #{update.jobs.size} plugins. Took #{Time.now - start_time} seconds.")
113
+ puts colorize("Finished updating #{command.jobs.size} plugins. Took #{Time.now - start_time} seconds.")
105
114
 
106
115
  if statuses.size.nonzero?
107
116
  print "Display diffs? (Y/n) "
@@ -120,7 +129,7 @@ module VimPK
120
129
  end
121
130
 
122
131
  def remove_command(name = nil)
123
- Remove.new(name, @options[:path]).call
132
+ Remove.new(name, @options).call
124
133
 
125
134
  puts colorize("Package #{name} removed.", color: :green)
126
135
  rescue ArgumentError, VimPK::Remove::PackageNotFoundError => e
data/lib/vimpk/install.rb CHANGED
@@ -6,11 +6,11 @@ module VimPK
6
6
 
7
7
  attr_reader :dest
8
8
 
9
- def initialize(package, path, pack, type)
9
+ def initialize(package, options)
10
10
  @package = package || raise(ArgumentError, "Package name is required")
11
- @path = path
12
- @pack = pack
13
- @type = type
11
+ @path = options.path
12
+ @pack = options.pack || options.default_pack
13
+ @type = options.type || options.default_type
14
14
  @dest = File.join(@path, @pack, @type, File.basename(@package))
15
15
  @source = "https://github.com/#{package}.git"
16
16
  @git = Git
data/lib/vimpk/list.rb ADDED
@@ -0,0 +1,24 @@
1
+ require "fileutils"
2
+
3
+ module VimPK
4
+ class List
5
+ PackageNotFoundError = Class.new(StandardError)
6
+
7
+ attr_reader :dest
8
+
9
+ def initialize(options)
10
+ @path = options.path
11
+ @pack = options.pack || "*"
12
+ @type = options.type || "{start,opt}"
13
+ end
14
+
15
+ def call
16
+ pattern = File.join(@path, @pack, @type, "*")
17
+ glob = Dir.glob(pattern)
18
+
19
+ raise PackageNotFoundError, "No packages were found in #{pattern}." if glob.empty?
20
+
21
+ glob
22
+ end
23
+ end
24
+ end
data/lib/vimpk/move.rb CHANGED
@@ -7,12 +7,12 @@ module VimPK
7
7
 
8
8
  attr_reader :dest
9
9
 
10
- def initialize(name, path, pack = nil, type = nil)
10
+ def initialize(name, options)
11
11
  @name = name || raise(ArgumentError, "Package name is required")
12
12
  raise ArgumentError, "New pack or type is required" unless pack || type
13
- @path = path
14
- @pack = pack
15
- @type = type
13
+ @path = options.path
14
+ @pack = options.pack
15
+ @type = options.type
16
16
  end
17
17
 
18
18
  def call
data/lib/vimpk/options.rb CHANGED
@@ -10,11 +10,11 @@ module VimPK
10
10
  DEFAULT_TYPE = "start"
11
11
  DEFAULT_PACK = "plugins"
12
12
 
13
- DefaultOptions = Struct.new(:path, :pack, :type)
13
+ DefaultOptions = Struct.new(:path, :pack, :type, :default_pack, :default_type)
14
14
 
15
15
  def initialize(argv)
16
16
  @argv = argv
17
- @options = DefaultOptions.new(DEFAULT_PATH, DEFAULT_PACK, DEFAULT_TYPE)
17
+ @options = DefaultOptions.new(DEFAULT_PATH, nil, nil, DEFAULT_PACK, DEFAULT_TYPE)
18
18
 
19
19
  @parser = OptionParser.new do |parser|
20
20
  parser.banner = "Usage: #{parser.program_name} [options] [command [options]"
@@ -54,7 +54,8 @@ module VimPK
54
54
  parser.separator ""
55
55
  parser.separator "Commands:"
56
56
  parser.separator " i|install REPO/NAME [--opt|--start] [--pack=PATH] [--path=PATH] Install a package"
57
- parser.separator " mv|move Move a package"
57
+ parser.separator " l|list [--opt|--start] [--pack=PATH] [--path=PATH] List packages"
58
+ parser.separator " mv|move NAME [--opt|--start] [--pack=PATH] Move a package"
58
59
  parser.separator " u|update Update all packages"
59
60
  parser.separator " rm|remove NAME Remove all occurrences of a package"
60
61
  end
data/lib/vimpk/remove.rb CHANGED
@@ -4,9 +4,9 @@ module VimPK
4
4
  class Remove
5
5
  PackageNotFoundError = Class.new(StandardError)
6
6
 
7
- def initialize(name, path)
7
+ def initialize(name, options)
8
8
  @name = name || raise(ArgumentError, "Package name is required")
9
- @path = path
9
+ @path = options.path
10
10
  end
11
11
 
12
12
  def call
data/lib/vimpk/update.rb CHANGED
@@ -4,8 +4,8 @@ module VimPK
4
4
 
5
5
  attr_reader :jobs, :logs, :plugins
6
6
 
7
- def initialize(path)
8
- @pack_dir = File.expand_path(path)
7
+ def initialize(options)
8
+ @pack_dir = File.expand_path(options.path)
9
9
  @logs = Queue.new
10
10
  @pool = ThreadPool.new
11
11
  @plugins = Dir.glob(File.join(@pack_dir, "*", "{start,opt}", "*", ".git")).sort.map(&File.method(:dirname))
data/lib/vimpk/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module VimPK
4
- VERSION = "0.3.0"
4
+ VERSION = "0.4.0"
5
5
  end
data/lib/vimpk.rb CHANGED
@@ -15,6 +15,7 @@ module VimPK
15
15
  autoload :Git, "vimpk/git"
16
16
  autoload :Install, "vimpk/install"
17
17
  autoload :Job, "vimpk/job"
18
+ autoload :List, "vimpk/list"
18
19
  autoload :Move, "vimpk/move"
19
20
  autoload :Options, "vimpk/options"
20
21
  autoload :Remove, "vimpk/remove"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vimpk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Usewicz
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-03-16 00:00:00.000000000 Z
11
+ date: 2024-03-17 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email:
@@ -27,6 +27,7 @@ files:
27
27
  - lib/vimpk/git.rb
28
28
  - lib/vimpk/install.rb
29
29
  - lib/vimpk/job.rb
30
+ - lib/vimpk/list.rb
30
31
  - lib/vimpk/move.rb
31
32
  - lib/vimpk/options.rb
32
33
  - lib/vimpk/remove.rb