mirror of
https://github.com/lancatlin/mdsh.git
synced 2026-11-05 19:30:12 +08:00
Add README
This commit is contained in:
1 parent
d4e85844a4
commit
f976860f33
1 file changed
+243
@@ -0,0 +1,243 @@
|
|||||||
|
# mdsh: Run Shell Scripts in Markdown Templates
|
||||||
|
|
||||||
|
Need repetitive document generation from CLI outputs? mdsh is what you need.
|
||||||
|
|
||||||
|
Define your template in markdown format, and generate them on the fly!
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
requirements: `go` installed
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git clone github.com/lancatlin/mdsh && cd mdsh
|
||||||
|
go build .
|
||||||
|
./mdsh examples/system-info.md
|
||||||
|
```
|
||||||
|
|
||||||
|
It will execute this template:
|
||||||
|
|
||||||
|
~~~~markdown
|
||||||
|
---
|
||||||
|
output: "sys-report.md"
|
||||||
|
---
|
||||||
|
|
||||||
|
# 💥 System Information Report for {{ sh "hostname" }}
|
||||||
|
|
||||||
|
* **Hostname**: {{ sh "hostname" }}
|
||||||
|
* **Username**: {{ sh "whoami" }}
|
||||||
|
* **Uptime**: {{ sh "uptime -p" }}
|
||||||
|
* **System**: {{ sh "uname -a" }}
|
||||||
|
* **CPU**: {{ sh "uname -m" }} — {{ sh "nproc" }} cores
|
||||||
|
* **IP Address**: {{ sh "hostname -I || ip a | grep inet" }}
|
||||||
|
* **Default Gateway**: {{ sh "ip route | grep default || netstat -rn | grep default" }}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🧠 Memory Usage
|
||||||
|
|
||||||
|
{{ shell "free -h" }}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📉 Disk Usage
|
||||||
|
|
||||||
|
{{ shell "df -h /" }}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Generated on: {{ sh "date" }}
|
||||||
|
~~~~
|
||||||
|
|
||||||
|
Then you will get `sys-report.md` like:
|
||||||
|
|
||||||
|
~~~~markdown
|
||||||
|
# 💥 System Information Report for `fedora`
|
||||||
|
|
||||||
|
* **Hostname**: `fedora`
|
||||||
|
* **Username**: `wancat`
|
||||||
|
* **Uptime**: `up 1 hour, 59 minutes`
|
||||||
|
* **System**: `Linux fedora 6.15.6-200.fc42.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Jul 10 15:22:32 UTC 2025 x86_64 GNU/Linux`
|
||||||
|
* **CPU**: `x86_64` — `16` cores
|
||||||
|
* **IP Address**: `172.26.198.115 2405:dc00:ec83:ec80:af9c:87ed:9bae:bd0d`
|
||||||
|
* **Default Gateway**: `default via 172.26.198.50 dev wlp1s0 proto dhcp src 172.26.198.115 metric 600`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🧠 Memory Usage
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
|
total used free shared buff/cache available
|
||||||
|
Mem: 30Gi 7.5Gi 17Gi 234Mi 6.5Gi 23Gi
|
||||||
|
Swap: 8.0Gi 0B 8.0Gi
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📉 Disk Usage
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
|
Filesystem Size Used Avail Use% Mounted on
|
||||||
|
/dev/mapper/luks-d53d6eca-6a17-4120-bb6c-05c501334c6d 93G 58G 34G 64% /
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Generated on: `Fri 25 Jul 2025 12:42:26 AEST`
|
||||||
|
~~~~
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Custom Parameters from command line
|
||||||
|
|
||||||
|
You can define custom parameters in the frontmatter, and pass the value through command arguments.
|
||||||
|
|
||||||
|
~~~~markdown
|
||||||
|
---
|
||||||
|
output: "monthly_report_{{.b}}.md"
|
||||||
|
params:
|
||||||
|
b:
|
||||||
|
required: true
|
||||||
|
default: 2011-01
|
||||||
|
usage: |
|
||||||
|
Required.
|
||||||
|
The begin time of report.
|
||||||
|
Examples:
|
||||||
|
2025
|
||||||
|
2025-07
|
||||||
|
2025-07-15
|
||||||
|
Jul
|
||||||
|
e:
|
||||||
|
required: true
|
||||||
|
default: 2011-02
|
||||||
|
usage: |
|
||||||
|
Required.
|
||||||
|
The end time of report.
|
||||||
|
Same format as -b
|
||||||
|
f:
|
||||||
|
default: examples/ledger.j
|
||||||
|
usage: The ledger file to parse
|
||||||
|
---
|
||||||
|
|
||||||
|
# Finance Report from {{.b}} to {{.e}}
|
||||||
|
|
||||||
|
## Previous status:
|
||||||
|
|
||||||
|
{{ shell "hledger -f $f balancesheet -e $b" }}
|
||||||
|
|
||||||
|
## Expenses:
|
||||||
|
|
||||||
|
### Expense Summary by Category
|
||||||
|
|
||||||
|
{{ shell "hledger -f $f bal expenses -b $b -e $e --depth 3 --sort amount --budget" }}
|
||||||
|
|
||||||
|
## Net Income:
|
||||||
|
|
||||||
|
{{shell "hledger -f $f income -b $b -e $e --monthly"}}
|
||||||
|
|
||||||
|
## Ending balance:
|
||||||
|
|
||||||
|
{{shell "hledger -f $f balancesheet -e $e"}}
|
||||||
|
~~~~
|
||||||
|
|
||||||
|
Run the template:
|
||||||
|
|
||||||
|
**Note: you need to install `hledger` to run the example**
|
||||||
|
|
||||||
|
```
|
||||||
|
mdsh examples/monthly.md -b 2011-01 -e 2011-02
|
||||||
|
```
|
||||||
|
|
||||||
|
The result:
|
||||||
|
|
||||||
|
~~~~markdown
|
||||||
|
# Finance Report from 2011-01 to 2011-02
|
||||||
|
|
||||||
|
## Previous status:
|
||||||
|
|
||||||
|
`Balance Sheet 2010-12-31
|
||||||
|
|
||||||
|
|| 2010-12-31
|
||||||
|
================================++============
|
||||||
|
Assets ||
|
||||||
|
--------------------------------++------------
|
||||||
|
Assets:Checking || $-225.00
|
||||||
|
--------------------------------++------------
|
||||||
|
|| $-225.00
|
||||||
|
================================++============
|
||||||
|
Liabilities ||
|
||||||
|
--------------------------------++------------
|
||||||
|
Liabilities:Mortgage:Principal || $-200.00
|
||||||
|
--------------------------------++------------
|
||||||
|
|| $-200.00
|
||||||
|
================================++============
|
||||||
|
Net: || $-25.00`
|
||||||
|
|
||||||
|
## Expenses:
|
||||||
|
|
||||||
|
### Expense Summary by Category
|
||||||
|
|
||||||
|
`Budget performance in 2011-01:
|
||||||
|
|
||||||
|
|| Jan
|
||||||
|
===============++==============================
|
||||||
|
Expenses || $5,629.00
|
||||||
|
Expenses:Food || $109.00 [ 109% of $100.00]
|
||||||
|
---------------++------------------------------
|
||||||
|
|| $5,629.00 [5629% of $100.00]`
|
||||||
|
|
||||||
|
`$5,500.00 Expenses:Auto
|
||||||
|
$109.00 Expenses:Food
|
||||||
|
$20.00 Expenses:Books
|
||||||
|
--------------------
|
||||||
|
$5,629.00`
|
||||||
|
|
||||||
|
## Net Income:
|
||||||
|
|
||||||
|
`Income Statement 2011-01
|
||||||
|
|
||||||
|
|| Jan
|
||||||
|
=========================++============
|
||||||
|
Revenues ||
|
||||||
|
-------------------------++------------
|
||||||
|
Income:Salary || $2,000.00
|
||||||
|
-------------------------++------------
|
||||||
|
|| $2,000.00
|
||||||
|
=========================++============
|
||||||
|
Expenses ||
|
||||||
|
-------------------------++------------
|
||||||
|
Expenses:Auto || $5,500.00
|
||||||
|
Expenses:Books || $20.00
|
||||||
|
Expenses:Food:Groceries || $109.00
|
||||||
|
-------------------------++------------
|
||||||
|
|| $5,629.00
|
||||||
|
=========================++============
|
||||||
|
Net: || $-3,629.00`
|
||||||
|
|
||||||
|
## Ending balance:
|
||||||
|
|
||||||
|
`Balance Sheet 2011-01-31
|
||||||
|
|
||||||
|
|| 2011-01-31
|
||||||
|
================================++============
|
||||||
|
Assets ||
|
||||||
|
--------------------------------++------------
|
||||||
|
Assets:Checking || $1,366.00
|
||||||
|
Assets:Savings || $-5,200.00
|
||||||
|
--------------------------------++------------
|
||||||
|
|| $-3,834.00
|
||||||
|
================================++============
|
||||||
|
Liabilities ||
|
||||||
|
--------------------------------++------------
|
||||||
|
Liabilities:MasterCard || $20.00
|
||||||
|
Liabilities:Mortgage:Principal || $-200.00
|
||||||
|
--------------------------------++------------
|
||||||
|
|| $-180.00
|
||||||
|
================================++============
|
||||||
|
Net: || $-3,654.00`
|
||||||
|
~~~~
|
||||||
Reference in new issue
Block a user