mirror of
https://github.com/ivuorinen/cheatsheet-tldr.git
synced 2026-01-26 03:24:04 +00:00
Initial commit
This commit is contained in:
21
.github/LICENSE.md
vendored
Normal file
21
.github/LICENSE.md
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2024 Ismo Vuorinen
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
36
.github/README.md
vendored
Normal file
36
.github/README.md
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
# ivuorinen/cheatsheet-tldr
|
||||
|
||||
This repository is a collection of [cheat/cheat](https://github.com/cheat/cheat)
|
||||
compatible cheatsheets derived from [tldr](https://github.com/tldr-pages/tldr) pages.
|
||||
|
||||
## Installation
|
||||
|
||||
Add the cheatsheets to your `cheat` installation by cloning this repository to
|
||||
`~/.cheat/cheatsheets/tldr`:
|
||||
|
||||
```sh
|
||||
git clone https://github.com/ivuorinen/cheatsheet-tldr.git ~/.cheat/cheatsheets/tldr
|
||||
```
|
||||
|
||||
Configure your `cheat.yaml` to include the cheatsheets:
|
||||
|
||||
```yaml
|
||||
- name: tldr
|
||||
path: ~/.cheat/cheatsheets/tldr
|
||||
tags: [tldr]
|
||||
readonly: true
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
Use `cheat` as you normally would, but include the `tldr` tag to filter the
|
||||
cheatsheets:
|
||||
|
||||
```sh
|
||||
cheat --tags tldr
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
Files under `.github/` are licensed under the [MIT License](LICENSE.md).
|
||||
TLDR pages licensed under [CC-BY-4.0](https://github.com/tldr-pages/tldr/blob/main/LICENSE.md).
|
||||
4
.github/renovate.json
vendored
Normal file
4
.github/renovate.json
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||
"extends": ["github>ivuorinen/.github:renovate-config"]
|
||||
}
|
||||
72
.github/run.sh
vendored
Executable file
72
.github/run.sh
vendored
Executable file
@@ -0,0 +1,72 @@
|
||||
#!/usr/bin/env bash
|
||||
# Create cheat/cheat compatible versions of the english tldr pages
|
||||
# Copyright (c) 2024 Ismo Vuorinen <https://github.com/ivuorinen>
|
||||
# Script licensed under the MIT License
|
||||
# https://github.com/ivuorinen/cheatsheet-tldr/blob/main/.github/LICENSE.md
|
||||
# TLDR pages licensed under CC-BY-4.0
|
||||
# https://github.com/tldr-pages/tldr/blob/main/LICENSE.md
|
||||
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
echo "Running: $DIR/run.sh"
|
||||
echo "Working directory: $DIR"
|
||||
|
||||
source "$DIR/shared.sh"
|
||||
|
||||
TLDR_GIT="https://github.com/tldr-pages/tldr.git"
|
||||
TLDR_SOURCE="source: $TLDR_GIT"
|
||||
TLDR_SYNTAX="syntax: markdown"
|
||||
TLDR_TEMP_DIR="$(realpath "$DIR"/..)/__tldr-temp"
|
||||
TLDR_CHEAT_DEST="$(realpath "$DIR"/../)"
|
||||
|
||||
if [ -d "$TLDR_TEMP_DIR" ]; then
|
||||
rm -rf "$TLDR_TEMP_DIR"
|
||||
fi
|
||||
|
||||
echo "TLDR_TEMP_DIR: $TLDR_TEMP_DIR"
|
||||
echo "TLDR_CHEAT_DEST: $TLDR_CHEAT_DEST"
|
||||
|
||||
git clone \
|
||||
--depth 1 \
|
||||
--single-branch \
|
||||
-q "$TLDR_GIT" "$TLDR_TEMP_DIR" || exit 1
|
||||
|
||||
rm -rf "$TLDR_TEMP_DIR/pages.*"
|
||||
|
||||
for d in "$TLDR_TEMP_DIR"/pages/*; do
|
||||
DIRNAME=$(basename "$d")
|
||||
# echo "-> $DIRNAME ($d)"
|
||||
|
||||
SECTION_DIR="${TLDR_CHEAT_DEST}/$DIRNAME"
|
||||
|
||||
[ "$DIRNAME" = "common" ] && SECTION_DIR="${TLDR_CHEAT_DEST}"
|
||||
|
||||
TLDR_TAGS="tags: [tldr, $DIRNAME]"
|
||||
|
||||
if [ ! -d "$SECTION_DIR" ]; then
|
||||
mkdir -p "$SECTION_DIR"
|
||||
fi
|
||||
|
||||
for FILE in "$d"/*.md; do
|
||||
BASENAME=$(basename "$FILE" .md)
|
||||
# FILENAME="${BASENAME%%.*}"
|
||||
# echo "-> $FILE = $FILENAME"
|
||||
TLDR_FILE="$SECTION_DIR/${BASENAME}"
|
||||
# echo "-> dest: $TLDR_FILE"
|
||||
|
||||
# Update the original file for making the replaceable value comparable
|
||||
if [ -f "$FILE" ] && [ '---' != "$(head -1 < "$FILE")" ]; then
|
||||
echo -e "---\n$TLDR_SYNTAX\n$TLDR_TAGS\n$TLDR_SOURCE\n---\n$(cat "$FILE")" > "$FILE"
|
||||
fi
|
||||
|
||||
replaceable "$FILE" "$TLDR_FILE"
|
||||
|
||||
override=$?
|
||||
if [ "$override" -ne 0 ]; then
|
||||
cp "$FILE" "$TLDR_FILE" && echo "Updated: $TLDR_FILE"
|
||||
fi
|
||||
|
||||
done
|
||||
done
|
||||
|
||||
rm -rf "$TLDR_TEMP_DIR"
|
||||
50
.github/shared.sh
vendored
Executable file
50
.github/shared.sh
vendored
Executable file
@@ -0,0 +1,50 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# return sha256sum for file
|
||||
# $1 - filename (string)
|
||||
function get_sha256sum()
|
||||
{
|
||||
sha256sum "$1" | head -c 64
|
||||
}
|
||||
|
||||
# Replaceable file
|
||||
#
|
||||
# $1 - filename (string)
|
||||
# $2 - filename (string)
|
||||
#
|
||||
# Returns 1 when replaceable, 0 when not replaceable.
|
||||
function replaceable()
|
||||
{
|
||||
FILE1="$1"
|
||||
FILE2="$2"
|
||||
|
||||
[[ ! -r "$FILE1" ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msg_err "File 1 ($FILE1) does not exist"
|
||||
return 0
|
||||
}
|
||||
[[ ! -r "$FILE2" ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msg_err "File 2 ($FILE2) does not exist, replaceable"
|
||||
return 1
|
||||
}
|
||||
|
||||
FILE1_HASH=$(get_sha256sum "$FILE1")
|
||||
FILE2_HASH=$(get_sha256sum "$FILE2")
|
||||
|
||||
[[ $FILE1_HASH = "" ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msg_err "Could not get hash for file 1 ($FILE1)"
|
||||
return 0
|
||||
}
|
||||
[[ $FILE2_HASH = "" ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msg_err "Could not get hash for file 2 ($FILE2), replaceable"
|
||||
return 1
|
||||
}
|
||||
|
||||
[[ "$FILE1_HASH" == "$FILE2_HASH" ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msg_ok "Files match, not replaceable: $FILE1"
|
||||
return 0
|
||||
}
|
||||
|
||||
[[ $VERBOSE -eq 1 ]] && msg_warn "Files do not match ($FILE1_HASH != $FILE2_HASH), replaceable"
|
||||
|
||||
return 1
|
||||
}
|
||||
34
.github/workflows/cheatsheets.yaml
vendored
Normal file
34
.github/workflows/cheatsheets.yaml
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
---
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: '0 0 * * *'
|
||||
push:
|
||||
branches: [main]
|
||||
pull_request:
|
||||
branches: [main]
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Setup git config
|
||||
run: |
|
||||
git config --global user.name "${{ github.actor }}"
|
||||
git config --global user.email "${{ github.actor }}@users.noreply.github.com"
|
||||
- name: Build
|
||||
run: |
|
||||
echo "Building cheatsheets"
|
||||
bash .github/run.sh
|
||||
echo "Done"
|
||||
- name: Commit and push changes
|
||||
run: |
|
||||
git add .
|
||||
git commit -m "Update cheatsheets"
|
||||
git push
|
||||
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
__tldr-temp
|
||||
Reference in New Issue
Block a user