vimget 0.1.0 → 0.1.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/README +6 -0
- data/lib/vimget/command.rb +17 -11
- data/lib/vimget/command_manager.rb +12 -9
- data/lib/vimget/commands/list_command.rb +6 -12
- data/lib/vimget/commands/upgrade_command.rb +2 -2
- data/lib/vimget/db.rb +26 -19
- data/lib/vimget/installer.rb +2 -1
- data/lib/vimget.rb +12 -7
- data/test/tc_command.rb +22 -0
- data/test/tc_db.rb +51 -7
- data/test/ts_vimget.rb +2 -1
- metadata +5 -3
data/README
ADDED
data/lib/vimget/command.rb
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
#
|
3
|
-
#
|
3
|
+
# =Base class for command object.
|
4
|
+
# Parse options and invoke inherited execute function
|
4
5
|
#
|
5
|
-
#
|
6
|
+
# Author:: Eddy Xu (mailto:eddyxu@gmail.com)
|
7
|
+
# License:: Distributed under BSD License
|
8
|
+
# Copyright:: Copyright 2008 (c) Quarkare.com (http://www.quarkware.com)
|
6
9
|
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
# Copyright 2008 by xulei.org
|
10
|
-
#
|
11
|
-
# $Id: command.rb 5 2008-04-11 18:33:39Z eddyxu $
|
10
|
+
# $Id: command.rb 8 2008-04-12 12:47:35Z eddyxu $
|
12
11
|
#
|
13
12
|
|
14
13
|
require 'optparse'
|
@@ -16,7 +15,7 @@ require "vimget/configure"
|
|
16
15
|
|
17
16
|
module VimGet
|
18
17
|
|
19
|
-
# base class for all commands
|
18
|
+
# base class for all commands, providing fundamental functions for command
|
20
19
|
class BaseCommand
|
21
20
|
PROGRAM = "vim-get"
|
22
21
|
# the name of command
|
@@ -25,6 +24,7 @@ module VimGet
|
|
25
24
|
# the options for this command
|
26
25
|
attr_reader :options
|
27
26
|
|
27
|
+
# divide options into named groups
|
28
28
|
attr_reader :options_group
|
29
29
|
|
30
30
|
# the default options for the command
|
@@ -53,6 +53,7 @@ module VimGet
|
|
53
53
|
puts @parser
|
54
54
|
end
|
55
55
|
|
56
|
+
# return a argument string
|
56
57
|
def arguments
|
57
58
|
""
|
58
59
|
end
|
@@ -66,6 +67,7 @@ module VimGet
|
|
66
67
|
end
|
67
68
|
end
|
68
69
|
|
70
|
+
# interface for all sub class, must implement this function!
|
69
71
|
def execute
|
70
72
|
raise 'Command without define execute function'
|
71
73
|
end
|
@@ -83,9 +85,9 @@ module VimGet
|
|
83
85
|
end
|
84
86
|
end
|
85
87
|
|
86
|
-
|
87
|
-
|
88
|
-
|
88
|
+
# fetch one argument from argument list
|
89
|
+
def fetch_one_argu
|
90
|
+
@rest.shift
|
89
91
|
end
|
90
92
|
|
91
93
|
private
|
@@ -93,8 +95,12 @@ module VimGet
|
|
93
95
|
def handle_options(args)
|
94
96
|
@rest = parser.parse(*args)
|
95
97
|
@options[:args] = args
|
98
|
+
|
99
|
+
# remove the operation name
|
100
|
+
@rest.shift if @rest.first == @program_name
|
96
101
|
end
|
97
102
|
|
103
|
+
# singleton entry for OptionParser
|
98
104
|
def parser
|
99
105
|
create_parser if @parser.nil?
|
100
106
|
@parser
|
@@ -2,25 +2,26 @@
|
|
2
2
|
#
|
3
3
|
# Command Manager
|
4
4
|
#
|
5
|
-
# Eddy Xu
|
5
|
+
# Author:: Eddy Xu (mailto:eddyxu@gmail.com)
|
6
|
+
# Licence:: Distributed under BSD Licences
|
7
|
+
# Copyright:: Copyright (c) 2008 Quarkware.com
|
6
8
|
#
|
7
|
-
# 2008
|
8
|
-
#
|
9
|
-
# $Id: command_manager.rb 5 2008-04-11 18:33:39Z eddyxu $
|
9
|
+
# $Id: command_manager.rb 8 2008-04-12 12:47:35Z eddyxu $
|
10
10
|
|
11
11
|
require "vimget/exceptions"
|
12
12
|
require "vimget/configure"
|
13
13
|
|
14
14
|
module VimGet
|
15
15
|
|
16
|
+
# This class will find property command and invoke it
|
16
17
|
class CommandManager
|
18
|
+
# singleton entry
|
17
19
|
def self.instance
|
18
20
|
@command_manager ||= CommandManager.new
|
19
21
|
end
|
20
22
|
|
21
|
-
|
22
|
-
|
23
|
-
|
23
|
+
# run the command manager with args
|
24
|
+
# * args is a argument array
|
24
25
|
def run(args)
|
25
26
|
process_args(args)
|
26
27
|
rescue StandardError => ex
|
@@ -31,7 +32,7 @@ module VimGet
|
|
31
32
|
exit 1
|
32
33
|
end
|
33
34
|
|
34
|
-
|
35
|
+
# handle arguments for special command
|
35
36
|
def process_args(args)
|
36
37
|
if ARGV.empty?
|
37
38
|
usage
|
@@ -52,7 +53,7 @@ module VimGet
|
|
52
53
|
cmd_obj.invoke(ARGV.dup)
|
53
54
|
end
|
54
55
|
|
55
|
-
|
56
|
+
# display general usage
|
56
57
|
def usage
|
57
58
|
puts <<-USAGE
|
58
59
|
vim-get: the vim script management tool
|
@@ -86,6 +87,7 @@ module VimGet
|
|
86
87
|
USAGE
|
87
88
|
end
|
88
89
|
|
90
|
+
# display special help informations for command
|
89
91
|
def help(cmd="")
|
90
92
|
if cmd.empty?
|
91
93
|
usage
|
@@ -99,6 +101,7 @@ module VimGet
|
|
99
101
|
exit 1
|
100
102
|
end
|
101
103
|
|
104
|
+
# puts version and runtime info
|
102
105
|
def version
|
103
106
|
puts "vim-get: vim script management tool #{VIMGET_VERSION}"
|
104
107
|
puts
|
@@ -2,7 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# list command
|
4
4
|
#
|
5
|
-
# $Id: list_command.rb
|
5
|
+
# $Id: list_command.rb 7 2008-04-11 22:48:50Z eddyxu $
|
6
6
|
|
7
7
|
require "vimget/command"
|
8
8
|
require "vimget/db.rb"
|
@@ -28,22 +28,16 @@ module VimGet
|
|
28
28
|
|
29
29
|
if @options[:outdated]
|
30
30
|
puts "List outdated scripts"
|
31
|
+
scripts = VimGet.db.outdated_scripts
|
31
32
|
elsif @options[:installed]
|
32
33
|
puts "List installed scripts"
|
34
|
+
scripts = VimGet.db.installed_scripts
|
33
35
|
else
|
34
36
|
puts "List scripts"
|
37
|
+
scripts = VimGet.db.search
|
35
38
|
end
|
36
|
-
|
37
|
-
scripts = VimGet.db.search()
|
38
|
-
|
39
|
-
# Todo: decouple it to output module
|
39
|
+
|
40
40
|
scripts.each do |s|
|
41
|
-
if @options[:outdated] && !s.outdated?
|
42
|
-
next
|
43
|
-
elsif @options[:installed] && !s.installed?
|
44
|
-
next
|
45
|
-
end
|
46
|
-
|
47
41
|
if @options[:format] == "plain"
|
48
42
|
puts "[#{s.name}]"
|
49
43
|
puts "id: #{s.sid}"
|
@@ -63,7 +57,7 @@ module VimGet
|
|
63
57
|
def add_customer_options
|
64
58
|
#add_option(:list, '--xml', 'Display in XML Format') { |v,opts| opts[:format] = "xml" }
|
65
59
|
add_option(:list, '-o', '--outdated', 'List all outdated scripts') {|v,opts| opts[:outdated] = v}
|
66
|
-
add_option(:list, '-i', '--installed', 'List all installed scripts') {|v,
|
60
|
+
add_option(:list, '-i', '--installed', 'List all installed scripts') {|v,opts| opts[:installed] = v}
|
67
61
|
end
|
68
62
|
end
|
69
63
|
|
@@ -8,7 +8,7 @@
|
|
8
8
|
#
|
9
9
|
# Copyright: 2008 (c) Quarkware.com
|
10
10
|
#
|
11
|
-
# $Id: upgrade_command.rb
|
11
|
+
# $Id: upgrade_command.rb 7 2008-04-11 22:48:50Z eddyxu $
|
12
12
|
#
|
13
13
|
|
14
14
|
require "vimget/command"
|
@@ -24,7 +24,7 @@ module VimGet
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def execute
|
27
|
-
outdated_scripts = VimGet.db.
|
27
|
+
outdated_scripts = VimGet.db.outdated_scripts
|
28
28
|
|
29
29
|
if outdated_scripts.empty?
|
30
30
|
puts "There is no script outdated."
|
data/lib/vimget/db.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# manage local script index database
|
4
4
|
#
|
5
|
-
# $Id: db.rb
|
5
|
+
# $Id: db.rb 7 2008-04-11 22:48:50Z eddyxu $
|
6
6
|
|
7
7
|
require "vimget/configure"
|
8
8
|
require "vimget/script"
|
@@ -27,8 +27,7 @@ module VimGet
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def add(script)
|
30
|
-
file_path =
|
31
|
-
file_path = File.expand_path(file_path)
|
30
|
+
file_path = db_file(script)
|
32
31
|
File.open(file_path, 'w') do |f|
|
33
32
|
f.truncate(0)
|
34
33
|
|
@@ -53,7 +52,7 @@ manifest {
|
|
53
52
|
|
54
53
|
def update(script)
|
55
54
|
if script.manifest.empty?
|
56
|
-
filepath =
|
55
|
+
filepath = db_file(script)
|
57
56
|
s = parse_script(filepath)
|
58
57
|
script.manifest = s.manifest if s
|
59
58
|
end
|
@@ -62,8 +61,7 @@ manifest {
|
|
62
61
|
end
|
63
62
|
|
64
63
|
def remove(script)
|
65
|
-
file_path =
|
66
|
-
file_path = File.expand_path(file_path)
|
64
|
+
file_path = db_file(script)
|
67
65
|
File.delete(file_path)
|
68
66
|
end
|
69
67
|
|
@@ -75,30 +73,35 @@ manifest {
|
|
75
73
|
file_list = Dir.glob(glob_pattern)
|
76
74
|
|
77
75
|
ret = Array.new
|
78
|
-
|
76
|
+
|
79
77
|
file_list.each do |f|
|
80
|
-
|
78
|
+
script = parse_script(f)
|
79
|
+
|
80
|
+
if block_given?
|
81
|
+
ret << script if yield(script)
|
82
|
+
else
|
83
|
+
ret << script
|
84
|
+
end
|
81
85
|
end
|
86
|
+
|
82
87
|
ret
|
83
88
|
end
|
84
89
|
|
85
90
|
def find_with_id(sid)
|
86
|
-
search
|
87
|
-
|
91
|
+
s = search { |script| script.sid == sid }
|
92
|
+
s.first
|
88
93
|
end
|
89
94
|
|
90
95
|
def find(name)
|
91
|
-
|
92
|
-
search.each { |s| return s if s.name == name }
|
93
|
-
return nil
|
96
|
+
search(name).first
|
94
97
|
end
|
95
98
|
|
96
|
-
def
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
99
|
+
def outdated_scripts
|
100
|
+
search { |s| s.outdated? }
|
101
|
+
end
|
102
|
+
|
103
|
+
def installed_scripts
|
104
|
+
search { |s| !s.installed.empty? }
|
102
105
|
end
|
103
106
|
|
104
107
|
private
|
@@ -134,6 +137,10 @@ manifest {
|
|
134
137
|
s.author = ctn["author"]
|
135
138
|
return s
|
136
139
|
end
|
140
|
+
|
141
|
+
def db_file(script)
|
142
|
+
File.expand_path(File.join(@db_path, script.name + @@EXT))
|
143
|
+
end
|
137
144
|
end
|
138
145
|
|
139
146
|
end
|
data/lib/vimget/installer.rb
CHANGED
@@ -22,7 +22,8 @@ module VimGet
|
|
22
22
|
# Manage the installing progress and uninstall/upgrading etc
|
23
23
|
def initialize(opts = {})
|
24
24
|
@options = opts
|
25
|
-
|
25
|
+
@dist_path = File.expand_path(VimGet.configure.distfiles_dir)
|
26
|
+
FileUtils.mkdir_p(@dist_path) if not File.exist? @dist_path
|
26
27
|
end
|
27
28
|
|
28
29
|
def install(script)
|
data/lib/vimget.rb
CHANGED
@@ -1,18 +1,22 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
1
|
+
#!/usr/bin/env ruby
|
2
2
|
#
|
3
3
|
# Main file for vim-get application
|
4
4
|
#
|
5
|
-
#
|
5
|
+
# Author:: Eddy Xu (mailto:eddyxu@gmail.com)
|
6
|
+
# License:: Distributed under BSD License
|
7
|
+
# Copyright:: Copyright (c) 2008 Quarkware.com
|
6
8
|
#
|
7
|
-
# $Id: vimget.rb
|
9
|
+
# $Id: vimget.rb 8 2008-04-12 12:47:35Z eddyxu $
|
8
10
|
|
11
|
+
require 'fileutils'
|
9
12
|
require "vimget/command_manager"
|
13
|
+
require "vimget/configure"
|
10
14
|
|
11
|
-
VIMGET_VERSION = "0.1.
|
15
|
+
VIMGET_VERSION = "0.1.1"
|
12
16
|
|
13
17
|
module VimGet
|
14
18
|
|
15
|
-
# Singleton access point
|
19
|
+
# Singleton access point for main application
|
16
20
|
class << self
|
17
21
|
def application
|
18
22
|
@application ||= VimGet::Application.new
|
@@ -27,11 +31,12 @@ module VimGet
|
|
27
31
|
# VimGet application class
|
28
32
|
class Application
|
29
33
|
def initialize
|
30
|
-
|
34
|
+
vimget_path = File.expand_path(VimGet.configure.base_dir)
|
35
|
+
FileUtils.mkdir_p vimget_path if not File.exist? vimget_path
|
31
36
|
end
|
32
37
|
|
33
38
|
def run
|
34
39
|
CommandManager.instance.run(ARGV)
|
35
40
|
end
|
36
41
|
end
|
37
|
-
end
|
42
|
+
end
|
data/test/tc_command.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# test case for command.rb
|
4
|
+
#
|
5
|
+
# author: Eddy Xu <eddyxu@gmail.com>
|
6
|
+
#
|
7
|
+
# $Id: tc_command.rb 8 2008-04-12 12:47:35Z eddyxu $
|
8
|
+
|
9
|
+
require 'test/unit'
|
10
|
+
require 'vimget/command'
|
11
|
+
|
12
|
+
class CommandTest < Test::Unit::TestCase
|
13
|
+
def setup
|
14
|
+
end
|
15
|
+
|
16
|
+
def teardown
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_parse_option
|
21
|
+
end
|
22
|
+
end
|
data/test/tc_db.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# test case for db.rb
|
4
4
|
#
|
5
|
-
# $Id: tc_db.rb
|
5
|
+
# $Id: tc_db.rb 7 2008-04-11 22:48:50Z eddyxu $
|
6
6
|
|
7
7
|
require 'test/unit'
|
8
8
|
require "vimget/db"
|
@@ -12,10 +12,20 @@ require "tmpdir"
|
|
12
12
|
class TestDB < Test::Unit::TestCase
|
13
13
|
def setup
|
14
14
|
@basedir = Dir.tmpdir
|
15
|
+
|
16
|
+
@s1 = VimGet::Script.new("123", "test_1", "Eddy Xu", "4.23", "4.23",
|
17
|
+
"download?from=somewhere",
|
18
|
+
["plugin/taglist.vim", "doc/taglist.txt"])
|
19
|
+
|
20
|
+
# outdated one
|
21
|
+
@s2 = VimGet::Script.new("321", "test_outdated", "EdX", "3.24", "3.23",
|
22
|
+
"download str", [])
|
23
|
+
|
24
|
+
@db = VimGet::PathDB.new(@basedir)
|
15
25
|
end
|
16
26
|
|
17
27
|
def teardown
|
18
|
-
|
28
|
+
Dir.glob(db_file("*")) { |filename| File.delete(filename) }
|
19
29
|
end
|
20
30
|
|
21
31
|
def test_find
|
@@ -23,23 +33,57 @@ class TestDB < Test::Unit::TestCase
|
|
23
33
|
end
|
24
34
|
|
25
35
|
def test_add
|
26
|
-
s = VimGet::Script.new(
|
36
|
+
s = VimGet::Script.new(123, "test")
|
27
37
|
s.author = "Eddy Xu"
|
28
38
|
s.installed = "4.23"
|
29
39
|
s.version = "5.23"
|
30
40
|
s.download = "download?from=somewhere"
|
31
41
|
s.manifest = ["plugin/taglist.vim", "doc/taglist.txt"]
|
32
42
|
|
33
|
-
db
|
34
|
-
|
35
|
-
db.add(s)
|
43
|
+
@db.add(s)
|
36
44
|
|
37
45
|
expected_filepath = File.join(@basedir, "db", "test.manifest")
|
38
46
|
assert(File.exist?(expected_filepath), "Failed to create script manifest.")
|
39
47
|
|
48
|
+
s1 = @db.find("test")
|
49
|
+
assert_not_nil(s1, "VimGet::db find nothing")
|
50
|
+
assert_equal(s.sid, s1.sid)
|
51
|
+
assert_equal("4.23", s1.installed, "Wrong installed version")
|
52
|
+
assert_equal(s.manifest, s1.manifest)
|
53
|
+
assert_equal(s.outdated?, s1.outdated?)
|
54
|
+
|
40
55
|
end
|
41
56
|
|
42
57
|
def test_update
|
43
|
-
|
58
|
+
db = db_file(@s1.name)
|
59
|
+
assert_equal(false, File.exist?(db))
|
60
|
+
@db.add(@s1)
|
61
|
+
assert_equal(true, File.exist?(db), "Failed to create script manifest.")
|
62
|
+
@s1.author = "Meg Ryan"
|
63
|
+
@s1.installed = "23.2"
|
64
|
+
@s1.version = "2.32"
|
65
|
+
@s1.manifest << "ftplugin/taglist.a"
|
66
|
+
|
67
|
+
@db.update(@s1)
|
68
|
+
|
69
|
+
s = @db.find(@s1.name)
|
70
|
+
assert_equal("Meg Ryan", s.author)
|
71
|
+
assert_equal(@s1.manifest, s.manifest)
|
72
|
+
|
73
|
+
# Todo: is it right to ignore the manifest empty?
|
74
|
+
empty_s = VimGet::Script.new(@s1.sid, @s1.name)
|
75
|
+
empty_s.author, empty_s.installed, empty_s.version = @s1.author, @s1.installed, @s1.version
|
76
|
+
empty_s.manifest = []
|
77
|
+
|
78
|
+
@db.update(empty_s)
|
79
|
+
|
80
|
+
s = @db.find(empty_s.name)
|
81
|
+
assert_equal(@s1.manifest, s.manifest)
|
82
|
+
end
|
83
|
+
|
84
|
+
private
|
85
|
+
|
86
|
+
def db_file(name)
|
87
|
+
File.join(@basedir, "db", name + ".manifest")
|
44
88
|
end
|
45
89
|
end
|
data/test/ts_vimget.rb
CHANGED
@@ -2,10 +2,11 @@
|
|
2
2
|
#
|
3
3
|
# Test suite for vimget
|
4
4
|
#
|
5
|
-
# $Id: ts_vimget.rb
|
5
|
+
# $Id: ts_vimget.rb 8 2008-04-12 12:47:35Z eddyxu $
|
6
6
|
|
7
7
|
$: << "#{File.dirname(__FILE__)}/../lib"
|
8
8
|
|
9
9
|
require 'tc_db'
|
10
|
+
require 'tc_command'
|
10
11
|
require 'tc_installer'
|
11
12
|
require 'tc_script'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vimget
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eddy Xu
|
@@ -28,10 +28,11 @@ executables:
|
|
28
28
|
- vim-get
|
29
29
|
extensions: []
|
30
30
|
|
31
|
-
extra_rdoc_files:
|
32
|
-
|
31
|
+
extra_rdoc_files:
|
32
|
+
- README
|
33
33
|
files:
|
34
34
|
- bin/vim-get
|
35
|
+
- test/tc_command.rb
|
35
36
|
- test/tc_db.rb
|
36
37
|
- test/tc_installer.rb
|
37
38
|
- test/tc_script.rb
|
@@ -55,6 +56,7 @@ files:
|
|
55
56
|
- lib/vimget/script.rb
|
56
57
|
- lib/vimget/webparser.rb
|
57
58
|
- lib/vimget.rb
|
59
|
+
- README
|
58
60
|
has_rdoc: true
|
59
61
|
homepage: http://www.xulei.org/projects/vimget
|
60
62
|
post_install_message:
|