t 2.0.2 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +2 -0
- data/lib/t/cli.rb +22 -5
- data/lib/t/list.rb +1 -1
- data/lib/t/printable.rb +4 -2
- data/lib/t/version.rb +2 -2
- data/spec/cli_spec.rb +63 -0
- data/spec/list_spec.rb +16 -0
- data/t.gemspec +5 -5
- data.tar.gz.sig +0 -0
- metadata +91 -116
- metadata.gz.sig +0 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d38506231ac0e5396f49bdcdc9362c1da7bfbe44
|
4
|
+
data.tar.gz: 8b3f17f4da2ad040d1742e5b58111ac0cc1592ed
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2871a66a71f8cf6e383dc3abb1503d8436aa9356cef66190f526f9593c1c654f75f7c3a33c2f6a5037df835359bd4ecf90b14bcc840cce28384a345506e6f422
|
7
|
+
data.tar.gz: 00dc2f7960b5c679b6d501955717c2b31c2a5e21a2a41b1c5996b15e9d1029217f5afafb00c0a6ed374a3aefd5d7177bf6ce45d75ec87e48dcde71380c17f6fc
|
checksums.yaml.gz.sig
ADDED
data/lib/t/cli.rb
CHANGED
@@ -125,6 +125,7 @@ module T
|
|
125
125
|
desc 'direct_messages', "Returns the #{DEFAULT_NUM_RESULTS} most recent Direct Messages sent to you."
|
126
126
|
method_option 'csv', :aliases => '-c', :type => :boolean, :default => false, :desc => 'Output in CSV format.'
|
127
127
|
method_option 'long', :aliases => '-l', :type => :boolean, :default => false, :desc => 'Output in long format.'
|
128
|
+
method_option 'relative_dates', :aliases => '-a', :type => :boolean, :desc => 'Show relative dates.'
|
128
129
|
method_option 'number', :aliases => '-n', :type => :numeric, :default => DEFAULT_NUM_RESULTS, :desc => 'Limit the number of results.'
|
129
130
|
method_option 'reverse', :aliases => '-r', :type => :boolean, :default => false, :desc => 'Reverse the order of the sort.'
|
130
131
|
def direct_messages
|
@@ -157,6 +158,7 @@ module T
|
|
157
158
|
desc 'direct_messages_sent', "Returns the #{DEFAULT_NUM_RESULTS} most recent Direct Messages you've sent."
|
158
159
|
method_option 'csv', :aliases => '-c', :type => :boolean, :default => false, :desc => 'Output in CSV format.'
|
159
160
|
method_option 'long', :aliases => '-l', :type => :boolean, :default => false, :desc => 'Output in long format.'
|
161
|
+
method_option 'relative_dates', :aliases => '-a', :type => :boolean, :desc => 'Show relative dates.'
|
160
162
|
method_option 'number', :aliases => '-n', :type => :numeric, :default => DEFAULT_NUM_RESULTS, :desc => 'Limit the number of results.'
|
161
163
|
method_option 'reverse', :aliases => '-r', :type => :boolean, :default => false, :desc => 'Reverse the order of the sort.'
|
162
164
|
def direct_messages_sent
|
@@ -190,6 +192,7 @@ module T
|
|
190
192
|
method_option 'csv', :aliases => '-c', :type => :boolean, :default => false, :desc => 'Output in CSV format.'
|
191
193
|
method_option 'id', :aliases => '-i', :type => :boolean, :default => false, :desc => 'Specify user via ID instead of screen name.'
|
192
194
|
method_option 'long', :aliases => '-l', :type => :boolean, :default => false, :desc => 'Output in long format.'
|
195
|
+
method_option 'relative_dates', :aliases => '-a', :type => :boolean, :desc => 'Show relative dates.'
|
193
196
|
method_option 'reverse', :aliases => '-r', :type => :boolean, :default => false, :desc => 'Reverse the order of the sort.'
|
194
197
|
method_option 'sort', :aliases => '-s', :type => :string, :enum => %w(favorites followers friends listed screen_name since tweets tweeted), :default => 'screen_name', :desc => 'Specify the order of the results.', :banner => 'ORDER'
|
195
198
|
method_option 'unsorted', :aliases => '-u', :type => :boolean, :default => false, :desc => 'Output is not sorted.'
|
@@ -282,6 +285,7 @@ module T
|
|
282
285
|
method_option 'csv', :aliases => '-c', :type => :boolean, :default => false, :desc => 'Output in CSV format.'
|
283
286
|
method_option 'id', :aliases => '-i', :type => :boolean, :default => false, :desc => 'Specify user via ID instead of screen name.'
|
284
287
|
method_option 'long', :aliases => '-l', :type => :boolean, :default => false, :desc => 'Output in long format.'
|
288
|
+
method_option 'relative_dates', :aliases => '-a', :type => :boolean, :desc => 'Show relative dates.'
|
285
289
|
method_option 'max_id', :aliases => '-m', :type => :numeric, :desc => 'Returns only the results with an ID less than the specified ID.'
|
286
290
|
method_option 'number', :aliases => '-n', :type => :numeric, :default => DEFAULT_NUM_RESULTS, :desc => 'Limit the number of results.'
|
287
291
|
method_option 'reverse', :aliases => '-r', :type => :boolean, :default => false, :desc => 'Reverse the order of the sort.'
|
@@ -319,6 +323,7 @@ module T
|
|
319
323
|
method_option 'csv', :aliases => '-c', :type => :boolean, :default => false, :desc => 'Output in CSV format.'
|
320
324
|
method_option 'id', :aliases => '-i', :type => :boolean, :default => false, :desc => 'Specify user via ID instead of screen name.'
|
321
325
|
method_option 'long', :aliases => '-l', :type => :boolean, :default => false, :desc => 'Output in long format.'
|
326
|
+
method_option 'relative_dates', :aliases => '-a', :type => :boolean, :desc => 'Show relative dates.'
|
322
327
|
method_option 'reverse', :aliases => '-r', :type => :boolean, :default => false, :desc => 'Reverse the order of the sort.'
|
323
328
|
method_option 'sort', :aliases => '-s', :type => :string, :enum => %w(favorites followers friends listed screen_name since tweets tweeted), :default => 'screen_name', :desc => 'Specify the order of the results.', :banner => 'ORDER'
|
324
329
|
method_option 'unsorted', :aliases => '-u', :type => :boolean, :default => false, :desc => 'Output is not sorted.'
|
@@ -339,6 +344,7 @@ module T
|
|
339
344
|
method_option 'csv', :aliases => '-c', :type => :boolean, :default => false, :desc => 'Output in CSV format.'
|
340
345
|
method_option 'id', :aliases => '-i', :type => :boolean, :default => false, :desc => 'Specify user via ID instead of screen name.'
|
341
346
|
method_option 'long', :aliases => '-l', :type => :boolean, :default => false, :desc => 'Output in long format.'
|
347
|
+
method_option 'relative_dates', :aliases => '-a', :type => :boolean, :desc => 'Show relative dates.'
|
342
348
|
method_option 'reverse', :aliases => '-r', :type => :boolean, :default => false, :desc => 'Reverse the order of the sort.'
|
343
349
|
method_option 'sort', :aliases => '-s', :type => :string, :enum => %w(favorites followers friends listed screen_name since tweets tweeted), :default => 'screen_name', :desc => 'Specify the order of the results.', :banner => 'ORDER'
|
344
350
|
method_option 'unsorted', :aliases => '-u', :type => :boolean, :default => false, :desc => 'Output is not sorted.'
|
@@ -359,6 +365,7 @@ module T
|
|
359
365
|
method_option 'csv', :aliases => '-c', :type => :boolean, :default => false, :desc => 'Output in CSV format.'
|
360
366
|
method_option 'id', :aliases => '-i', :type => :boolean, :default => false, :desc => 'Specify user via ID instead of screen name.'
|
361
367
|
method_option 'long', :aliases => '-l', :type => :boolean, :default => false, :desc => 'Output in long format.'
|
368
|
+
method_option 'relative_dates', :aliases => '-a', :type => :boolean, :desc => 'Show relative dates.'
|
362
369
|
method_option 'reverse', :aliases => '-r', :type => :boolean, :default => false, :desc => 'Reverse the order of the sort.'
|
363
370
|
method_option 'sort', :aliases => '-s', :type => :string, :enum => %w(favorites followers friends listed screen_name since tweets tweeted), :default => 'screen_name', :desc => 'Specify the order of the results.', :banner => 'ORDER'
|
364
371
|
method_option 'unsorted', :aliases => '-u', :type => :boolean, :default => false, :desc => 'Output is not sorted.'
|
@@ -387,6 +394,7 @@ module T
|
|
387
394
|
method_option 'csv', :aliases => '-c', :type => :boolean, :default => false, :desc => 'Output in CSV format.'
|
388
395
|
method_option 'id', :aliases => '-i', :type => :boolean, :default => false, :desc => 'Specify user via ID instead of screen name.'
|
389
396
|
method_option 'long', :aliases => '-l', :type => :boolean, :default => false, :desc => 'Output in long format.'
|
397
|
+
method_option 'relative_dates', :aliases => '-a', :type => :boolean, :desc => 'Show relative dates.'
|
390
398
|
method_option 'reverse', :aliases => '-r', :type => :boolean, :default => false, :desc => 'Reverse the order of the sort.'
|
391
399
|
method_option 'sort', :aliases => '-s', :type => :string, :enum => %w(favorites followers friends listed screen_name since tweets tweeted), :default => 'screen_name', :desc => 'Specify the order of the results.', :banner => 'ORDER'
|
392
400
|
method_option 'unsorted', :aliases => '-u', :type => :boolean, :default => false, :desc => 'Output is not sorted.'
|
@@ -415,6 +423,7 @@ module T
|
|
415
423
|
method_option 'csv', :aliases => '-c', :type => :boolean, :default => false, :desc => 'Output in CSV format.'
|
416
424
|
method_option 'id', :aliases => '-i', :type => :boolean, :default => false, :desc => 'Specify user via ID instead of screen name.'
|
417
425
|
method_option 'long', :aliases => '-l', :type => :boolean, :default => false, :desc => 'Output in long format.'
|
426
|
+
method_option 'relative_dates', :aliases => '-a', :type => :boolean, :desc => 'Show relative dates.'
|
418
427
|
method_option 'reverse', :aliases => '-r', :type => :boolean, :default => false, :desc => 'Reverse the order of the sort.'
|
419
428
|
method_option 'sort', :aliases => '-s', :type => :string, :enum => %w(members mode since slug subscribers), :default => 'slug', :desc => 'Specify the order of the results.', :banner => 'ORDER'
|
420
429
|
method_option 'unsorted', :aliases => '-u', :type => :boolean, :default => false, :desc => 'Output is not sorted.'
|
@@ -435,6 +444,7 @@ module T
|
|
435
444
|
desc 'mentions', "Returns the #{DEFAULT_NUM_RESULTS} most recent Tweets mentioning you."
|
436
445
|
method_option 'csv', :aliases => '-c', :type => :boolean, :default => false, :desc => 'Output in CSV format.'
|
437
446
|
method_option 'long', :aliases => '-l', :type => :boolean, :default => false, :desc => 'Output in long format.'
|
447
|
+
method_option 'relative_dates', :aliases => '-a', :type => :boolean, :desc => 'Show relative dates.'
|
438
448
|
method_option 'number', :aliases => '-n', :type => :numeric, :default => DEFAULT_NUM_RESULTS, :desc => 'Limit the number of results.'
|
439
449
|
method_option 'reverse', :aliases => '-r', :type => :boolean, :default => false, :desc => 'Reverse the order of the sort.'
|
440
450
|
def mentions
|
@@ -466,7 +476,7 @@ module T
|
|
466
476
|
|
467
477
|
desc 'reply TWEET_ID MESSAGE', 'Post your Tweet as a reply directed at another person.'
|
468
478
|
method_option 'all', :aliases => '-a', :type => :boolean, :default => false, :desc => 'Reply to all users mentioned in the Tweet.'
|
469
|
-
method_option 'location', :aliases => '-l', :type => :string, :default =>
|
479
|
+
method_option 'location', :aliases => '-l', :type => :string, :default => nil, :desc => "Add location information. If the optional 'latitude,longitude' parameter is not supplied, looks up location by IP address."
|
470
480
|
def reply(status_id, message)
|
471
481
|
status = client.status(status_id.to_i, :include_my_retweet => false)
|
472
482
|
users = Array(status.user.screen_name)
|
@@ -513,6 +523,7 @@ module T
|
|
513
523
|
method_option 'csv', :aliases => '-c', :type => :boolean, :default => false, :desc => 'Output in CSV format.'
|
514
524
|
method_option 'id', :aliases => '-i', :type => :boolean, :default => false, :desc => 'Specify user via ID instead of screen name.'
|
515
525
|
method_option 'long', :aliases => '-l', :type => :boolean, :default => false, :desc => 'Output in long format.'
|
526
|
+
method_option 'relative_dates', :aliases => '-a', :type => :boolean, :desc => 'Show relative dates.'
|
516
527
|
method_option 'number', :aliases => '-n', :type => :numeric, :default => DEFAULT_NUM_RESULTS, :desc => 'Limit the number of results.'
|
517
528
|
method_option 'reverse', :aliases => '-r', :type => :boolean, :default => false, :desc => 'Reverse the order of the sort.'
|
518
529
|
def retweets(user = nil)
|
@@ -542,6 +553,7 @@ module T
|
|
542
553
|
desc 'status TWEET_ID', 'Retrieves detailed information about a Tweet.'
|
543
554
|
method_option 'csv', :aliases => '-c', :type => :boolean, :default => false, :desc => 'Output in CSV format.'
|
544
555
|
method_option 'long', :aliases => '-l', :type => :boolean, :default => false, :desc => 'Output in long format.'
|
556
|
+
method_option 'relative_dates', :aliases => '-a', :type => :boolean, :desc => 'Show relative dates.'
|
545
557
|
def status(status_id) # rubocop:disable CyclomaticComplexity
|
546
558
|
status = client.status(status_id.to_i, :include_my_retweet => false)
|
547
559
|
location = if status.place?
|
@@ -575,7 +587,7 @@ module T
|
|
575
587
|
array << ['ID', status.id.to_s]
|
576
588
|
array << ['Text', decode_full_text(status).gsub(/\n+/, ' ')]
|
577
589
|
array << ['Screen name', "@#{status.user.screen_name}"]
|
578
|
-
array << ['Posted at', "#{ls_formatted_time(status)} (#{time_ago_in_words(status.created_at)} ago)"]
|
590
|
+
array << ['Posted at', "#{ls_formatted_time(status, :created_at, false)} (#{time_ago_in_words(status.created_at)} ago)"]
|
579
591
|
array << ['Retweets', number_with_delimiter(status.retweet_count)]
|
580
592
|
array << ['Favorites', number_with_delimiter(status.favorite_count)]
|
581
593
|
array << ['Source', strip_tags(status.source)]
|
@@ -589,6 +601,7 @@ module T
|
|
589
601
|
method_option 'exclude', :aliases => '-e', :type => :string, :enum => %w(replies retweets), :desc => 'Exclude certain types of Tweets from the results.', :banner => 'TYPE'
|
590
602
|
method_option 'id', :aliases => '-i', :type => :boolean, :default => false, :desc => 'Specify user via ID instead of screen name.'
|
591
603
|
method_option 'long', :aliases => '-l', :type => :boolean, :default => false, :desc => 'Output in long format.'
|
604
|
+
method_option 'relative_dates', :aliases => '-a', :type => :boolean, :desc => 'Show relative dates.'
|
592
605
|
method_option 'max_id', :aliases => '-m', :type => :numeric, :desc => 'Returns only the results with an ID less than the specified ID.'
|
593
606
|
method_option 'number', :aliases => '-n', :type => :numeric, :default => DEFAULT_NUM_RESULTS, :desc => 'Limit the number of results.'
|
594
607
|
method_option 'reverse', :aliases => '-r', :type => :boolean, :default => false, :desc => 'Reverse the order of the sort.'
|
@@ -627,6 +640,7 @@ module T
|
|
627
640
|
desc 'trend_locations', 'Returns the locations for which Twitter has trending topic information.'
|
628
641
|
method_option 'csv', :aliases => '-c', :type => :boolean, :default => false, :desc => 'Output in CSV format.'
|
629
642
|
method_option 'long', :aliases => '-l', :type => :boolean, :default => false, :desc => 'Output in long format.'
|
643
|
+
method_option 'relative_dates', :aliases => '-a', :type => :boolean, :desc => 'Show relative dates.'
|
630
644
|
method_option 'reverse', :aliases => '-r', :type => :boolean, :default => false, :desc => 'Reverse the order of the sort.'
|
631
645
|
method_option 'sort', :aliases => '-s', :type => :string, :enum => %w(country name parent type woeid), :default => 'name', :desc => 'Specify the order of the results.', :banner => 'ORDER'
|
632
646
|
method_option 'unsorted', :aliases => '-u', :type => :boolean, :default => false, :desc => 'Output is not sorted.'
|
@@ -675,12 +689,13 @@ module T
|
|
675
689
|
end
|
676
690
|
|
677
691
|
desc 'update [MESSAGE]', 'Post a Tweet.'
|
678
|
-
method_option 'location', :aliases => '-l', :type => :string, :default =>
|
692
|
+
method_option 'location', :aliases => '-l', :type => :string, :default => nil, :desc => "Add location information. If the optional 'latitude,longitude' parameter is not supplied, looks up location by IP address."
|
679
693
|
method_option 'file', :aliases => '-f', :type => :string, :desc => 'The path to an image to attach to your tweet.'
|
680
694
|
def update(message = nil)
|
681
695
|
message = T::Editor.gets if message.nil? || message.empty?
|
682
696
|
opts = {:trim_user => true}
|
683
697
|
add_location!(options, opts)
|
698
|
+
|
684
699
|
status = if options['file']
|
685
700
|
client.update_with_media(message, File.new(File.expand_path(options['file'])), opts)
|
686
701
|
else
|
@@ -696,6 +711,7 @@ module T
|
|
696
711
|
method_option 'csv', :aliases => '-c', :type => :boolean, :default => false, :desc => 'Output in CSV format.'
|
697
712
|
method_option 'id', :aliases => '-i', :type => :boolean, :default => false, :desc => 'Specify input as Twitter user IDs instead of screen names.'
|
698
713
|
method_option 'long', :aliases => '-l', :type => :boolean, :default => false, :desc => 'Output in long format.'
|
714
|
+
method_option 'relative_dates', :aliases => '-a', :type => :boolean, :desc => 'Show relative dates.'
|
699
715
|
method_option 'reverse', :aliases => '-r', :type => :boolean, :default => false, :desc => 'Reverse the order of the sort.'
|
700
716
|
method_option 'sort', :aliases => '-s', :type => :string, :enum => %w(favorites followers friends listed screen_name since tweets tweeted), :default => 'screen_name', :desc => 'Specify the order of the results.', :banner => 'ORDER'
|
701
717
|
method_option 'unsorted', :aliases => '-u', :type => :boolean, :default => false, :desc => 'Output is not sorted.'
|
@@ -719,7 +735,8 @@ module T
|
|
719
735
|
method_option 'csv', :aliases => '-c', :type => :boolean, :default => false, :desc => 'Output in CSV format.'
|
720
736
|
method_option 'id', :aliases => '-i', :type => :boolean, :default => false, :desc => 'Specify user via ID instead of screen name.'
|
721
737
|
method_option 'long', :aliases => '-l', :type => :boolean, :default => false, :desc => 'Output in long format.'
|
722
|
-
|
738
|
+
method_option 'relative_dates', :aliases => '-a', :type => :boolean, :desc => 'Show relative dates.'
|
739
|
+
def whois(user) # rubocop:disable CyclomaticComplexity
|
723
740
|
require 't/core_ext/string'
|
724
741
|
user = options['id'] ? user.to_i : user.strip_ats
|
725
742
|
user = client.user(user)
|
@@ -729,7 +746,7 @@ module T
|
|
729
746
|
else
|
730
747
|
array = []
|
731
748
|
array << ['ID', user.id.to_s]
|
732
|
-
array << ['Since', "#{ls_formatted_time(user)} (#{time_ago_in_words(user.created_at)} ago)"]
|
749
|
+
array << ['Since', "#{ls_formatted_time(user, :created_at, false)} (#{time_ago_in_words(user.created_at)} ago)"]
|
733
750
|
array << ['Last update', "#{decode_full_text(user.status).gsub(/\n+/, ' ')} (#{time_ago_in_words(user.status.created_at)} ago)"] unless user.status.nil?
|
734
751
|
array << ['Screen name', "@#{user.screen_name}"]
|
735
752
|
array << [user.verified ? 'Name (Verified)' : 'Name', user.name] unless user.name.nil?
|
data/lib/t/list.rb
CHANGED
@@ -64,7 +64,7 @@ module T
|
|
64
64
|
array << ['Description', list.description] unless list.description.nil?
|
65
65
|
array << ['Slug', list.slug]
|
66
66
|
array << ['Screen name', "@#{list.user.screen_name}"]
|
67
|
-
array << ['Created at', "#{ls_formatted_time(list)} (#{time_ago_in_words(list.created_at)} ago)"]
|
67
|
+
array << ['Created at', "#{ls_formatted_time(list, :created_at, false)} (#{time_ago_in_words(list.created_at)} ago)"]
|
68
68
|
array << ['Members', number_with_delimiter(list.member_count)]
|
69
69
|
array << ['Subscribers', number_with_delimiter(list.subscriber_count)]
|
70
70
|
array << ['Status', list.following ? 'Following' : 'Not following']
|
data/lib/t/printable.rb
CHANGED
@@ -25,10 +25,12 @@ module T
|
|
25
25
|
time.utc.strftime('%Y-%m-%d %H:%M:%S %z')
|
26
26
|
end
|
27
27
|
|
28
|
-
def ls_formatted_time(object, key = :created_at)
|
28
|
+
def ls_formatted_time(object, key = :created_at, allow_relative = true)
|
29
29
|
return '' if object.nil?
|
30
30
|
time = T.local_time(object.send(key.to_sym))
|
31
|
-
if
|
31
|
+
if allow_relative && options['relative_dates']
|
32
|
+
distance_of_time_in_words(time) + ' ago'
|
33
|
+
elsif time > Time.now - MONTH_IN_SECONDS * 6
|
32
34
|
time.strftime('%b %e %H:%M')
|
33
35
|
else
|
34
36
|
time.strftime('%b %e %Y')
|
data/lib/t/version.rb
CHANGED
data/spec/cli_spec.rb
CHANGED
@@ -29,6 +29,69 @@ describe T::CLI do
|
|
29
29
|
$stdout = @old_stdout
|
30
30
|
end
|
31
31
|
|
32
|
+
describe '--relative-dates' do
|
33
|
+
before do
|
34
|
+
stub_get('/1.1/statuses/show/55709764298092545.json').with(:query => {:include_my_retweet => 'false'}).to_return(:body => fixture('status.json'))
|
35
|
+
stub_get('/1.1/users/show.json').with(:query => {:screen_name => 'sferik'}).to_return(:body => fixture('sferik.json'))
|
36
|
+
@cli.options = @cli.options.merge('relative_dates' => true)
|
37
|
+
end
|
38
|
+
it 'status has the correct output (absolute and relative date together)' do
|
39
|
+
@cli.status('55709764298092545')
|
40
|
+
expect($stdout.string).to eq <<-eos
|
41
|
+
ID 55709764298092545
|
42
|
+
Text The problem with your code is that it's doing exactly what you told it to do.
|
43
|
+
Screen name @sferik
|
44
|
+
Posted at Apr 6 2011 (8 months ago)
|
45
|
+
Retweets 320
|
46
|
+
Favorites 50
|
47
|
+
Source Twitter for iPhone
|
48
|
+
Location Blowfish Sushi To Die For, 2170 Bryant St, San Francisco, California, United States
|
49
|
+
eos
|
50
|
+
end
|
51
|
+
it 'whois has the correct output (absolute and relative date together)' do
|
52
|
+
@cli.whois('sferik')
|
53
|
+
expect($stdout.string).to eq <<-eos
|
54
|
+
ID 7505382
|
55
|
+
Since Jul 16 2007 (4 years ago)
|
56
|
+
Last update @goldman You're near my home town! Say hi to Woodstock for me. (7 months ago)
|
57
|
+
Screen name @sferik
|
58
|
+
Name Erik Michaels-Ober
|
59
|
+
Tweets 7,890
|
60
|
+
Favorites 3,755
|
61
|
+
Listed 118
|
62
|
+
Following 212
|
63
|
+
Followers 2,262
|
64
|
+
Bio Vagabond.
|
65
|
+
Location San Francisco
|
66
|
+
URL https://github.com/sferik
|
67
|
+
eos
|
68
|
+
end
|
69
|
+
context '--csv' do
|
70
|
+
before do
|
71
|
+
@cli.options = @cli.options.merge('csv' => true)
|
72
|
+
end
|
73
|
+
it 'has the correct output (absolute date in csv)' do
|
74
|
+
@cli.status('55709764298092545')
|
75
|
+
expect($stdout.string).to eq <<-eos
|
76
|
+
ID,Posted at,Screen name,Text,Retweets,Favorites,Source,Location
|
77
|
+
55709764298092545,2011-04-06 19:13:37 +0000,sferik,The problem with your code is that it's doing exactly what you told it to do.,320,50,Twitter for iPhone,"Blowfish Sushi To Die For, 2170 Bryant St, San Francisco, California, United States"
|
78
|
+
eos
|
79
|
+
end
|
80
|
+
end
|
81
|
+
context '--long' do
|
82
|
+
before do
|
83
|
+
@cli.options = @cli.options.merge('long' => true)
|
84
|
+
end
|
85
|
+
it 'outputs in long format' do
|
86
|
+
@cli.status('55709764298092545')
|
87
|
+
expect($stdout.string).to eq <<-eos
|
88
|
+
ID Posted at Screen name Text ...
|
89
|
+
55709764298092545 8 months ago @sferik The problem with your code is t...
|
90
|
+
eos
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
32
95
|
describe '#account' do
|
33
96
|
before do
|
34
97
|
@cli.options = @cli.options.merge('profile' => fixture_path + '/.trc')
|
data/spec/list_spec.rb
CHANGED
@@ -101,6 +101,22 @@ Members 2
|
|
101
101
|
Subscribers 1
|
102
102
|
Status Not following
|
103
103
|
Mode public
|
104
|
+
URL https://twitter.com/sferik/presidents
|
105
|
+
eos
|
106
|
+
end
|
107
|
+
it 'has the correct output with --relative-dates turned on' do
|
108
|
+
@list.options = @list.options.merge('relative_dates' => true)
|
109
|
+
@list.information('presidents')
|
110
|
+
expect($stdout.string).to eq <<-eos
|
111
|
+
ID 8863586
|
112
|
+
Description Presidents of the United States of America
|
113
|
+
Slug presidents
|
114
|
+
Screen name @sferik
|
115
|
+
Created at Mar 15 2010 (a year ago)
|
116
|
+
Members 2
|
117
|
+
Subscribers 1
|
118
|
+
Status Not following
|
119
|
+
Mode public
|
104
120
|
URL https://twitter.com/sferik/presidents
|
105
121
|
eos
|
106
122
|
end
|
data/t.gemspec
CHANGED
@@ -4,13 +4,13 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 't/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.add_dependency 'launchy', '~> 2.
|
8
|
-
spec.add_dependency 'geokit', '~> 1.
|
7
|
+
spec.add_dependency 'launchy', '~> 2.4'
|
8
|
+
spec.add_dependency 'geokit', '~> 1.7'
|
9
9
|
spec.add_dependency 'htmlentities', '~> 4.3'
|
10
|
-
spec.add_dependency 'oauth', '~> 0.4'
|
11
|
-
spec.add_dependency 'retryable', '~> 1.
|
10
|
+
spec.add_dependency 'oauth', '~> 0.4.7'
|
11
|
+
spec.add_dependency 'retryable', '~> 1.3'
|
12
12
|
spec.add_dependency 'thor', ['>= 0.18.1', '< 2']
|
13
|
-
spec.add_dependency 'twitter', '~> 5.
|
13
|
+
spec.add_dependency 'twitter', '~> 5.3'
|
14
14
|
spec.add_development_dependency 'bundler', '~> 1.0'
|
15
15
|
spec.author = "Erik Michaels-Ober"
|
16
16
|
spec.bindir = 'bin'
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,177 +1,154 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: t
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
5
|
-
prerelease:
|
4
|
+
version: 2.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Erik Michaels-Ober
|
9
|
-
autorequire:
|
8
|
+
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain:
|
12
|
-
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
RURoWmtTY1lla3c0Wk9lMTY0WnRaRzgxNm9BdjV4MHBHaXRTSWt1bVVwN1Y4
|
35
|
-
aUVaLzZlaHI3WTllClhPZzRlZXVuNUwvSmptakFSb1cya05kdmtSRDNjMkVl
|
36
|
-
U0xxV3ZRUnNCbHlwSGZoczZKSnVMbHlaUEdoVTNSL3YKU2YzbFZLcEJDV2dS
|
37
|
-
cEdUdnk0NVhWcEIrNTl5MzNQSm1FdVExUFRFT1l2UXlhbzlVS01BQWFBTi83
|
38
|
-
cVdRdGpsMApobHc9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
|
39
|
-
date: 2013-12-14 00:00:00.000000000 Z
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIDLjCCAhagAwIBAgIBADANBgkqhkiG9w0BAQUFADA9MQ8wDQYDVQQDDAZzZmVy
|
14
|
+
aWsxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkWA2NvbTAe
|
15
|
+
Fw0xMzAyMDMxMDAyMjdaFw0xNDAyMDMxMDAyMjdaMD0xDzANBgNVBAMMBnNmZXJp
|
16
|
+
azEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPyLGQBGRYDY29tMIIB
|
17
|
+
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAl0x5dx8uKxi7TkrIuyBUTJVB
|
18
|
+
v1o93nUB9j/y4M96gV2rYwAci1JPBseNd6Fybzjo3YGuHl7EQHuSHNaf1p2lxew/
|
19
|
+
y60JXIJBBgPcDK/KCP4NUHofm0jfoYD+H5uNJfHCNq7/ZsTxOtE3Ra92s0BCMTpm
|
20
|
+
wBMMlWR5MtdEhIYuBO4XhnejYgH0L/7BL2lymntVnsr/agdQoojQCN1IQmsRJvrR
|
21
|
+
duZRO3tZvoIo1pBc4JEehDuqCeyBgPLOqMoKtQlold1TQs1kWUBK7KWMFEhKC/Kg
|
22
|
+
zyzKRHQo9yDYwOvYngoBLY+T/lwCT4dyssdhzRbfnxAhaKu4SAssIwaC01yVowID
|
23
|
+
AQABozkwNzAJBgNVHRMEAjAAMB0GA1UdDgQWBBS0ruDfRak5ci1OpDNX/ZdDEkIs
|
24
|
+
iTALBgNVHQ8EBAMCBLAwDQYJKoZIhvcNAQEFBQADggEBAHHSMs/MP0sOaLkEv4Jo
|
25
|
+
zvkm3qn5A6t0vaHx774cmejyMU+5wySxRezspL7ULh9NeuK2OhU+Oe3TpqrAg5TK
|
26
|
+
R8GQILnVu2FemGA6sAkPDlcPtgA6ieI19PZOF6HVLmc/ID/dP/NgZWWzEeqQKmcK
|
27
|
+
2+HM+SEEDhZkScYekw4ZOe164ZtZG816oAv5x0pGitSIkumUp7V8iEZ/6ehr7Y9e
|
28
|
+
XOg4eeun5L/JjmjARoW2kNdvkRD3c2EeSLqWvQRsBlypHfhs6JJuLlyZPGhU3R/v
|
29
|
+
Sf3lVKpBCWgRpGTvy45XVpB+59y33PJmEuQ1PTEOYvQyao9UKMAAaAN/7qWQtjl0
|
30
|
+
hlw=
|
31
|
+
-----END CERTIFICATE-----
|
32
|
+
date: 2013-12-18 00:00:00.000000000 Z
|
40
33
|
dependencies:
|
41
34
|
- !ruby/object:Gem::Dependency
|
42
35
|
name: launchy
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.4'
|
43
41
|
requirement: !ruby/object:Gem::Requirement
|
44
|
-
none: false
|
45
42
|
requirements:
|
46
43
|
- - ~>
|
47
44
|
- !ruby/object:Gem::Version
|
48
|
-
version: '2.
|
49
|
-
type: :runtime
|
45
|
+
version: '2.4'
|
50
46
|
prerelease: false
|
47
|
+
type: :runtime
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: geokit
|
51
50
|
version_requirements: !ruby/object:Gem::Requirement
|
52
|
-
none: false
|
53
51
|
requirements:
|
54
52
|
- - ~>
|
55
53
|
- !ruby/object:Gem::Version
|
56
|
-
version: '
|
57
|
-
- !ruby/object:Gem::Dependency
|
58
|
-
name: geokit
|
54
|
+
version: '1.7'
|
59
55
|
requirement: !ruby/object:Gem::Requirement
|
60
|
-
none: false
|
61
56
|
requirements:
|
62
57
|
- - ~>
|
63
58
|
- !ruby/object:Gem::Version
|
64
|
-
version: '1.
|
65
|
-
type: :runtime
|
59
|
+
version: '1.7'
|
66
60
|
prerelease: false
|
61
|
+
type: :runtime
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: htmlentities
|
67
64
|
version_requirements: !ruby/object:Gem::Requirement
|
68
|
-
none: false
|
69
65
|
requirements:
|
70
66
|
- - ~>
|
71
67
|
- !ruby/object:Gem::Version
|
72
|
-
version: '
|
73
|
-
- !ruby/object:Gem::Dependency
|
74
|
-
name: htmlentities
|
68
|
+
version: '4.3'
|
75
69
|
requirement: !ruby/object:Gem::Requirement
|
76
|
-
none: false
|
77
70
|
requirements:
|
78
71
|
- - ~>
|
79
72
|
- !ruby/object:Gem::Version
|
80
73
|
version: '4.3'
|
81
|
-
type: :runtime
|
82
74
|
prerelease: false
|
75
|
+
type: :runtime
|
76
|
+
- !ruby/object:Gem::Dependency
|
77
|
+
name: oauth
|
83
78
|
version_requirements: !ruby/object:Gem::Requirement
|
84
|
-
none: false
|
85
79
|
requirements:
|
86
80
|
- - ~>
|
87
81
|
- !ruby/object:Gem::Version
|
88
|
-
version:
|
89
|
-
- !ruby/object:Gem::Dependency
|
90
|
-
name: oauth
|
82
|
+
version: 0.4.7
|
91
83
|
requirement: !ruby/object:Gem::Requirement
|
92
|
-
none: false
|
93
84
|
requirements:
|
94
85
|
- - ~>
|
95
86
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
97
|
-
type: :runtime
|
87
|
+
version: 0.4.7
|
98
88
|
prerelease: false
|
89
|
+
type: :runtime
|
90
|
+
- !ruby/object:Gem::Dependency
|
91
|
+
name: retryable
|
99
92
|
version_requirements: !ruby/object:Gem::Requirement
|
100
|
-
none: false
|
101
93
|
requirements:
|
102
94
|
- - ~>
|
103
95
|
- !ruby/object:Gem::Version
|
104
|
-
version: '
|
105
|
-
- !ruby/object:Gem::Dependency
|
106
|
-
name: retryable
|
96
|
+
version: '1.3'
|
107
97
|
requirement: !ruby/object:Gem::Requirement
|
108
|
-
none: false
|
109
98
|
requirements:
|
110
99
|
- - ~>
|
111
100
|
- !ruby/object:Gem::Version
|
112
|
-
version: '1.
|
113
|
-
type: :runtime
|
101
|
+
version: '1.3'
|
114
102
|
prerelease: false
|
115
|
-
|
116
|
-
none: false
|
117
|
-
requirements:
|
118
|
-
- - ~>
|
119
|
-
- !ruby/object:Gem::Version
|
120
|
-
version: '1.2'
|
103
|
+
type: :runtime
|
121
104
|
- !ruby/object:Gem::Dependency
|
122
105
|
name: thor
|
123
|
-
|
124
|
-
none: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
125
107
|
requirements:
|
126
|
-
- -
|
108
|
+
- - '>='
|
127
109
|
- !ruby/object:Gem::Version
|
128
110
|
version: 0.18.1
|
129
111
|
- - <
|
130
112
|
- !ruby/object:Gem::Version
|
131
113
|
version: '2'
|
132
|
-
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
none: false
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
136
115
|
requirements:
|
137
|
-
- -
|
116
|
+
- - '>='
|
138
117
|
- !ruby/object:Gem::Version
|
139
118
|
version: 0.18.1
|
140
119
|
- - <
|
141
120
|
- !ruby/object:Gem::Version
|
142
121
|
version: '2'
|
122
|
+
prerelease: false
|
123
|
+
type: :runtime
|
143
124
|
- !ruby/object:Gem::Dependency
|
144
125
|
name: twitter
|
145
|
-
|
146
|
-
none: false
|
126
|
+
version_requirements: !ruby/object:Gem::Requirement
|
147
127
|
requirements:
|
148
128
|
- - ~>
|
149
129
|
- !ruby/object:Gem::Version
|
150
|
-
version: '5.
|
151
|
-
|
152
|
-
prerelease: false
|
153
|
-
version_requirements: !ruby/object:Gem::Requirement
|
154
|
-
none: false
|
130
|
+
version: '5.3'
|
131
|
+
requirement: !ruby/object:Gem::Requirement
|
155
132
|
requirements:
|
156
133
|
- - ~>
|
157
134
|
- !ruby/object:Gem::Version
|
158
|
-
version: '5.
|
135
|
+
version: '5.3'
|
136
|
+
prerelease: false
|
137
|
+
type: :runtime
|
159
138
|
- !ruby/object:Gem::Dependency
|
160
139
|
name: bundler
|
161
|
-
|
162
|
-
none: false
|
140
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
141
|
requirements:
|
164
142
|
- - ~>
|
165
143
|
- !ruby/object:Gem::Version
|
166
144
|
version: '1.0'
|
167
|
-
|
168
|
-
prerelease: false
|
169
|
-
version_requirements: !ruby/object:Gem::Requirement
|
170
|
-
none: false
|
145
|
+
requirement: !ruby/object:Gem::Requirement
|
171
146
|
requirements:
|
172
147
|
- - ~>
|
173
148
|
- !ruby/object:Gem::Version
|
174
149
|
version: '1.0'
|
150
|
+
prerelease: false
|
151
|
+
type: :development
|
175
152
|
description: A command-line power tool for Twitter.
|
176
153
|
email: sferik@gmail.com
|
177
154
|
executables:
|
@@ -185,10 +162,9 @@ files:
|
|
185
162
|
- Rakefile
|
186
163
|
- t.gemspec
|
187
164
|
- bin/t
|
165
|
+
- lib/t.rb
|
188
166
|
- lib/t/cli.rb
|
189
167
|
- lib/t/collectable.rb
|
190
|
-
- lib/t/core_ext/kernel.rb
|
191
|
-
- lib/t/core_ext/string.rb
|
192
168
|
- lib/t/delete.rb
|
193
169
|
- lib/t/editor.rb
|
194
170
|
- lib/t/list.rb
|
@@ -200,10 +176,18 @@ files:
|
|
200
176
|
- lib/t/stream.rb
|
201
177
|
- lib/t/utils.rb
|
202
178
|
- lib/t/version.rb
|
203
|
-
- lib/t.rb
|
179
|
+
- lib/t/core_ext/kernel.rb
|
180
|
+
- lib/t/core_ext/string.rb
|
204
181
|
- spec/cli_spec.rb
|
205
182
|
- spec/delete_spec.rb
|
206
183
|
- spec/editor_spec.rb
|
184
|
+
- spec/helper.rb
|
185
|
+
- spec/list_spec.rb
|
186
|
+
- spec/rcfile_spec.rb
|
187
|
+
- spec/search_spec.rb
|
188
|
+
- spec/set_spec.rb
|
189
|
+
- spec/stream_spec.rb
|
190
|
+
- spec/utils_spec.rb
|
207
191
|
- spec/fixtures/200_direct_messages.json
|
208
192
|
- spec/fixtures/200_statuses.json
|
209
193
|
- spec/fixtures/501_ids.json
|
@@ -252,42 +236,41 @@ files:
|
|
252
236
|
- spec/fixtures/users.json
|
253
237
|
- spec/fixtures/users_list.json
|
254
238
|
- spec/fixtures/we_concept_bg2.png
|
255
|
-
- spec/helper.rb
|
256
|
-
- spec/list_spec.rb
|
257
|
-
- spec/rcfile_spec.rb
|
258
|
-
- spec/search_spec.rb
|
259
|
-
- spec/set_spec.rb
|
260
|
-
- spec/stream_spec.rb
|
261
|
-
- spec/utils_spec.rb
|
262
239
|
homepage: http://sferik.github.com/t/
|
263
240
|
licenses:
|
264
241
|
- MIT
|
265
|
-
|
242
|
+
metadata: {}
|
243
|
+
post_install_message:
|
266
244
|
rdoc_options: []
|
267
245
|
require_paths:
|
268
246
|
- lib
|
269
247
|
required_ruby_version: !ruby/object:Gem::Requirement
|
270
|
-
none: false
|
271
248
|
requirements:
|
272
|
-
- -
|
249
|
+
- - '>='
|
273
250
|
- !ruby/object:Gem::Version
|
274
251
|
version: 1.9.2
|
275
252
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
276
|
-
none: false
|
277
253
|
requirements:
|
278
|
-
- -
|
254
|
+
- - '>='
|
279
255
|
- !ruby/object:Gem::Version
|
280
256
|
version: 1.3.5
|
281
257
|
requirements: []
|
282
|
-
rubyforge_project:
|
283
|
-
rubygems_version: 1.
|
284
|
-
signing_key:
|
285
|
-
specification_version:
|
258
|
+
rubyforge_project:
|
259
|
+
rubygems_version: 2.1.9
|
260
|
+
signing_key:
|
261
|
+
specification_version: 4
|
286
262
|
summary: CLI for Twitter
|
287
263
|
test_files:
|
288
264
|
- spec/cli_spec.rb
|
289
265
|
- spec/delete_spec.rb
|
290
266
|
- spec/editor_spec.rb
|
267
|
+
- spec/helper.rb
|
268
|
+
- spec/list_spec.rb
|
269
|
+
- spec/rcfile_spec.rb
|
270
|
+
- spec/search_spec.rb
|
271
|
+
- spec/set_spec.rb
|
272
|
+
- spec/stream_spec.rb
|
273
|
+
- spec/utils_spec.rb
|
291
274
|
- spec/fixtures/200_direct_messages.json
|
292
275
|
- spec/fixtures/200_statuses.json
|
293
276
|
- spec/fixtures/501_ids.json
|
@@ -336,11 +319,3 @@ test_files:
|
|
336
319
|
- spec/fixtures/users.json
|
337
320
|
- spec/fixtures/users_list.json
|
338
321
|
- spec/fixtures/we_concept_bg2.png
|
339
|
-
- spec/helper.rb
|
340
|
-
- spec/list_spec.rb
|
341
|
-
- spec/rcfile_spec.rb
|
342
|
-
- spec/search_spec.rb
|
343
|
-
- spec/set_spec.rb
|
344
|
-
- spec/stream_spec.rb
|
345
|
-
- spec/utils_spec.rb
|
346
|
-
has_rdoc:
|
metadata.gz.sig
CHANGED
Binary file
|