ppl 0.0.5 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -0
- data/.rspec +3 -0
- data/.travis.yml +5 -0
- data/Gemfile +7 -3
- data/Gemfile.lock +15 -7
- data/README.md +47 -34
- data/bin/ppl +7 -6
- data/lib/ppl/adapter/storage/disk.rb +40 -0
- data/lib/ppl/adapter/storage.rb +28 -0
- data/lib/ppl/adapter/vcard/vpim.rb +45 -0
- data/lib/ppl/adapter/vcard.rb +13 -0
- data/lib/ppl/application/bootstrap.rb +62 -0
- data/lib/ppl/application/command.rb +13 -0
- data/lib/ppl/application/command_suite.rb +25 -0
- data/lib/ppl/application/input.rb +13 -0
- data/lib/ppl/application/output.rb +21 -0
- data/lib/ppl/application/router.rb +19 -0
- data/lib/ppl/application/shell.rb +34 -0
- data/lib/ppl/command/command_list.rb +21 -0
- data/lib/ppl/command/contact_add.rb +26 -0
- data/lib/ppl/command/contact_delete.rb +16 -0
- data/lib/ppl/command/contact_list.rb +24 -0
- data/lib/ppl/command/contact_rename.rb +23 -0
- data/lib/ppl/command/contact_show.rb +20 -0
- data/lib/ppl/entity/address_book.rb +21 -0
- data/lib/ppl/entity/contact.rb +10 -0
- data/lib/ppl/error/contact_not_found.rb +4 -0
- data/lib/ppl/error/incorrect_usage.rb +4 -0
- data/lib/ppl.rb +51 -11
- data/ppl.gemspec +3 -3
- data/spec/ppl/adapter/output_spec.rb +43 -0
- data/spec/ppl/adapter/storage/disk_spec.rb +83 -0
- data/spec/ppl/adapter/storage_spec.rb +46 -0
- data/spec/ppl/adapter/vcard/vpim_spec.rb +77 -0
- data/spec/ppl/adapter/vcard_spec.rb +24 -0
- data/spec/ppl/application/bootstrap_spec.rb +88 -0
- data/spec/ppl/application/command_spec.rb +19 -0
- data/spec/ppl/application/command_suite_spec.rb +44 -0
- data/spec/ppl/application/input_spec.rb +21 -0
- data/spec/ppl/application/router_spec.rb +43 -0
- data/spec/ppl/application/shell_spec.rb +79 -0
- data/spec/ppl/command/command_list_spec.rb +37 -0
- data/spec/ppl/command/contact_add_spec.rb +41 -0
- data/spec/ppl/command/contact_delete_spec.rb +31 -0
- data/spec/ppl/command/contact_list_spec.rb +15 -0
- data/spec/ppl/command/contact_rename_spec.rb +42 -0
- data/spec/ppl/command/contact_show_spec.rb +35 -0
- data/spec/ppl/entity/address_book_spec.rb +26 -0
- data/spec/ppl/entity/contact_spec.rb +34 -0
- data/spec/spec_helper.rb +9 -0
- metadata +47 -14
- data/lib/ppl/address_book.rb +0 -74
- data/lib/ppl/cli.rb +0 -49
- data/lib/ppl/command/add.rb +0 -40
- data/lib/ppl/command/birthdays.rb +0 -34
- data/lib/ppl/command/help.rb +0 -32
- data/lib/ppl/command/list.rb +0 -31
- data/lib/ppl/command/rm.rb +0 -38
- data/lib/ppl/command/set.rb +0 -49
- data/lib/ppl/command/show.rb +0 -43
- data/lib/ppl/command.rb +0 -55
- data/lib/ppl/contact.rb +0 -43
data/lib/ppl/command/set.rb
DELETED
@@ -1,49 +0,0 @@
|
|
1
|
-
|
2
|
-
class Ppl::Command::Set < Ppl::Command
|
3
|
-
|
4
|
-
def name
|
5
|
-
"set"
|
6
|
-
end
|
7
|
-
|
8
|
-
def summary
|
9
|
-
"Change the details of a contact"
|
10
|
-
end
|
11
|
-
|
12
|
-
def banner
|
13
|
-
"Usage: ppl set <contact> [options]"
|
14
|
-
end
|
15
|
-
|
16
|
-
def options(parser)
|
17
|
-
parser.on("-e", "--email <email>", "Email address") do |email|
|
18
|
-
@options[:email] = email
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def execute(argv, options)
|
23
|
-
|
24
|
-
contact_id = argv.first
|
25
|
-
|
26
|
-
if contact_id.nil?
|
27
|
-
$stderr.puts @option_parser
|
28
|
-
return false
|
29
|
-
end
|
30
|
-
|
31
|
-
contact = @address_book.contact contact_id
|
32
|
-
if contact.nil?
|
33
|
-
raise "contact '#{contact_id}' not found"
|
34
|
-
end
|
35
|
-
|
36
|
-
contact.vcard.make do |maker|
|
37
|
-
maker.name do |name|
|
38
|
-
name.fullname = 's'
|
39
|
-
end
|
40
|
-
puts maker
|
41
|
-
end
|
42
|
-
|
43
|
-
if !options[:email].nil?
|
44
|
-
#contact.vcard.add_email options[:email]
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
end
|
49
|
-
|
data/lib/ppl/command/show.rb
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
|
2
|
-
class Ppl::Command::Show < Ppl::Command
|
3
|
-
|
4
|
-
def name
|
5
|
-
"show"
|
6
|
-
end
|
7
|
-
|
8
|
-
def summary
|
9
|
-
"Show full details of a single contact"
|
10
|
-
end
|
11
|
-
|
12
|
-
def banner
|
13
|
-
"Usage: ppl show <contact>"
|
14
|
-
end
|
15
|
-
|
16
|
-
def options(parser)
|
17
|
-
end
|
18
|
-
|
19
|
-
def execute(argv, options)
|
20
|
-
|
21
|
-
contact_id = argv.first
|
22
|
-
|
23
|
-
if contact_id.nil?
|
24
|
-
$stderr.puts @option_parser
|
25
|
-
return false
|
26
|
-
end
|
27
|
-
|
28
|
-
contact = @address_book.contact contact_id
|
29
|
-
if contact.nil?
|
30
|
-
raise "contact '#{contact_id}' not found"
|
31
|
-
end
|
32
|
-
|
33
|
-
|
34
|
-
puts contact.name
|
35
|
-
contact.emails.each do |email|
|
36
|
-
puts email
|
37
|
-
end
|
38
|
-
|
39
|
-
return true
|
40
|
-
end
|
41
|
-
|
42
|
-
end
|
43
|
-
|
data/lib/ppl/command.rb
DELETED
@@ -1,55 +0,0 @@
|
|
1
|
-
|
2
|
-
class Ppl::Command
|
3
|
-
|
4
|
-
attr_accessor :address_book
|
5
|
-
attr_accessor :commands
|
6
|
-
|
7
|
-
def initialize
|
8
|
-
@option_parser = OptionParser.new do |parser|
|
9
|
-
parser.banner = self.banner
|
10
|
-
self.options parser
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
def name
|
15
|
-
raise NotImplementedError
|
16
|
-
end
|
17
|
-
|
18
|
-
def summary
|
19
|
-
raise NotImplementedError
|
20
|
-
end
|
21
|
-
|
22
|
-
def banner
|
23
|
-
raise NotImplementedError
|
24
|
-
end
|
25
|
-
|
26
|
-
def options(parser)
|
27
|
-
raise NotImplementedError
|
28
|
-
end
|
29
|
-
|
30
|
-
def run(argv)
|
31
|
-
|
32
|
-
@options = {}
|
33
|
-
begin
|
34
|
-
@option_parser.parse! ARGV
|
35
|
-
rescue OptionParser::ParseError
|
36
|
-
$stderr.puts $!
|
37
|
-
$stderr.puts @option_parser
|
38
|
-
return false
|
39
|
-
end
|
40
|
-
|
41
|
-
begin
|
42
|
-
status = self.execute argv, @options
|
43
|
-
rescue RuntimeError
|
44
|
-
$stderr.puts "ppl: " + $!.to_s
|
45
|
-
end
|
46
|
-
|
47
|
-
return status
|
48
|
-
end
|
49
|
-
|
50
|
-
def execute(argv, options)
|
51
|
-
raise NotImplementedError
|
52
|
-
end
|
53
|
-
|
54
|
-
end
|
55
|
-
|
data/lib/ppl/contact.rb
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
|
2
|
-
require "active_support/core_ext/time/calculations.rb"
|
3
|
-
|
4
|
-
class Ppl::Contact
|
5
|
-
|
6
|
-
attr_reader :id
|
7
|
-
attr_reader :vcard
|
8
|
-
|
9
|
-
def initialize(id, vcard)
|
10
|
-
@id = id
|
11
|
-
@vcard = vcard
|
12
|
-
end
|
13
|
-
|
14
|
-
def birthday
|
15
|
-
@vcard.birthday
|
16
|
-
end
|
17
|
-
|
18
|
-
def until_birthday(now)
|
19
|
-
birthday = self.birthday.dup
|
20
|
-
while birthday < now
|
21
|
-
birthday = birthday.advance :years => 1
|
22
|
-
end
|
23
|
-
birthday - now
|
24
|
-
end
|
25
|
-
|
26
|
-
def email
|
27
|
-
@vcard.emails.first
|
28
|
-
end
|
29
|
-
|
30
|
-
def emails
|
31
|
-
@vcard.emails
|
32
|
-
end
|
33
|
-
|
34
|
-
def name
|
35
|
-
@vcard.name.fullname
|
36
|
-
end
|
37
|
-
|
38
|
-
def to_s
|
39
|
-
@vcard.to_s
|
40
|
-
end
|
41
|
-
|
42
|
-
end
|
43
|
-
|