gridcli 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/TODO ADDED
@@ -0,0 +1,13 @@
1
+ grid list friends --of-friends
2
+
3
+ pretty print for profiles
4
+
5
+ ascii profiles
6
+
7
+ circles (or grids?) - with lists stored locally. Format:
8
+
9
+ play: [ sally, mary, suzie ]
10
+ work: [ bob, john ]
11
+ everyone: [ @work, @play ]
12
+
13
+ or something like that..
data/gridcli.gemspec CHANGED
@@ -16,6 +16,8 @@ Gem::Specification.new do |s|
16
16
  s.require_paths = ["lib"]
17
17
  s.add_dependency("activeresource", ">= 3.0.10")
18
18
  s.add_dependency("chronic", ">= 0.6.4")
19
+ s.add_dependency("json", ">= 1.6.1")
20
+ s.add_dependency("colorize", ">= 0.5.8")
19
21
  s.bindir = "bin"
20
22
  s.executables << "grid"
21
23
  end
@@ -13,7 +13,7 @@ module GridCLI
13
13
  puts "Usage: grid <cmd>\n\nAvailable commands:\n\n"
14
14
  Runner.commands.each { |klass|
15
15
  inst = klass.new
16
- puts "\t#{inst.cmd}\t\t#{inst.desc}"
16
+ puts "\t#{inst.cmd.ljust(25) + inst.desc}"
17
17
  }
18
18
  puts "\n\nTo get the options for any individual command, use:"
19
19
  puts "\tgrid help <cmd>\n\n"
@@ -9,8 +9,7 @@ module GridCLI
9
9
  end
10
10
 
11
11
  def run(args)
12
- usage if args.length == 0
13
- type = args.shift
12
+ type = (args.length > 0) ? args.shift : "all"
14
13
  usage if not [ 'like', 'dislike', 'status', 'message', 'all' ].include? type
15
14
  period = (args.length > 0 and not args.first.start_with? '-') ? args.shift : nil
16
15
  dates = parse_dates period
@@ -0,0 +1,19 @@
1
+ module GridCLI
2
+ class PPrintCommand < BaseCommand
3
+ def initialize
4
+ super "pprint", "A program that will pretty print posts/users"
5
+ end
6
+
7
+ def run(args)
8
+ usage if args.length != 0
9
+
10
+ ARGV.clear
11
+ ARGF.each { |line|
12
+ puts PrettyPrinter.new(line)
13
+ puts
14
+ }
15
+ end
16
+ end
17
+
18
+ Runner.register "pprint", PPrintCommand
19
+ end
@@ -29,7 +29,12 @@ module GridCLI
29
29
  if posts.length == 0
30
30
  puts "Up to date."
31
31
  else
32
- posts.each { |p| puts "#{p.to_s}\n\n" }
32
+ posts.each { |p|
33
+ type = p.known_attributes.first
34
+ json = p.send(type).to_json(:root => type)
35
+ puts PrettyPrinter.new(json)
36
+ puts
37
+ }
33
38
  @config['last_sha'] = GridCLI.storage.append(posts)
34
39
  @config.save
35
40
 
@@ -0,0 +1,48 @@
1
+ require 'json'
2
+ require 'colorize'
3
+
4
+ module GridCLI
5
+ class PrettyPrinter
6
+ def initialize(string)
7
+ begin
8
+ j = JSON.parse(string)
9
+ type = j.keys.first
10
+ @contents = j[type]
11
+ @created_at = Time.parse(@contents['created_at']).localtime.to_s
12
+ @pretty = case type
13
+ when "message" then pprint_message
14
+ when "like" then pprint_like
15
+ when "dislike" then pprint_dislike
16
+ when "status" then pprint_status
17
+ else string
18
+ end
19
+ rescue JSON::ParserError
20
+ @pretty = string
21
+ end
22
+ end
23
+
24
+ def pprint_like
25
+ "on #{@created_at} #{@contents['from_username']} liked #{@contents['body']}".green
26
+ end
27
+
28
+ def pprint_dislike
29
+ "on #{@created_at} #{@contents['from_username']} disliked #{@contents['body']}".red
30
+ end
31
+
32
+ def pprint_status
33
+ "on #{@created_at} #{@contents['from_username']} was #{@contents['body']}".cyan
34
+ end
35
+
36
+ def pprint_message
37
+ s = "Message from: ".cyan + @contents['from_username'] + "\n"
38
+ s+= "Subject: ".cyan + @contents['subject'] + "\n"
39
+ s+= "Date: ".cyan + @created_at + "\n"
40
+ s+= "To: ".cyan + @contents['recipients'] + "\n"
41
+ s+= @contents['body']
42
+ end
43
+
44
+ def to_s
45
+ @pretty
46
+ end
47
+ end
48
+ end
@@ -85,13 +85,13 @@ module GridCLI
85
85
 
86
86
  def search(type, query, start_date, end_date)
87
87
  files(type, start_date, end_date) { |path|
88
- system "grep -R \"#{query}\" #{path}"
88
+ system "grep -R \"#{query}\" #{path} | #{$0} pprint"
89
89
  }
90
90
  end
91
91
 
92
92
  def list(type, start_date, end_date)
93
93
  files(type, start_date, end_date) { |path|
94
- system "cat #{path}"
94
+ system "cat #{path} | #{$0} pprint"
95
95
  }
96
96
  end
97
97
 
@@ -1,3 +1,3 @@
1
1
  module GridCLI
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
data/lib/gridcli.rb CHANGED
@@ -17,8 +17,10 @@ end
17
17
 
18
18
  require 'gridcli/version'
19
19
  require 'gridcli/runner'
20
+ require 'gridcli/pprinter'
20
21
 
21
22
  require 'gridcli/commands/base'
23
+ require 'gridcli/commands/pprint'
22
24
  require 'gridcli/commands/signup'
23
25
  require 'gridcli/commands/help'
24
26
  require 'gridcli/commands/profile'
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gridcli
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 21
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 4
10
- version: 0.0.4
9
+ - 5
10
+ version: 0.0.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Brian Muller
@@ -50,6 +50,38 @@ dependencies:
50
50
  version: 0.6.4
51
51
  type: :runtime
52
52
  version_requirements: *id002
53
+ - !ruby/object:Gem::Dependency
54
+ name: json
55
+ prerelease: false
56
+ requirement: &id003 !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ hash: 13
62
+ segments:
63
+ - 1
64
+ - 6
65
+ - 1
66
+ version: 1.6.1
67
+ type: :runtime
68
+ version_requirements: *id003
69
+ - !ruby/object:Gem::Dependency
70
+ name: colorize
71
+ prerelease: false
72
+ requirement: &id004 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ hash: 27
78
+ segments:
79
+ - 0
80
+ - 5
81
+ - 8
82
+ version: 0.5.8
83
+ type: :runtime
84
+ version_requirements: *id004
53
85
  description: "A command line interface to The Grid: Social Networking, Web 0.2"
54
86
  email:
55
87
  - bamuller@gmail.com
@@ -66,6 +98,7 @@ files:
66
98
  - Gemfile
67
99
  - README.rdoc
68
100
  - Rakefile
101
+ - TODO
69
102
  - bin/grid
70
103
  - gridcli.gemspec
71
104
  - lib/gridcli.rb
@@ -78,12 +111,14 @@ files:
78
111
  - lib/gridcli/commands/like.rb
79
112
  - lib/gridcli/commands/list.rb
80
113
  - lib/gridcli/commands/message.rb
114
+ - lib/gridcli/commands/pprint.rb
81
115
  - lib/gridcli/commands/profile.rb
82
116
  - lib/gridcli/commands/search.rb
83
117
  - lib/gridcli/commands/signup.rb
84
118
  - lib/gridcli/commands/status.rb
85
119
  - lib/gridcli/commands/update.rb
86
120
  - lib/gridcli/config.rb
121
+ - lib/gridcli/pprinter.rb
87
122
  - lib/gridcli/resources/base.rb
88
123
  - lib/gridcli/resources/blockage.rb
89
124
  - lib/gridcli/resources/friendship.rb