t 0.9.1 → 0.9.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -30,9 +30,9 @@ consumer key and secret, which you can use to authorize your Twitter account.
30
30
 
31
31
  This command directs you to a URL where you can sign-in to Twitter and then
32
32
  enter the returned PIN back into the terminal. If you type the PIN correctly,
33
- you should now be authorized authorized to use `t` as that user. To authorize
34
- multiple accounts, simply repeat the last step, signing into Twitter as a
35
- different user.
33
+ you should now be authorized to use `t` as that user. To authorize multiple
34
+ accounts, simply repeat the last step, signing into Twitter as a different
35
+ user.
36
36
 
37
37
  You can see a list of all the accounts you've authorized by typing the command:
38
38
 
@@ -48,12 +48,13 @@ The output of which will be structured like this:
48
48
 
49
49
  **Note**: One of your authorized accounts (specifically, the last one
50
50
  authorized) will be set as active. To change the active account, use the `set`
51
- subcommand, passing either just the username, if it's unambiguous, or the
52
- username and consumer key pair, like this:
51
+ subcommand, passing either just a username, if it's unambiguous, or a username
52
+ and consumer key pair, like this:
53
53
 
54
54
  t set active sferik UDfNTpOz5ZDG4a6w7dIWj
55
55
 
56
56
  Account information is stored in a YAML-formatted file located at `~/.trc`.
57
+
57
58
  **Note**: Anyone with access to this file can masquerade as you on Twitter, so
58
59
  it's important to keep it secure, just as you would treat your SSH private key.
59
60
  For this reason, the file is hidden and has the permission bits set to `0600`.
data/lib/t/printable.rb CHANGED
@@ -17,7 +17,7 @@ module T
17
17
 
18
18
  def build_long_list(list)
19
19
  created_at = list.created_at > 6.months.ago ? list.created_at.strftime("%b %e %H:%M") : list.created_at.strftime("%b %e %Y")
20
- [list.id, created_at, list.full_name, number_with_delimiter(list.member_count), number_with_delimiter(list.subscriber_count), list.mode, list.description]
20
+ [list.id, created_at, "@#{list.user.screen_name}", list.slug, number_with_delimiter(list.member_count), number_with_delimiter(list.subscriber_count), list.mode, list.description]
21
21
  end
22
22
 
23
23
  def build_long_status(status)
@@ -55,6 +55,14 @@ module T
55
55
  puts
56
56
  end
57
57
 
58
+ def list_headings
59
+ ["ID", "Created at", "Screen name", "Slug", "Members", "Subscribers", "Mode", "Description"]
60
+ end
61
+
62
+ def status_headings
63
+ ["ID", "Posted at", "Screen name", "Text"]
64
+ end
65
+
58
66
  def print_lists(lists)
59
67
  lists = lists.sort_by{|list| list.slug.downcase} unless options['unsorted']
60
68
  if options['posted']
@@ -68,7 +76,7 @@ module T
68
76
  end
69
77
  lists.reverse! if options['reverse']
70
78
  if options['csv']
71
- say ["ID", "Created at", "Screen name", "Slug", "Members", "Subscribers", "Mode", "Description"].to_csv unless lists.empty?
79
+ say list_headings.to_csv unless lists.empty?
72
80
  lists.each do |list|
73
81
  print_csv_list(list)
74
82
  end
@@ -77,8 +85,7 @@ module T
77
85
  build_long_list(list)
78
86
  end
79
87
  if STDOUT.tty?
80
- headings = ["ID", "Created at", "Slug", "Members", "Subscribers", "Mode", "Description"]
81
- array.unshift(headings) unless lists.empty?
88
+ array.unshift(list_headings) unless lists.empty?
82
89
  print_table(array, :truncate => true)
83
90
  else
84
91
  print_table(array)
@@ -108,7 +115,7 @@ module T
108
115
  def print_statuses(statuses)
109
116
  statuses.reverse! if options['reverse'] || options['stream']
110
117
  if options['csv']
111
- say ["ID", "Posted at", "Screen name", "Text"].to_csv unless statuses.empty?
118
+ say status_headings.to_csv unless statuses.empty?
112
119
  statuses.each do |status|
113
120
  print_csv_status(status)
114
121
  end
@@ -117,8 +124,7 @@ module T
117
124
  build_long_status(status)
118
125
  end
119
126
  if STDOUT.tty?
120
- headings = ["ID", "Posted at", "Screen name", "Text"]
121
- array.unshift(headings) unless statuses.empty?
127
+ array.unshift(status_headings) unless statuses.empty?
122
128
  print_table(array, :truncate => true)
123
129
  else
124
130
  print_table(array)
@@ -130,6 +136,10 @@ module T
130
136
  end
131
137
  end
132
138
 
139
+ def user_headings
140
+ ["ID", "Since", "Tweets", "Favorites", "Listed", "Following", "Followers", "Screen name", "Name"]
141
+ end
142
+
133
143
  def print_users(users)
134
144
  users = users.sort_by{|user| user.screen_name.downcase} unless options['unsorted']
135
145
  if options['posted']
@@ -147,7 +157,7 @@ module T
147
157
  end
148
158
  users.reverse! if options['reverse']
149
159
  if options['csv']
150
- say ["ID", "Since", "Tweets", "Favorites", "Listed", "Following", "Followers", "Screen name", "Name"].to_csv unless users.empty?
160
+ say user_headings.to_csv unless users.empty?
151
161
  users.each do |user|
152
162
  print_csv_user(user)
153
163
  end
@@ -156,8 +166,7 @@ module T
156
166
  build_long_user(user)
157
167
  end
158
168
  if STDOUT.tty?
159
- headings = ["ID", "Since", "Tweets", "Favorites", "Listed", "Following", "Followers", "Screen name", "Name"]
160
- array.unshift(headings) unless users.empty?
169
+ array.unshift(user_headings) unless users.empty?
161
170
  print_table(array, :truncate => true)
162
171
  else
163
172
  print_table(array)
data/lib/t/stream.rb CHANGED
@@ -15,9 +15,17 @@ module T
15
15
  end
16
16
 
17
17
  desc "all", "Stream a random sample of all Tweets (Control-C to stop)"
18
+ method_option "csv", :aliases => "-c", :type => :boolean, :default => false, :desc => "Output in CSV format."
18
19
  def all
20
+ if options['csv']
21
+ say status_headings.to_csv
22
+ end
19
23
  client.on_timeline_status do |status|
20
- print_status(status)
24
+ if options['csv']
25
+ print_csv_status(status)
26
+ else
27
+ print_status(status)
28
+ end
21
29
  end
22
30
  Signal.trap("TERM") do
23
31
  client.stop
@@ -39,15 +47,21 @@ module T
39
47
  end
40
48
 
41
49
  desc "search KEYWORD [KEYWORD...]", "Stream Tweets that contain specified keywords, joined with logical ORs (Control-C to stop)"
50
+ method_option "csv", :aliases => "-c", :type => :boolean, :default => false, :desc => "Output in CSV format."
42
51
  def search(keyword, *keywords)
43
52
  keywords.unshift(keyword)
44
53
  client.on_inited do
45
- search= T::Search.new
54
+ search = T::Search.new
55
+ search.options = search.options.merge(options)
46
56
  search.options = search.options.merge(:reverse => true)
47
57
  search.all(keywords.join(' OR '))
48
58
  end
49
59
  client.on_timeline_status do |status|
50
- print_status(status)
60
+ if options['csv']
61
+ print_csv_status(status)
62
+ else
63
+ print_status(status)
64
+ end
51
65
  end
52
66
  Signal.trap("TERM") do
53
67
  client.stop
@@ -57,14 +71,20 @@ module T
57
71
  end
58
72
 
59
73
  desc "timeline", "Stream your timeline (Control-C to stop)"
74
+ method_option "csv", :aliases => "-c", :type => :boolean, :default => false, :desc => "Output in CSV format."
60
75
  def timeline
61
76
  client.on_inited do
62
77
  cli = T::CLI.new
78
+ cli.options = cli.options.merge(options)
63
79
  cli.options = cli.options.merge(:reverse => true)
64
80
  cli.timeline
65
81
  end
66
82
  client.on_timeline_status do |status|
67
- print_status(status)
83
+ if options['csv']
84
+ print_csv_status(status)
85
+ else
86
+ print_status(status)
87
+ end
68
88
  end
69
89
  Signal.trap("TERM") do
70
90
  client.stop
@@ -74,10 +94,18 @@ module T
74
94
  end
75
95
 
76
96
  desc "users SCREEN_NAME [SCREEN_NAME...]", "Stream Tweets either from or in reply to specified users (Control-C to stop)"
97
+ method_option "csv", :aliases => "-c", :type => :boolean, :default => false, :desc => "Output in CSV format."
77
98
  def users(screen_name, *screen_names)
99
+ if options['csv']
100
+ say status_headings.to_csv
101
+ end
78
102
  screen_names.unshift(screen_name)
79
103
  client.on_timeline_status do |status|
80
- print_status(status)
104
+ if options['csv']
105
+ print_csv_status(status)
106
+ else
107
+ print_status(status)
108
+ end
81
109
  end
82
110
  Signal.trap("TERM") do
83
111
  client.stop
data/lib/t/version.rb CHANGED
@@ -13,7 +13,7 @@ module T
13
13
 
14
14
  # @return [Integer]
15
15
  def self.patch
16
- 1
16
+ 2
17
17
  end
18
18
 
19
19
  # @return [String, NilClass]
data/spec/cli_spec.rb CHANGED
@@ -1596,9 +1596,9 @@ ID,Created at,Screen name,Slug,Members,Subscribers,Mode,Description
1596
1596
  it "should output in long format" do
1597
1597
  @cli.lists
1598
1598
  $stdout.string.should == <<-eos
1599
- ID Created at Slug Members Subscribers Mode ...
1600
- 21718825 Sep 14 2010 @sferik/code-for-america 26 5 publi...
1601
- 8863586 Mar 15 2010 @sferik/presidents 2 1 publi...
1599
+ ID Created at Screen name Slug Members Subscribers ...
1600
+ 21718825 Sep 14 2010 @sferik code-for-america 26 5 ...
1601
+ 8863586 Mar 15 2010 @sferik presidents 2 1 ...
1602
1602
  eos
1603
1603
  end
1604
1604
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: t
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.9.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: