Refactor reading from stdin so --type option works #112

wants to merge 2 commits into

1 participant


When reading from stdin, a filename must be set with an extension since the GitHub gist API infers file type from filename and not extension. Thanks to @ottomata for the original implementation. Fixes Issue #101.

@simeonwillbanks simeonwillbanks When reading from stdin, a filename must be set with an extension sin…
…ce the GitHub gist API infers file type from filename and not extension. Thanks to @ottomata for the original implementation. Fixes Issue #101.


$curl -s > gist && chmod 755 gist && mv gist /usr/local/bin/gist

$mvim /usr/local/bin/gist # Edit file to include 09a79f8

$exec $SHELL

$cat test.rb | gist -trb -d'Testing 09a79f8dc3'


Testing Again

$ gst
# On branch issue-101-type-option-not-working-from-stdin

$ rake standalone

$ mv gist /usr/local/bin && chmod 755 /usr/local/bin/gist

$ diff /usr/local/bin/gist gist
< # NOTE github gist API doesn't seem to
< # pay any attention to :extension here.
< # Since we don't have a read filename,
< # create one based on timestamp and extension.
< # Automatic syntax highlighting must be inferred
< files = [{
< :input => input,
< :extension => gist_extension,
< :filename =>\W/, '') + gist_extension
< }]
> files = [{:input => input, :extension => gist_extension}]

$ exec $SHELL

$ gist -d'issue-101-type-option-not-working-from-stdin gist binary' test.txt


Here is the binary for review.

@simeonwillbanks simeonwillbanks When creating a gist from stdin, if file type is not specified, gist_…
…extension is nil. Therefore, call #to_s to avoid "can't convert nil into String" error.
@ConradIrwin ConradIrwin added a commit that closed this pull request May 3, 2013
@ConradIrwin ConradIrwin Merge jist with gist!
After some time as a fork, and a lot of vetting from users, we have
decided to merge the projects together.

The key change is to use OAuth tokens for authentication instead of
requiring you to hard-code your password. Please use `gist --login`
to exchange your username and password for a token.

Close #137  Gist API now requires user-agent be set, and some versions of Net::HTTP don't 3 ↑
Close #136  SSL error (w/ Homebrew & Ruby 2.0.0-p0 from rbenv)
Close #135  Moved authentication over to OAuth tokens. 1 ↑
Close #134  Trying to use gist inside a directory with dashes in the name on a file inside a subdirectory of that results in 422 errors.... 3
Close #133  SSL cert cached in /tmp
Close #132  --open doesn't works
Close #131  Replace slashes with dashes to avoid 422 errors ↑
Close #130  FEATURE: Multiple API Providers 2 ↑
Close #125  Preventing gist from throwing errors when xclip is installed but X11 isn't present (forwarding or otherwise) ↑
Close #120  Add link shortening with --shorten / -s option ↑
Close #118  Use tokens instead of username / password 4
Close #117  Integrate with
Close #116  man page typos & feature request
Close #115  Creating gist failed: 500 Internal Server Error 1
Close #112  Refactor reading from stdin so --type option works 3 ↑
Close #111  Allow gist to work against different githubs 2 ↑
Close #109  fix error on windows. ↑
Close #108  set Content-Type. 5 ↑
Close #107  Add update support. 1 ↑
Close #106  Add anonymous gisting. 1 ↑
Close #103  fix some bugs.  make gist rock in vim/editor via "highlight lines - :!gist" ↑
Close #98  SSL... 23
Close #96  Creating gist failed: 422 Unprocessable Entity 2
Close #95  Fixes the extension issue for -t syntax highlighting, and the filename for stdin 5 ↑
Close #94  show JSON response when create fails ↑
Close #93  use file basename by default 4 ↑
Close #91  Support using an oauth token rather than a username+password 7 ↑
Close #90  3.1.0 fails to authenticate 3
Close #88  Current (3.1.0) no longer respects -t flag 3
Close #85  Copy to clipboard in Windows ↑
Close #84  use oauth now that there are no tokens 14
Close #78  Strip directory from arguments 2
Close #76  Some README.markdown nitpicks...
Close #75  Does not open in browser by default — documentation disagrees 3
Close #74  Set description from CLI (for issue #73) 1 ↑
Close #73  Should be able to set gist description from commandline 1
Close #69  Failed gist creation should raise instead of puts and exit.
Close #67  Use the github api and allow gist url override. 1 ↑
Close #65  Handle lowercased versions of HTTP_PROXY and HTTPS_PROXY. 1 ↑
Close #64  When generating the man page (-m/--man), skip the usage instructions ↑
Close #61  Instructions for setting github.token to a command don't work for me 1
Close #58  support for anonymous gists
Close #53  Add support for GitHub:FI 4
Close #25  Support for updating gists [feature] 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment