Skip to main content

Instant coding answers via the command line

Project description

howdoi

http://imgs.xkcd.com/comics/tar.png

instant coding answers via the command line

https://secure.travis-ci.org/gleitz/howdoi.png?branch=master

Are you a hack programmer? Do you find yourself constantly Googling for how to do basic programing tasks?

Suppose you want to know how to format a date in bash. Why open your browser and read through blogs (risking major distraction) when you can simply stay in the console and ask howdoi:

$ howdoi format date bash
> DATE=`date +%Y-%m-%d`

howdoi will answer all sorts of queries:

$ howdoi print stack trace python
> import traceback
>
> try:
>     1/0
> except:
>     print '>>> traceback <<<'
>     traceback.print_exc()
>     print '>>> end of traceback <<<'
> traceback.print_exc()

$ howdoi convert mp4 to animated gif
> video=/path/to/video.avi
> outdir=/path/to/output.gif
> mplayer "$video" \
>         -ao null \
>         -ss "00:01:00" \  # starting point
>         -endpos 10 \ # duration in second
>         -vo gif89a:fps=13:output=$outdir \
>         -vf scale=240:180

$ howdoi create tar archive
> tar -cf backup.tar --exclude "www/subf3" www

Installation

pip install howdoi

or

pip install git+https://github.com/gleitz/howdoi.git#egg=howdoi

or

brew install https://raw.github.com/gleitz/howdoi/master/howdoi.rb

or

python setup.py install

Usage

usage: howdoi.py [-h] [-p POS] [-a] [-l] [-c] [-n NUM_ANSWERS] [-C] [-v] QUERY [QUERY ...]

instant coding answers via the command line

positional arguments:
  QUERY                 the question to answer

optional arguments:
  -h, --help            show this help message and exit
  -p POS, --pos POS     select answer in specified position (default: 1)
  -a, --all             display the full text of the answer
  -l, --link            display only the answer link
  -c, --color           enable colorized output
  -n NUM_ANSWERS, --num-answers NUM_ANSWERS
                        number of answers to return
  -C, --clear-cache     clear the cache
  -v, --version         displays the current version of howdoi

As a shortcut, if you commonly use the same paremeters each time and don’t want to type them, add something similar to your .bash_profile (or otherwise). This example gives you 5 colored results each time.

alias h='function hdi(){ howdoi $* -c -n 5; }; hdi'

And then to run it from the command line simply type:

$h this is my query for howdoi

Author

Notes

  • Works with Python2 and Python3

  • A standalone Windows executable with the howdoi application is available here.

  • An Alfred Workflow for howdoi can be found at http://blog.gleitzman.com/post/48539944559/howdoi-alfred-even-more-instant-answers.

  • Slack integration available through slack-howdoi.

  • Howdoi uses a cache for faster access to previous questions. Caching functionality can be disabled by setting the HOWDOI_DISABLE_CACHE environment variable. The cache is stored in ~/.cache/howdoi.

  • You can set the HOWDOI_URL environment variable to change the source url for answers (default: stackoverflow.com). Other options include serverfault.com or pt.stackoverflow.com. Here’s the full list.

  • Setting the HOWDOI_COLORIZE environment variable will colorize the output by default.

  • Special thanks to Rich Jones (@miserlou) for the idea.

Development

  • Checkout the repo

  • Run python -m howdoi.howdoi QUERY (if you try running python howdoi/howdoi.py you might get ValueError: Attempted relative import in non-package).

Troubleshooting

You might get the following error when installing with Homebrew:

==> python setup.py install

http://peak.telecommunity.com/EasyInstall.html

Please make the appropriate changes for your system and try again.

Fix the error by executing the following command:

sudo chmod -R go+w /Library/Python/2.7/site-packages/

An official lxml for python 3.3+ for windows has not yet been released. You may get an error while installing. Try and install an unofficial binary for lxml from

http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml

News

1.1.11 - Fix issue with UTF-8 encoding

1.1.10

  • Include the link in output when asking for >1 answer

  • Compatibility with linuxbrew

1.1.9

  • Fix issue with upload to PyPI

1.1.8

  • Fix colorization when HOWDOI_COLORIZE env variable is enabled

  • Fix certificate validation when SSL disabled

1.1.7

  • Add Localization support with HOWDOI_LOCALIZATION env variable (Currently only pt-br and en)

1.1.6

  • Updates for Python3

  • Updates for caching

1.1.5

  • Updates for Python3

  • Fix issues with cache

  • Allow disabling SSL when accessing Google

1.1.4

  • Added caching

1.1.3

  • Added fix to handle change in Google search page HTML

  • Updated Travis CI tests

1.1.2

  • Compatibility fixes for Python3.2

  • Travis CI tests now being run for Python 2.6, 2.7, 3.2, and 3.3

1.1.1

  • Added message when question has no answer

1.1

  • Added multiple answers with -n/–num-answers flag

  • Added colorized output with -c/–color flag

  • Added answer link to the bottom of questions with -a/–all flag

  • Unit tests now managed through Travis CI

1.0

  • Added support for Python3

  • Switched to the requests library instead of urllib2

  • Project status changed to Production/Stable

  • Added troubleshooting steps to the README

0.2

  • Added sane flags

  • Now using /usr/bin/env python instead of /usr/bin/python

  • Updated README for brew installation instructions

0.1.2

  • Added Windows executable

  • Updated README for pip installation instructions

0.1.1

  • Added to PyPI

0.1

  • We’re doing it live!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

howdoi-1.1.11.tar.gz (8.0 kB view details)

Uploaded Source

File details

Details for the file howdoi-1.1.11.tar.gz.

File metadata

  • Download URL: howdoi-1.1.11.tar.gz
  • Upload date:
  • Size: 8.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for howdoi-1.1.11.tar.gz
Algorithm Hash digest
SHA256 5c4704da0487049d3d6f0a796ac52cd1ac319e8c8d41f35beae8dd64b1c5f12b
MD5 2b3425248bc27c8ee64f147b90d78e3c
BLAKE2b-256 05b9b5a2e28972d67d80350f9fcbd7910bda76684b342ca3326ae1670e616fb5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page