gist 4.4.1 → 4.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/build/gist +67 -18
- data/build/gist.1 +3 -3
- data/lib/gist.rb +2 -2
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e12581fd7b9192039f572f5db1410b6bdab6f0db
|
4
|
+
data.tar.gz: 8a4610f6c68462becff34e98313008156e45c5c7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 17306b9e02e386fa63a545fa704298a1a6564736f4939752f68ca0c56176a16e17aa4817d57bc1a25098e86b05e979f03dae084c675f867a635d3667c43f4fab
|
7
|
+
data.tar.gz: ebd268363f70e892bb7b4bca00df423cb95afe2e54cefd53682628a9a1d4be6c146efcbbacb53664067d40ee3b5ae234883547eca29ebb8b67c68d9ef033e366
|
data/build/gist
CHANGED
@@ -1318,12 +1318,12 @@ end
|
|
1318
1318
|
module Gist
|
1319
1319
|
extend self
|
1320
1320
|
|
1321
|
-
VERSION = '4.
|
1321
|
+
VERSION = '4.4.2'
|
1322
1322
|
|
1323
1323
|
# A list of clipboard commands with copy and paste support.
|
1324
1324
|
CLIPBOARD_COMMANDS = {
|
1325
1325
|
'xclip' => 'xclip -o',
|
1326
|
-
'xsel -i'
|
1326
|
+
'xsel -i' => 'xsel -o',
|
1327
1327
|
'pbcopy' => 'pbpaste',
|
1328
1328
|
'putclip' => 'getclip'
|
1329
1329
|
}
|
@@ -1346,11 +1346,32 @@ module Gist
|
|
1346
1346
|
end
|
1347
1347
|
class ClipboardError < RuntimeError; include Error end
|
1348
1348
|
|
1349
|
+
# helper module for authentication token actions
|
1350
|
+
module AuthTokenFile
|
1351
|
+
def self.filename
|
1352
|
+
if ENV.key?(URL_ENV_NAME)
|
1353
|
+
File.expand_path "~/.gist.#{ENV[URL_ENV_NAME].gsub(/[^a-z.]/, '')}"
|
1354
|
+
else
|
1355
|
+
File.expand_path "~/.gist"
|
1356
|
+
end
|
1357
|
+
end
|
1358
|
+
|
1359
|
+
def self.read
|
1360
|
+
File.read(filename).chomp
|
1361
|
+
end
|
1362
|
+
|
1363
|
+
def self.write(token)
|
1364
|
+
File.open(filename, 'w', 0600) do |f|
|
1365
|
+
f.write token
|
1366
|
+
end
|
1367
|
+
end
|
1368
|
+
end
|
1369
|
+
|
1349
1370
|
# auth token for authentication
|
1350
1371
|
#
|
1351
1372
|
# @return [String] string value of access token or `nil`, if not found
|
1352
1373
|
def auth_token
|
1353
|
-
@token ||=
|
1374
|
+
@token ||= AuthTokenFile.read rescue nil
|
1354
1375
|
end
|
1355
1376
|
|
1356
1377
|
# Upload a gist to https://gist.github.com
|
@@ -1437,6 +1458,7 @@ module Gist
|
|
1437
1458
|
# otherwise list public gists for given username (optional argument)
|
1438
1459
|
#
|
1439
1460
|
# @param [String] user
|
1461
|
+
# @deprecated
|
1440
1462
|
#
|
1441
1463
|
# see https://developer.github.com/v3/gists/#list-gists
|
1442
1464
|
def list_gists(user = "")
|
@@ -1466,6 +1488,40 @@ module Gist
|
|
1466
1488
|
end
|
1467
1489
|
end
|
1468
1490
|
|
1491
|
+
def list_all_gists(user = "")
|
1492
|
+
url = "#{base_path}"
|
1493
|
+
|
1494
|
+
if user == ""
|
1495
|
+
access_token = auth_token()
|
1496
|
+
if access_token.to_s != ''
|
1497
|
+
url << "/gists?per_page=100&access_token=" << CGI.escape(access_token)
|
1498
|
+
get_gist_pages(url)
|
1499
|
+
else
|
1500
|
+
raise Error, "Not authenticated. Use 'gist --login' to login or 'gist -l username' to view public gists."
|
1501
|
+
end
|
1502
|
+
|
1503
|
+
else
|
1504
|
+
url << "/users/#{user}/gists?per_page=100"
|
1505
|
+
get_gist_pages(url)
|
1506
|
+
end
|
1507
|
+
|
1508
|
+
end
|
1509
|
+
|
1510
|
+
def get_gist_pages(url)
|
1511
|
+
|
1512
|
+
request = Net::HTTP::Get.new(url)
|
1513
|
+
response = http(api_url, request)
|
1514
|
+
pretty_gist(response)
|
1515
|
+
|
1516
|
+
link_header = response.header['link']
|
1517
|
+
|
1518
|
+
if link_header
|
1519
|
+
links = Hash[ link_header.gsub(/(<|>|")/, "").split(',').map { |link| link.split('; rel=') } ].invert
|
1520
|
+
get_gist_pages(links['next']) if links['next']
|
1521
|
+
end
|
1522
|
+
|
1523
|
+
end
|
1524
|
+
|
1469
1525
|
# return prettified string result of response body for all gists
|
1470
1526
|
#
|
1471
1527
|
# @params [Net::HTTPResponse] response
|
@@ -1476,7 +1532,9 @@ module Gist
|
|
1476
1532
|
body = JSON.parse(response.body)
|
1477
1533
|
if response.code == '200'
|
1478
1534
|
body.each do |gist|
|
1479
|
-
|
1535
|
+
description = "#{gist['description'] || gist['files'].keys.join(" ")} #{gist['public'] ? '' : '(secret)'}"
|
1536
|
+
puts "#{gist['html_url']} #{description.tr("\n", " ")}\n"
|
1537
|
+
$stdout.flush
|
1480
1538
|
end
|
1481
1539
|
|
1482
1540
|
else
|
@@ -1564,9 +1622,7 @@ module Gist
|
|
1564
1622
|
end
|
1565
1623
|
|
1566
1624
|
if Net::HTTPCreated === response
|
1567
|
-
|
1568
|
-
f.write JSON.parse(response.body)['token']
|
1569
|
-
end
|
1625
|
+
AuthTokenFile.write JSON.parse(response.body)['token']
|
1570
1626
|
puts "Success! #{ENV[URL_ENV_NAME] || "https://github.com/"}settings/applications"
|
1571
1627
|
return
|
1572
1628
|
elsif Net::HTTPUnauthorized === response
|
@@ -1747,14 +1803,6 @@ Could not find copy command, tried:
|
|
1747
1803
|
ENV.key?(URL_ENV_NAME) ? URI(ENV[URL_ENV_NAME]) : GITHUB_API_URL
|
1748
1804
|
end
|
1749
1805
|
|
1750
|
-
def auth_token_file
|
1751
|
-
if ENV.key?(URL_ENV_NAME)
|
1752
|
-
File.expand_path "~/.gist.#{ENV[URL_ENV_NAME].gsub(/[^a-z.]/, '')}"
|
1753
|
-
else
|
1754
|
-
File.expand_path "~/.gist"
|
1755
|
-
end
|
1756
|
-
end
|
1757
|
-
|
1758
1806
|
def legacy_private_gister?
|
1759
1807
|
return unless which('git')
|
1760
1808
|
`git config --global gist.private` =~ /\Ayes|1|true|on\z/i
|
@@ -1772,6 +1820,7 @@ end
|
|
1772
1820
|
|
1773
1821
|
# Silence Ctrl-C's
|
1774
1822
|
trap('INT'){ exit 1 }
|
1823
|
+
trap('PIPE', 'EXIT')
|
1775
1824
|
|
1776
1825
|
require 'optparse'
|
1777
1826
|
|
@@ -1875,7 +1924,7 @@ Usage: #{executable_name} [-o|-c|-e] [-p] [-s] [-R] [-d DESC] [-a] [-u URL] [-P]
|
|
1875
1924
|
options[:paste] = true
|
1876
1925
|
end
|
1877
1926
|
|
1878
|
-
opts.on("-R", "--raw", "
|
1927
|
+
opts.on("-R", "--raw", "Display raw URL of the new gist") do
|
1879
1928
|
options[:raw] = true
|
1880
1929
|
end
|
1881
1930
|
|
@@ -1914,9 +1963,9 @@ begin
|
|
1914
1963
|
|
1915
1964
|
if options.key? :list
|
1916
1965
|
if options[:list]
|
1917
|
-
Gist.
|
1966
|
+
Gist.list_all_gists(options[:list])
|
1918
1967
|
else
|
1919
|
-
Gist.
|
1968
|
+
Gist.list_all_gists
|
1920
1969
|
end
|
1921
1970
|
exit
|
1922
1971
|
end
|
data/build/gist.1
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "GIST" "1" "
|
4
|
+
.TH "GIST" "1" "July 2015" "" "Gist manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBgist\fR \- upload code to https://gist\.github\.com
|
@@ -73,7 +73,7 @@ gist \-d "Random rbx bug" a\.rb
|
|
73
73
|
You can update existing gists with \fB\-u\fR:
|
74
74
|
.
|
75
75
|
.IP
|
76
|
-
gist
|
76
|
+
gist \-u GIST_ID FILE_NAME gist \-u 42f2c239d2eb57299408 test\.txt
|
77
77
|
.
|
78
78
|
.IP "\(bu" 4
|
79
79
|
If you\'d like to copy the resulting URL to your clipboard, use \fB\-c\fR\.
|
@@ -123,7 +123,7 @@ Success! https://github\.com/settings/applications
|
|
123
123
|
.IP "" 0
|
124
124
|
.
|
125
125
|
.P
|
126
|
-
You can read the 2\-factor auth code from an sms or the
|
126
|
+
You can read the 2\-factor auth code from an sms or the authentication app, depending on how you set your account up \fIhttps://github\.com/settings/admin\fR\.
|
127
127
|
.
|
128
128
|
.P
|
129
129
|
Note: 2\-factor authentication just appeared recently \fIhttps://github\.com/blog/1614\-two\-factor\-authentication\fR, so if you run into errors, update the gist gem\.
|
data/lib/gist.rb
CHANGED
@@ -12,7 +12,7 @@ end
|
|
12
12
|
module Gist
|
13
13
|
extend self
|
14
14
|
|
15
|
-
VERSION = '4.4.
|
15
|
+
VERSION = '4.4.2'
|
16
16
|
|
17
17
|
# A list of clipboard commands with copy and paste support.
|
18
18
|
CLIPBOARD_COMMANDS = {
|
@@ -188,7 +188,7 @@ module Gist
|
|
188
188
|
if user == ""
|
189
189
|
access_token = auth_token()
|
190
190
|
if access_token.to_s != ''
|
191
|
-
url << "/gists?per_page=100&
|
191
|
+
url << "/gists?per_page=100&access_token=" << CGI.escape(access_token)
|
192
192
|
get_gist_pages(url)
|
193
193
|
else
|
194
194
|
raise Error, "Not authenticated. Use 'gist --login' to login or 'gist -l username' to view public gists."
|