Files
Marlin/marlin_demo.md
thePR0M3TH3AN 22b7082a90 update
2025-05-15 17:06:02 -04:00

166 lines
3.6 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Marlin Demo
Heres a little “complexdemo” you can spin up to exercise tags, attributes, FTS queries, `--exec` hooks, backups & restores. Just copypaste each block into your terminal:
---
### 0Create the demo folder and some files
```bash
rm -rf ~/marlin_demo_complex
mkdir -p ~/marlin_demo_complex/{Projects/{Alpha,Beta,Gamma},Logs,Reports,Scripts,Media/Photos}
# Projects
cat <<EOF > ~/marlin_demo_complex/Projects/Alpha/draft1.md
# Alpha draft 1
- [ ] TODO: outline architecture
- [ ] TODO: write tests
EOF
cat <<EOF > ~/marlin_demo_complex/Projects/Alpha/draft2.md
# Alpha draft 2
- [x] TODO: outline architecture
- [ ] TODO: implement feature X
EOF
cat <<EOF > ~/marlin_demo_complex/Projects/Beta/notes.md
Beta meeting notes:
- decided on roadmap
- ACTION: follow up with design team
EOF
cat <<EOF > ~/marlin_demo_complex/Projects/Beta/final.md
# Beta Final
All tasks complete. Ready to ship!
EOF
cat <<EOF > ~/marlin_demo_complex/Projects/Gamma/TODO.txt
Gamma tasks:
TODO: refactor module Y
EOF
# Logs
echo "2025-05-15 12:00:00 INFO Starting app" > ~/marlin_demo_complex/Logs/app.log
echo "2025-05-15 12:01:00 ERROR Oops, crash" >> ~/marlin_demo_complex/Logs/app.log
echo "2025-05-15 00:00:00 INFO System check OK" > ~/marlin_demo_complex/Logs/system.log
# Reports
printf "Q1 financials\n" > ~/marlin_demo_complex/Reports/Q1_report.pdf
# Scripts
cat <<'EOF' > ~/marlin_demo_complex/Scripts/deploy.sh
#!/usr/bin/env bash
echo "Deploying version $1..."
EOF
chmod +x ~/marlin_demo_complex/Scripts/deploy.sh
# Media
echo "JPEGDATA" > ~/marlin_demo_complex/Media/Photos/event.jpg
```
---
### 1Initialize & index
```bash
marlin init
marlin scan ~/marlin_demo_complex
```
---
### 2Attach hierarchical tags
```bash
# Tag all project markdown as “project/md”
marlin tag "~/marlin_demo_complex/Projects/**/*.md" project/md
# Tag your logs
marlin tag "~/marlin_demo_complex/Logs/**/*.log" logs/app
# Tag everything under Projects/Beta as “project/beta”
marlin tag "~/marlin_demo_complex/Projects/Beta/**/*" project/beta
```
---
### 3Set custom attributes
```bash
# Mark only the “final.md” as complete
marlin attr set "~/marlin_demo_complex/Projects/Beta/final.md" status complete
# Mark PDF as reviewed
marlin attr set "~/marlin_demo_complex/Reports/*.pdf" reviewed yes
```
---
### 4Play with search
```bash
# Find all TODOs (in any file)
marlin search TODO
# All markdown under your “project/md” tag
marlin search tag:project/md
# All files tagged “logs/app” containing ERROR
marlin search "tag:logs/app AND ERROR"
# Only your completed Beta deliverable
marlin search "attr:status=complete"
# Only reviewed PDFs
marlin search "attr:reviewed=yes AND pdf"
# Open every reviewed report
marlin search "attr:reviewed=yes" --exec 'xdg-open {}'
```
---
### 5Try JSON output & verbose mode
```bash
marlin --format=json attr ls ~/marlin_demo_complex/Projects/Beta/final.md
marlin --verbose scan ~/marlin_demo_complex
```
---
### 6Snapshot & restore
```bash
# Snapshot
snap=$(marlin backup | awk '{print $NF}')
# Delete your DB to simulate data loss
rm ~/.local/share/marlin/index.db
# Bring it back
marlin restore "$snap"
# Confirm you still see “TODO”
marlin search TODO
```
---
That gives you:
* **wide folder structures** (Projects, Logs, Reports, Scripts, Media)
* **hierarchical tags** you can mix and match
* **key-value attributes** to flag state & review
* **FTS5 queries** with AND/OR/NOT
* **`--exec` hooks** to trigger external commands
* **JSON output** for programmatic gluing
* **backups & restores** to guard your data
Have fun playing around!