If you use cheat to save some programming snippets this might be useful.
For example if you have a long list of SQL Query cheats, you can do the
following:
Enter ```sql in the beginning of the file containing the cheats content.
Example file: sql
```sql
SELECT 17 & 16 = 16;
SELECT 2+4+8+16 & 1 = 0;
* 'master' of https://github.com/yafp/cheat:
20151102 - Added 3 more cheats into the new apt cheatsheet
20151102 - Adding a cheatsheet for at (apt vs apt-get)
* 'setup-improvements' of https://github.com/youtux/cheat:
Use entry_points instead of scripts in setup.py
Improve setup.py description
Exploit setuptools package_data to include cheats
Use find_packages from setuptools to identify packages
Use setuptools insted of distutils.
reference:
-O file
--output-document=file
The documents will not be written to the appropriate files, but all will be concatenated together and
written to file. If - is used as file, documents will be printed to standard output, disabling link
conversion. (Use ./- to print to a file literally named -.)
Use of -O is not intended to mean simply "use the name file instead of the one in the URL;" rather,
it is analogous to shell redirection: wget -O file http://foo is intended to work like wget -O -
http://foo > file; file will be truncated immediately, and all downloaded content will be written
there.
For this reason, -N (for timestamp-checking) is not supported in combination with -O: since file is
always newly created, it will always have a very new timestamp. A warning will be issued if this
combination is used.
Similarly, using -r or -p with -O may not work as you expect: Wget won't just download the first file
to file and then download the rest to their normal names: all downloaded content will be placed in
file. This was disabled in version 1.11, but has been reinstated (with a warning) in 1.11.2, as there
are some cases where this behavior can actually have some use.
Note that a combination with -k is only permitted when downloading a single document, as in that case
it will just convert all relative URIs to external ones; -k makes no sense for multiple URIs when
they're all being downloaded to a single file; -k can be used only when the output is a regular file.
Now, whenever a cheatsheet is to be edited, if that cheatsheet does not
exist on the `DEFAULT_SHEET_PATH`, it is first copied there before being
opened for editing. This prevents system-wide cheatsheets from being
edited when using `cheat` as `root`.
- Solves issue whereby global cheatsheets fail to save after editing
- `cheat` no longer asks a user if a global cheatsheet should be copied
locally before editing, and instead just silently does so.
This allows a fine-grained control of the dependencies, because it generates a wrapper script
that calls the specifiend function (i.e., main inside cheat/app.py)
@zhujian0805 contributed some excellent cheatsheets in #185, but some
binary files seem to have gotten mixed into the commit as well. This
commit cherry-picks the cheatsheet file changes from that PR while
leaving behind the cruft.
Also performed minor editing on some of the cheatsheets.
* 'master' of github.com:erikcox/cheat:
Added a condition in prompt_yes_or_no() to use input or raw_input
First attempt at making utils.py compatible with Python 2 and 3.
Previously, `cheat` would exit if run by `root`. The rationale was:
If `cheat` was run by an unprivileged user (`chris`, for example), the
`$DEFAULT_CHEAT_DIR` would default to `/home/chris/.cheat`. If cheat was
run via `sudo`, however, the `$DEFAULT_CHEAT_DIR` would suddenly be
`/root/.cheat`.
Presuming that those individual user cheat dirs actually contained cheat
sheets, this could cause confusion, because cheat sheets accessible to
one user (`chris`) would not be accessible to the other (`root`). Thus,
cheatsheets would appear and disappear, depending on which user was
running `cheat`. (This would only be an issue, of course, for cheat
sheets that existed within the respective users' cheat dirs. System-wide
cheat sheets would be unaffected.)
`cheat` was thus programmed to gracefully fail when run as `root` to
prevent that possible confusion.
However, I'm backing away from that reasoning, because:
1. It's causing a headache for real users who'd like to run `cheat` as
root
2. Other venerable programs (`vim`, etc.) suffer from the same problem,
but nobody seems to mind enough to do anything about it. Thus, I suppose
the laissez-faire approach is essentially the sanctioned "solution" to
this problem.
3. Users sufficently troubled by this confusion may rememdy the problem
manually by setting environment variables (`$DEFAULT_CHEAT_DIR`, etc.)
Thus, `cheat` no longer complains if run by `root`.
Version-bumped to 2.1.0.
The `setup.py` script no longer attempts to install files to privileged
system directories. (Previously, it attempted to do this in order to
enable command-line autocompletion.) In lieu of doing this within the
installer directly, I have simply included brief instructions explaining
how to configure this manually.
Version bumped accordingly.
Previously, `sheets.print()` would query the filesystem every time it
was invoked. This was inelegant, because it is called multiple times
every time `cheat` is executed. Thus, unnecessary calls were being made
out to the filesystem.
Now the result of that function is being buffered into a module variable
when it is executed the first time, and served from there thereafter. I
broke the "functional" paradigm to a degree by doing this, but it wasn't
worth the complexity of implementing proper memoization (decorators,
etc) for such a trivial case.
Bumped the version number accordingly.