ppl 0.0.5 → 0.2.0
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/.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
|
-
|