container-superposition 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +843 -0
- package/dist/scripts/init.d.ts +3 -0
- package/dist/scripts/init.d.ts.map +1 -0
- package/dist/scripts/init.js +1190 -0
- package/dist/scripts/init.js.map +1 -0
- package/dist/scripts/migrate-to-manifests.d.ts +12 -0
- package/dist/scripts/migrate-to-manifests.d.ts.map +1 -0
- package/dist/scripts/migrate-to-manifests.js +230 -0
- package/dist/scripts/migrate-to-manifests.js.map +1 -0
- package/dist/tool/questionnaire/composer.d.ts +6 -0
- package/dist/tool/questionnaire/composer.d.ts.map +1 -0
- package/dist/tool/questionnaire/composer.js +1232 -0
- package/dist/tool/questionnaire/composer.js.map +1 -0
- package/dist/tool/readme/markdown-parser.d.ts +30 -0
- package/dist/tool/readme/markdown-parser.d.ts.map +1 -0
- package/dist/tool/readme/markdown-parser.js +139 -0
- package/dist/tool/readme/markdown-parser.js.map +1 -0
- package/dist/tool/readme/readme-generator.d.ts +9 -0
- package/dist/tool/readme/readme-generator.d.ts.map +1 -0
- package/dist/tool/readme/readme-generator.js +422 -0
- package/dist/tool/readme/readme-generator.js.map +1 -0
- package/dist/tool/schema/custom-loader.d.ts +17 -0
- package/dist/tool/schema/custom-loader.d.ts.map +1 -0
- package/dist/tool/schema/custom-loader.js +149 -0
- package/dist/tool/schema/custom-loader.js.map +1 -0
- package/dist/tool/schema/overlay-loader.d.ts +47 -0
- package/dist/tool/schema/overlay-loader.d.ts.map +1 -0
- package/dist/tool/schema/overlay-loader.js +252 -0
- package/dist/tool/schema/overlay-loader.js.map +1 -0
- package/dist/tool/schema/types.d.ts +212 -0
- package/dist/tool/schema/types.d.ts.map +1 -0
- package/dist/tool/schema/types.js +5 -0
- package/dist/tool/schema/types.js.map +1 -0
- package/docs/README.md +308 -0
- package/docs/architecture.md +233 -0
- package/docs/creating-overlays.md +549 -0
- package/docs/custom-patches.md +540 -0
- package/docs/dependencies.md +279 -0
- package/docs/examples/custom-patches-example.md +85 -0
- package/docs/examples.md +576 -0
- package/docs/messaging-comparison.md +265 -0
- package/docs/messaging-quick-start.md +385 -0
- package/docs/observability-workflow.md +537 -0
- package/docs/overlay-manifest-refactoring.md +214 -0
- package/docs/overlay-metadata-archive.md +54 -0
- package/docs/overlays.md +523 -0
- package/docs/presets-architecture.md +498 -0
- package/docs/presets.md +366 -0
- package/docs/publishing.md +476 -0
- package/docs/quick-reference.md +326 -0
- package/docs/ux.md +170 -0
- package/features/README.md +85 -0
- package/features/cross-distro-packages/README.md +146 -0
- package/features/cross-distro-packages/devcontainer-feature.json +20 -0
- package/features/cross-distro-packages/install.sh +58 -0
- package/features/local-secrets-manager/devcontainer-feature.json +18 -0
- package/features/local-secrets-manager/install.sh +127 -0
- package/features/project-scaffolder/devcontainer-feature.json +24 -0
- package/features/project-scaffolder/install.sh +100 -0
- package/features/team-conventions/devcontainer-feature.json +24 -0
- package/features/team-conventions/install.sh +93 -0
- package/overlays/.registry/README.md +14 -0
- package/overlays/.registry/base-images.yml +26 -0
- package/overlays/.registry/base-templates.yml +7 -0
- package/overlays/README.md +155 -0
- package/overlays/alertmanager/.env.example +5 -0
- package/overlays/alertmanager/README.md +465 -0
- package/overlays/alertmanager/alert-rules.yml +56 -0
- package/overlays/alertmanager/alertmanager.yml +42 -0
- package/overlays/alertmanager/devcontainer.patch.json +12 -0
- package/overlays/alertmanager/docker-compose.yml +20 -0
- package/overlays/alertmanager/overlay.yml +17 -0
- package/overlays/alertmanager/setup.sh +53 -0
- package/overlays/alertmanager/verify.sh +31 -0
- package/overlays/aws-cli/README.md +473 -0
- package/overlays/aws-cli/devcontainer.patch.json +13 -0
- package/overlays/aws-cli/overlay.yml +13 -0
- package/overlays/azure-cli/README.md +551 -0
- package/overlays/azure-cli/devcontainer.patch.json +8 -0
- package/overlays/azure-cli/overlay.yml +13 -0
- package/overlays/bun/README.md +312 -0
- package/overlays/bun/devcontainer.patch.json +41 -0
- package/overlays/bun/overlay.yml +16 -0
- package/overlays/bun/setup.sh +79 -0
- package/overlays/bun/verify.sh +30 -0
- package/overlays/codex/README.md +128 -0
- package/overlays/codex/devcontainer.patch.json +3 -0
- package/overlays/codex/overlay.yml +14 -0
- package/overlays/codex/setup.sh +24 -0
- package/overlays/codex/verify.sh +30 -0
- package/overlays/commitlint/README.md +333 -0
- package/overlays/commitlint/devcontainer.patch.json +8 -0
- package/overlays/commitlint/overlay.yml +16 -0
- package/overlays/commitlint/setup.sh +234 -0
- package/overlays/direnv/README.md +504 -0
- package/overlays/direnv/devcontainer.patch.json +6 -0
- package/overlays/direnv/overlay.yml +13 -0
- package/overlays/direnv/setup.sh +139 -0
- package/overlays/docker-in-docker/README.md +534 -0
- package/overlays/docker-in-docker/devcontainer.patch.json +10 -0
- package/overlays/docker-in-docker/overlay.yml +13 -0
- package/overlays/docker-sock/README.md +256 -0
- package/overlays/docker-sock/devcontainer.patch.json +9 -0
- package/overlays/docker-sock/docker-compose.yml +8 -0
- package/overlays/docker-sock/overlay.yml +13 -0
- package/overlays/dotnet/README.md +147 -0
- package/overlays/dotnet/devcontainer.patch.json +51 -0
- package/overlays/dotnet/global-tools.txt +24 -0
- package/overlays/dotnet/overlay.yml +13 -0
- package/overlays/dotnet/setup.sh +51 -0
- package/overlays/dotnet/verify.sh +26 -0
- package/overlays/gcloud/README.md +269 -0
- package/overlays/gcloud/devcontainer.patch.json +14 -0
- package/overlays/gcloud/overlay.yml +14 -0
- package/overlays/gcloud/verify.sh +52 -0
- package/overlays/git-helpers/README.md +168 -0
- package/overlays/git-helpers/devcontainer.patch.json +33 -0
- package/overlays/git-helpers/overlay.yml +15 -0
- package/overlays/git-helpers/setup.sh +91 -0
- package/overlays/go/README.md +293 -0
- package/overlays/go/devcontainer.patch.json +43 -0
- package/overlays/go/overlay.yml +15 -0
- package/overlays/go/setup.sh +33 -0
- package/overlays/go/verify.sh +40 -0
- package/overlays/grafana/.env.example +9 -0
- package/overlays/grafana/README.md +462 -0
- package/overlays/grafana/dashboard-provider.yml +11 -0
- package/overlays/grafana/dashboards/observability-overview.json +263 -0
- package/overlays/grafana/devcontainer.patch.json +12 -0
- package/overlays/grafana/docker-compose.yml +27 -0
- package/overlays/grafana/grafana-datasources.yml +57 -0
- package/overlays/grafana/overlay.yml +21 -0
- package/overlays/grafana/verify.sh +34 -0
- package/overlays/jaeger/.env.example +7 -0
- package/overlays/jaeger/README.md +867 -0
- package/overlays/jaeger/devcontainer.patch.json +12 -0
- package/overlays/jaeger/docker-compose.yml +17 -0
- package/overlays/jaeger/overlay.yml +19 -0
- package/overlays/java/README.md +267 -0
- package/overlays/java/devcontainer.patch.json +44 -0
- package/overlays/java/overlay.yml +16 -0
- package/overlays/java/setup.sh +41 -0
- package/overlays/java/verify.sh +42 -0
- package/overlays/just/README.md +443 -0
- package/overlays/just/devcontainer.patch.json +3 -0
- package/overlays/just/overlay.yml +13 -0
- package/overlays/just/setup.sh +182 -0
- package/overlays/kubectl-helm/README.md +660 -0
- package/overlays/kubectl-helm/devcontainer.patch.json +10 -0
- package/overlays/kubectl-helm/overlay.yml +13 -0
- package/overlays/loki/.env.example +5 -0
- package/overlays/loki/README.md +1156 -0
- package/overlays/loki/devcontainer.patch.json +12 -0
- package/overlays/loki/docker-compose.yml +18 -0
- package/overlays/loki/loki-config.yaml +45 -0
- package/overlays/loki/overlay.yml +17 -0
- package/overlays/minio/.env.example +9 -0
- package/overlays/minio/README.md +639 -0
- package/overlays/minio/devcontainer.patch.json +30 -0
- package/overlays/minio/docker-compose.yml +28 -0
- package/overlays/minio/overlay.yml +18 -0
- package/overlays/minio/setup.sh +61 -0
- package/overlays/minio/verify.sh +64 -0
- package/overlays/mkdocs/README.md +309 -0
- package/overlays/mkdocs/devcontainer.patch.json +24 -0
- package/overlays/mkdocs/overlay.yml +15 -0
- package/overlays/modern-cli-tools/README.md +556 -0
- package/overlays/modern-cli-tools/devcontainer.patch.json +3 -0
- package/overlays/modern-cli-tools/overlay.yml +13 -0
- package/overlays/modern-cli-tools/setup.sh +153 -0
- package/overlays/mongodb/.env.example +9 -0
- package/overlays/mongodb/README.md +481 -0
- package/overlays/mongodb/devcontainer.patch.json +32 -0
- package/overlays/mongodb/docker-compose.yml +44 -0
- package/overlays/mongodb/overlay.yml +17 -0
- package/overlays/mongodb/verify.sh +48 -0
- package/overlays/mysql/.env.example +11 -0
- package/overlays/mysql/README.md +542 -0
- package/overlays/mysql/devcontainer.patch.json +34 -0
- package/overlays/mysql/docker-compose.yml +55 -0
- package/overlays/mysql/overlay.yml +16 -0
- package/overlays/mysql/verify.sh +48 -0
- package/overlays/nats/.env.example +5 -0
- package/overlays/nats/README.md +762 -0
- package/overlays/nats/devcontainer.patch.json +24 -0
- package/overlays/nats/docker-compose.yml +31 -0
- package/overlays/nats/overlay.yml +18 -0
- package/overlays/nats/verify.sh +50 -0
- package/overlays/ngrok/README.md +503 -0
- package/overlays/ngrok/devcontainer.patch.json +3 -0
- package/overlays/ngrok/overlay.yml +14 -0
- package/overlays/ngrok/setup.sh +125 -0
- package/overlays/nodejs/README.md +192 -0
- package/overlays/nodejs/devcontainer.patch.json +49 -0
- package/overlays/nodejs/global-packages.txt +16 -0
- package/overlays/nodejs/overlay.yml +14 -0
- package/overlays/nodejs/setup.sh +46 -0
- package/overlays/nodejs/verify.sh +32 -0
- package/overlays/otel-collector/.env.example +9 -0
- package/overlays/otel-collector/README.md +1257 -0
- package/overlays/otel-collector/devcontainer.patch.json +28 -0
- package/overlays/otel-collector/docker-compose.yml +22 -0
- package/overlays/otel-collector/otel-collector-config.yaml +68 -0
- package/overlays/otel-collector/overlay.yml +21 -0
- package/overlays/otel-collector/setup.sh +49 -0
- package/overlays/otel-demo-nodejs/.env.example +2 -0
- package/overlays/otel-demo-nodejs/Dockerfile-otel-demo-nodejs +17 -0
- package/overlays/otel-demo-nodejs/README.md +409 -0
- package/overlays/otel-demo-nodejs/devcontainer.patch.json +12 -0
- package/overlays/otel-demo-nodejs/docker-compose.yml +19 -0
- package/overlays/otel-demo-nodejs/overlay.yml +23 -0
- package/overlays/otel-demo-nodejs/package-otel-demo-nodejs.json +20 -0
- package/overlays/otel-demo-nodejs/server-otel-demo-nodejs.js +259 -0
- package/overlays/otel-demo-nodejs/tracing-otel-demo-nodejs.js +57 -0
- package/overlays/otel-demo-nodejs/verify.sh +31 -0
- package/overlays/otel-demo-python/.env.example +2 -0
- package/overlays/otel-demo-python/Dockerfile-otel-demo-python +16 -0
- package/overlays/otel-demo-python/README.md +82 -0
- package/overlays/otel-demo-python/app-otel-demo-python.py +208 -0
- package/overlays/otel-demo-python/devcontainer.patch.json +12 -0
- package/overlays/otel-demo-python/docker-compose.yml +19 -0
- package/overlays/otel-demo-python/overlay.yml +23 -0
- package/overlays/otel-demo-python/requirements-otel-demo-python.txt +4 -0
- package/overlays/otel-demo-python/verify.sh +31 -0
- package/overlays/playwright/README.md +629 -0
- package/overlays/playwright/devcontainer.patch.json +9 -0
- package/overlays/playwright/overlay.yml +13 -0
- package/overlays/postgres/.env.example +6 -0
- package/overlays/postgres/README.md +602 -0
- package/overlays/postgres/devcontainer.patch.json +21 -0
- package/overlays/postgres/docker-compose.yml +22 -0
- package/overlays/postgres/overlay.yml +15 -0
- package/overlays/postgres/verify.sh +45 -0
- package/overlays/powershell/README.md +314 -0
- package/overlays/powershell/devcontainer.patch.json +22 -0
- package/overlays/powershell/overlay.yml +13 -0
- package/overlays/powershell/setup.sh +29 -0
- package/overlays/powershell/verify.sh +38 -0
- package/overlays/pre-commit/README.md +263 -0
- package/overlays/pre-commit/devcontainer.patch.json +9 -0
- package/overlays/pre-commit/overlay.yml +16 -0
- package/overlays/pre-commit/setup.sh +129 -0
- package/overlays/presets/docs-site.yml +118 -0
- package/overlays/presets/fullstack.yml +181 -0
- package/overlays/presets/microservice.yml +118 -0
- package/overlays/presets/web-api.yml +109 -0
- package/overlays/prometheus/.env.example +5 -0
- package/overlays/prometheus/README.md +1246 -0
- package/overlays/prometheus/devcontainer.patch.json +12 -0
- package/overlays/prometheus/docker-compose.yml +22 -0
- package/overlays/prometheus/overlay.yml +17 -0
- package/overlays/prometheus/prometheus.yml +12 -0
- package/overlays/prometheus/verify.sh +34 -0
- package/overlays/promtail/.env.example +2 -0
- package/overlays/promtail/README.md +357 -0
- package/overlays/promtail/devcontainer.patch.json +5 -0
- package/overlays/promtail/docker-compose.yml +16 -0
- package/overlays/promtail/overlay.yml +17 -0
- package/overlays/promtail/promtail-config.yaml +60 -0
- package/overlays/promtail/verify.sh +31 -0
- package/overlays/pulumi/README.md +472 -0
- package/overlays/pulumi/devcontainer.patch.json +13 -0
- package/overlays/pulumi/overlay.yml +14 -0
- package/overlays/pulumi/verify.sh +31 -0
- package/overlays/python/README.md +919 -0
- package/overlays/python/devcontainer.patch.json +41 -0
- package/overlays/python/overlay.yml +12 -0
- package/overlays/python/requirements-overlay.txt +13 -0
- package/overlays/python/setup.sh +47 -0
- package/overlays/python/verify.sh +32 -0
- package/overlays/rabbitmq/.env.example +7 -0
- package/overlays/rabbitmq/README.md +680 -0
- package/overlays/rabbitmq/devcontainer.patch.json +28 -0
- package/overlays/rabbitmq/docker-compose.yml +30 -0
- package/overlays/rabbitmq/overlay.yml +18 -0
- package/overlays/rabbitmq/verify.sh +41 -0
- package/overlays/redis/.env.example +4 -0
- package/overlays/redis/README.md +776 -0
- package/overlays/redis/devcontainer.patch.json +21 -0
- package/overlays/redis/docker-compose.yml +21 -0
- package/overlays/redis/overlay.yml +15 -0
- package/overlays/redis/verify.sh +41 -0
- package/overlays/redpanda/.env.example +10 -0
- package/overlays/redpanda/README.md +703 -0
- package/overlays/redpanda/devcontainer.patch.json +37 -0
- package/overlays/redpanda/docker-compose.yml +67 -0
- package/overlays/redpanda/overlay.yml +21 -0
- package/overlays/redpanda/verify.sh +48 -0
- package/overlays/rust/README.md +299 -0
- package/overlays/rust/devcontainer.patch.json +39 -0
- package/overlays/rust/overlay.yml +15 -0
- package/overlays/rust/setup.sh +36 -0
- package/overlays/rust/verify.sh +51 -0
- package/overlays/sqlite/README.md +584 -0
- package/overlays/sqlite/devcontainer.patch.json +14 -0
- package/overlays/sqlite/overlay.yml +15 -0
- package/overlays/sqlite/setup.sh +27 -0
- package/overlays/sqlite/verify.sh +43 -0
- package/overlays/sqlserver/.env.example +6 -0
- package/overlays/sqlserver/README.md +592 -0
- package/overlays/sqlserver/devcontainer.patch.json +22 -0
- package/overlays/sqlserver/docker-compose.yml +32 -0
- package/overlays/sqlserver/overlay.yml +17 -0
- package/overlays/sqlserver/verify.sh +30 -0
- package/overlays/tempo/.env.example +5 -0
- package/overlays/tempo/README.md +273 -0
- package/overlays/tempo/devcontainer.patch.json +12 -0
- package/overlays/tempo/docker-compose.yml +20 -0
- package/overlays/tempo/overlay.yml +20 -0
- package/overlays/tempo/tempo-config.yaml +32 -0
- package/overlays/tempo/verify.sh +31 -0
- package/overlays/terraform/README.md +389 -0
- package/overlays/terraform/devcontainer.patch.json +15 -0
- package/overlays/terraform/overlay.yml +14 -0
- package/overlays/terraform/verify.sh +63 -0
- package/package.json +74 -0
- package/templates/README.md +285 -0
- package/templates/compose/.devcontainer/devcontainer.json +46 -0
- package/templates/compose/.devcontainer/docker-compose.yml +12 -0
- package/templates/compose/README.md +20 -0
- package/templates/plain/.devcontainer/devcontainer.json +35 -0
- package/templates/plain/README.md +21 -0
- package/tool/README.md +281 -0
- package/tool/schema/base-images.schema.json +43 -0
- package/tool/schema/base-templates.schema.json +34 -0
- package/tool/schema/config.schema.json +71 -0
- package/tool/schema/overlay-manifest.schema.json +86 -0
|
@@ -0,0 +1,556 @@
|
|
|
1
|
+
# Modern CLI Tools Overlay
|
|
2
|
+
|
|
3
|
+
Essential modern command-line tools for faster, better development workflows.
|
|
4
|
+
|
|
5
|
+
## What's Included
|
|
6
|
+
|
|
7
|
+
- **jq** - JSON processor and query language
|
|
8
|
+
- **yq** - YAML/XML/TOML processor (jq for YAML)
|
|
9
|
+
- **ripgrep (rg)** - Extremely fast grep alternative
|
|
10
|
+
- **fd** - Fast and user-friendly find alternative
|
|
11
|
+
- **bat** - Cat clone with syntax highlighting and Git integration
|
|
12
|
+
|
|
13
|
+
## Tools Overview
|
|
14
|
+
|
|
15
|
+
### jq - JSON Processor
|
|
16
|
+
|
|
17
|
+
**Why:** Parse, filter, and transform JSON with ease.
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# Pretty-print JSON
|
|
21
|
+
cat data.json | jq
|
|
22
|
+
|
|
23
|
+
# Extract field
|
|
24
|
+
echo '{"name":"Alice"}' | jq '.name'
|
|
25
|
+
# Output: "Alice"
|
|
26
|
+
|
|
27
|
+
# Filter array
|
|
28
|
+
echo '[1,2,3,4,5]' | jq 'map(. * 2)'
|
|
29
|
+
# Output: [2,4,6,8,10]
|
|
30
|
+
|
|
31
|
+
# Complex query
|
|
32
|
+
curl https://api.github.com/users/github | jq '.public_repos'
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### yq - YAML Processor
|
|
36
|
+
|
|
37
|
+
**Why:** jq-like functionality for YAML, XML, and TOML.
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# Pretty-print YAML
|
|
41
|
+
cat config.yml | yq
|
|
42
|
+
|
|
43
|
+
# Extract value
|
|
44
|
+
yq '.database.host' config.yml
|
|
45
|
+
# Output: localhost
|
|
46
|
+
|
|
47
|
+
# Convert YAML to JSON
|
|
48
|
+
yq -o json config.yml
|
|
49
|
+
|
|
50
|
+
# Modify YAML
|
|
51
|
+
yq '.version = "2.0"' config.yml
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### ripgrep (rg) - Fast Grep
|
|
55
|
+
|
|
56
|
+
**Why:** 10-100x faster than grep, respects .gitignore.
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# Search for pattern
|
|
60
|
+
rg 'TODO'
|
|
61
|
+
|
|
62
|
+
# Search with context
|
|
63
|
+
rg -C 3 'error'
|
|
64
|
+
|
|
65
|
+
# Search specific file types
|
|
66
|
+
rg 'function' -t js
|
|
67
|
+
|
|
68
|
+
# Case-insensitive
|
|
69
|
+
rg -i 'error'
|
|
70
|
+
|
|
71
|
+
# Search and replace (preview)
|
|
72
|
+
rg 'old' --replace 'new'
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### fd - Fast Find
|
|
76
|
+
|
|
77
|
+
**Why:** Simpler syntax, faster, respects .gitignore.
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# Find files by name
|
|
81
|
+
fd config
|
|
82
|
+
|
|
83
|
+
# Find by extension
|
|
84
|
+
fd -e js
|
|
85
|
+
|
|
86
|
+
# Find and execute
|
|
87
|
+
fd -e json -x cat
|
|
88
|
+
|
|
89
|
+
# Exclude patterns
|
|
90
|
+
fd -E node_modules
|
|
91
|
+
|
|
92
|
+
# Show hidden files
|
|
93
|
+
fd -H .env
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### bat - Better Cat
|
|
97
|
+
|
|
98
|
+
**Why:** Syntax highlighting, Git integration, paging.
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
# Display file with syntax highlighting
|
|
102
|
+
bat src/main.js
|
|
103
|
+
|
|
104
|
+
# Show with line numbers
|
|
105
|
+
bat -n file.py
|
|
106
|
+
|
|
107
|
+
# Show Git changes
|
|
108
|
+
bat -d file.js
|
|
109
|
+
|
|
110
|
+
# Page long files
|
|
111
|
+
bat --paging always large.log
|
|
112
|
+
|
|
113
|
+
# Multiple files
|
|
114
|
+
bat file1.js file2.py
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Quick Start Examples
|
|
118
|
+
|
|
119
|
+
### Working with JSON
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
# Fetch and format API response
|
|
123
|
+
curl -s https://api.github.com/repos/microsoft/vscode | jq '{name, stars: .stargazers_count}'
|
|
124
|
+
|
|
125
|
+
# Filter package.json dependencies
|
|
126
|
+
cat package.json | jq '.dependencies | keys'
|
|
127
|
+
|
|
128
|
+
# Extract nested values
|
|
129
|
+
echo '{"user":{"name":"Alice","age":30}}' | jq '.user.name'
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Working with YAML
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
# Read Docker Compose service names
|
|
136
|
+
yq '.services | keys' docker-compose.yml
|
|
137
|
+
|
|
138
|
+
# Update YAML value
|
|
139
|
+
yq -i '.version = "3.8"' docker-compose.yml
|
|
140
|
+
|
|
141
|
+
# Convert between formats
|
|
142
|
+
yq -o json config.yml > config.json
|
|
143
|
+
yq -o yaml config.json > config.yml
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Searching Code
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
# Find all TODOs
|
|
150
|
+
rg 'TODO|FIXME'
|
|
151
|
+
|
|
152
|
+
# Search for function definitions (JavaScript)
|
|
153
|
+
rg 'function \w+' -t js
|
|
154
|
+
|
|
155
|
+
# Find imports
|
|
156
|
+
rg '^import .* from' -t ts
|
|
157
|
+
|
|
158
|
+
# Count occurrences
|
|
159
|
+
rg 'error' --count
|
|
160
|
+
|
|
161
|
+
# Search with file path pattern
|
|
162
|
+
rg 'class' --glob '**/*.py'
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Finding Files
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
# Find TypeScript files
|
|
169
|
+
fd -e ts
|
|
170
|
+
|
|
171
|
+
# Find config files
|
|
172
|
+
fd config
|
|
173
|
+
|
|
174
|
+
# Find recently modified files
|
|
175
|
+
fd -e js --changed-within 1d
|
|
176
|
+
|
|
177
|
+
# Find and remove
|
|
178
|
+
fd -e log -x rm
|
|
179
|
+
|
|
180
|
+
# Find in specific directory
|
|
181
|
+
fd -e json src/
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### Viewing Files
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
# View with syntax highlighting
|
|
188
|
+
bat README.md
|
|
189
|
+
|
|
190
|
+
# Compare files
|
|
191
|
+
bat -d old.js new.js
|
|
192
|
+
|
|
193
|
+
# View specific lines
|
|
194
|
+
bat -r 10:20 file.js
|
|
195
|
+
|
|
196
|
+
# View multiple files
|
|
197
|
+
bat src/**/*.js
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
## Advanced Usage
|
|
201
|
+
|
|
202
|
+
### jq Advanced
|
|
203
|
+
|
|
204
|
+
**Filters and Pipes:**
|
|
205
|
+
|
|
206
|
+
```bash
|
|
207
|
+
# Chain operations
|
|
208
|
+
jq '.users | map(.name) | sort | unique'
|
|
209
|
+
|
|
210
|
+
# Conditional selection
|
|
211
|
+
jq '.[] | select(.age > 18)'
|
|
212
|
+
|
|
213
|
+
# Group by field
|
|
214
|
+
jq 'group_by(.category)'
|
|
215
|
+
|
|
216
|
+
# Create new structure
|
|
217
|
+
jq '{name: .firstName, email: .emailAddress}'
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
**Working with Arrays:**
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
# Map and filter
|
|
224
|
+
echo '[1,2,3,4,5]' | jq 'map(select(. > 2))'
|
|
225
|
+
|
|
226
|
+
# Reduce
|
|
227
|
+
echo '[1,2,3,4,5]' | jq 'reduce .[] as $i (0; . + $i)'
|
|
228
|
+
|
|
229
|
+
# Flatten
|
|
230
|
+
echo '[[1,2],[3,4]]' | jq 'flatten'
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### yq Advanced
|
|
234
|
+
|
|
235
|
+
**Multiple Documents:**
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
# Process all YAML documents in file
|
|
239
|
+
yq eval-all '. | select(.kind == "Deployment")' k8s.yml
|
|
240
|
+
|
|
241
|
+
# Merge YAML files
|
|
242
|
+
yq eval-all '. as $item ireduce ({}; . * $item)' file1.yml file2.yml
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
**Modify in Place:**
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
# Update nested value
|
|
249
|
+
yq -i '.metadata.labels.version = "2.0"' deploy.yml
|
|
250
|
+
|
|
251
|
+
# Add new field
|
|
252
|
+
yq -i '.spec.replicas = 3' deploy.yml
|
|
253
|
+
|
|
254
|
+
# Delete field
|
|
255
|
+
yq -i 'del(.spec.template)' deploy.yml
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
### ripgrep Advanced
|
|
259
|
+
|
|
260
|
+
**File Type Filtering:**
|
|
261
|
+
|
|
262
|
+
```bash
|
|
263
|
+
# Search TypeScript/JavaScript
|
|
264
|
+
rg 'export' -t ts -t js
|
|
265
|
+
|
|
266
|
+
# Custom file type
|
|
267
|
+
rg --type-add 'custom:*.{vue,jsx}' -t custom 'component'
|
|
268
|
+
|
|
269
|
+
# Exclude file types
|
|
270
|
+
rg 'error' -T json
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
**Output Formatting:**
|
|
274
|
+
|
|
275
|
+
```bash
|
|
276
|
+
# Only show matching content
|
|
277
|
+
rg -o 'email: \S+@\S+'
|
|
278
|
+
|
|
279
|
+
# Show file names only
|
|
280
|
+
rg -l 'TODO'
|
|
281
|
+
|
|
282
|
+
# Count matches per file
|
|
283
|
+
rg --count 'error'
|
|
284
|
+
|
|
285
|
+
# JSON output
|
|
286
|
+
rg --json 'pattern'
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
### fd Advanced
|
|
290
|
+
|
|
291
|
+
**Execute Commands:**
|
|
292
|
+
|
|
293
|
+
```bash
|
|
294
|
+
# Run command for each file
|
|
295
|
+
fd -e js -x eslint
|
|
296
|
+
|
|
297
|
+
# Run with placeholders
|
|
298
|
+
fd -e md -x echo "Processing: {}"
|
|
299
|
+
|
|
300
|
+
# Parallel execution
|
|
301
|
+
fd -e jpg -x convert {} -resize 50% resized-{}
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
**Filter by Time:**
|
|
305
|
+
|
|
306
|
+
```bash
|
|
307
|
+
# Modified in last 24 hours
|
|
308
|
+
fd -e log --changed-within 24h
|
|
309
|
+
|
|
310
|
+
# Created before date
|
|
311
|
+
fd --changed-before '2024-01-01'
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
### bat Advanced
|
|
315
|
+
|
|
316
|
+
**Themes:**
|
|
317
|
+
|
|
318
|
+
```bash
|
|
319
|
+
# List available themes
|
|
320
|
+
bat --list-themes
|
|
321
|
+
|
|
322
|
+
# Use specific theme
|
|
323
|
+
bat --theme="Dracula" file.js
|
|
324
|
+
|
|
325
|
+
# Set default theme in config
|
|
326
|
+
echo '--theme="Monokai Extended"' >> ~/.config/bat/config
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
**Integration:**
|
|
330
|
+
|
|
331
|
+
```bash
|
|
332
|
+
# Use as man pager
|
|
333
|
+
export MANPAGER="sh -c 'col -bx | bat -l man -p'"
|
|
334
|
+
|
|
335
|
+
# Git diff
|
|
336
|
+
git diff | bat -l diff
|
|
337
|
+
|
|
338
|
+
# Piping
|
|
339
|
+
curl -s https://example.com | bat -l html
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
## Configuration
|
|
343
|
+
|
|
344
|
+
### bat Config
|
|
345
|
+
|
|
346
|
+
Located at `~/.config/bat/config`:
|
|
347
|
+
|
|
348
|
+
```bash
|
|
349
|
+
# Default theme
|
|
350
|
+
--theme="Monokai Extended"
|
|
351
|
+
|
|
352
|
+
# Always show line numbers
|
|
353
|
+
--style="numbers,changes,header"
|
|
354
|
+
|
|
355
|
+
# Enable italic text
|
|
356
|
+
--italic-text=always
|
|
357
|
+
|
|
358
|
+
# Paging behavior
|
|
359
|
+
--paging=auto
|
|
360
|
+
|
|
361
|
+
# Wrap long lines
|
|
362
|
+
--wrap=auto
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
### ripgrep Config
|
|
366
|
+
|
|
367
|
+
Create `~/.ripgreprc`:
|
|
368
|
+
|
|
369
|
+
```bash
|
|
370
|
+
# Follow symbolic links
|
|
371
|
+
--follow
|
|
372
|
+
|
|
373
|
+
# Search hidden files
|
|
374
|
+
--hidden
|
|
375
|
+
|
|
376
|
+
# Don't search these directories
|
|
377
|
+
--glob=!.git/
|
|
378
|
+
--glob=!node_modules/
|
|
379
|
+
--glob=!dist/
|
|
380
|
+
|
|
381
|
+
# Smart case (case-insensitive if all lowercase)
|
|
382
|
+
--smart-case
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
Use in shell:
|
|
386
|
+
|
|
387
|
+
```bash
|
|
388
|
+
export RIPGREP_CONFIG_PATH=~/.ripgreprc
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
### Shell Aliases
|
|
392
|
+
|
|
393
|
+
The overlay creates these aliases in `~/.bash_aliases`:
|
|
394
|
+
|
|
395
|
+
```bash
|
|
396
|
+
# Use modern tools as defaults
|
|
397
|
+
alias cat='bat'
|
|
398
|
+
alias less='bat'
|
|
399
|
+
alias grep='rg'
|
|
400
|
+
alias find='fd'
|
|
401
|
+
|
|
402
|
+
# Enhanced jq/yq
|
|
403
|
+
alias jqp='jq -C . | bat -l json'
|
|
404
|
+
alias yqp='yq -C | bat -l yaml'
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
## Integration with Other Tools
|
|
408
|
+
|
|
409
|
+
### Git
|
|
410
|
+
|
|
411
|
+
```bash
|
|
412
|
+
# Better git diff
|
|
413
|
+
git config --global pager.diff "bat --style=plain"
|
|
414
|
+
|
|
415
|
+
# Better git log
|
|
416
|
+
git config --global pager.log "bat --style=plain"
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
### fzf (Fuzzy Finder)
|
|
420
|
+
|
|
421
|
+
```bash
|
|
422
|
+
# Use fd for file listing
|
|
423
|
+
export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git'
|
|
424
|
+
|
|
425
|
+
# Preview with bat
|
|
426
|
+
export FZF_CTRL_T_OPTS="--preview 'bat --color=always --line-range :500 {}'"
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
### VS Code
|
|
430
|
+
|
|
431
|
+
Search with ripgrep (already default in VS Code).
|
|
432
|
+
|
|
433
|
+
## Performance Comparisons
|
|
434
|
+
|
|
435
|
+
| Task | Traditional | Modern | Speedup |
|
|
436
|
+
| ----------- | ------------------- | ------- | ------- |
|
|
437
|
+
| Search text | grep | ripgrep | 10-100x |
|
|
438
|
+
| Find files | find | fd | 5-20x |
|
|
439
|
+
| View file | cat | bat | +syntax |
|
|
440
|
+
| Parse JSON | python -m json.tool | jq | 3-10x |
|
|
441
|
+
|
|
442
|
+
## Cheat Sheets
|
|
443
|
+
|
|
444
|
+
### jq
|
|
445
|
+
|
|
446
|
+
```bash
|
|
447
|
+
jq '.' # Pretty-print
|
|
448
|
+
jq '.field' # Access field
|
|
449
|
+
jq '.[]' # Array elements
|
|
450
|
+
jq '.[0]' # First element
|
|
451
|
+
jq '.[] | .name' # Map to field
|
|
452
|
+
jq 'keys' # Object keys
|
|
453
|
+
jq 'length' # Array/object length
|
|
454
|
+
jq 'select(.x > 5)' # Filter
|
|
455
|
+
jq 'map(.x * 2)' # Transform
|
|
456
|
+
jq 'sort_by(.name)' # Sort
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
### yq
|
|
460
|
+
|
|
461
|
+
```bash
|
|
462
|
+
yq '.' # Pretty-print
|
|
463
|
+
yq '.field' # Access field
|
|
464
|
+
yq -o json # Output as JSON
|
|
465
|
+
yq -i '.x = 5' # Modify in-place
|
|
466
|
+
yq eval-all 'select(.kind == "Pod")' # Filter
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
### ripgrep
|
|
470
|
+
|
|
471
|
+
```bash
|
|
472
|
+
rg 'pattern' # Basic search
|
|
473
|
+
rg -i 'pattern' # Case-insensitive
|
|
474
|
+
rg -w 'word' # Match whole word
|
|
475
|
+
rg -t js 'pattern' # File type
|
|
476
|
+
rg -l 'pattern' # Files with matches
|
|
477
|
+
rg -c 'pattern' # Count per file
|
|
478
|
+
rg -A 3 'pattern' # 3 lines after
|
|
479
|
+
rg -B 3 'pattern' # 3 lines before
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
### fd
|
|
483
|
+
|
|
484
|
+
```bash
|
|
485
|
+
fd 'pattern' # Find files
|
|
486
|
+
fd -e js # By extension
|
|
487
|
+
fd -H # Include hidden
|
|
488
|
+
fd -E node_modules # Exclude pattern
|
|
489
|
+
fd -x cmd # Execute command
|
|
490
|
+
fd -t f # Files only
|
|
491
|
+
fd -t d # Directories only
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
### bat
|
|
495
|
+
|
|
496
|
+
```bash
|
|
497
|
+
bat file # View file
|
|
498
|
+
bat -n file # With line numbers
|
|
499
|
+
bat -p file # Plain (no decorations)
|
|
500
|
+
bat -A file # Show all characters
|
|
501
|
+
bat -l js file # Force language
|
|
502
|
+
bat -d old new # Diff mode
|
|
503
|
+
```
|
|
504
|
+
|
|
505
|
+
## Troubleshooting
|
|
506
|
+
|
|
507
|
+
### Aliases Not Working
|
|
508
|
+
|
|
509
|
+
Reload shell configuration:
|
|
510
|
+
|
|
511
|
+
```bash
|
|
512
|
+
source ~/.bashrc
|
|
513
|
+
```
|
|
514
|
+
|
|
515
|
+
Or start new shell session.
|
|
516
|
+
|
|
517
|
+
### bat Theme Not Applied
|
|
518
|
+
|
|
519
|
+
List available themes:
|
|
520
|
+
|
|
521
|
+
```bash
|
|
522
|
+
bat --list-themes
|
|
523
|
+
```
|
|
524
|
+
|
|
525
|
+
Set in config:
|
|
526
|
+
|
|
527
|
+
```bash
|
|
528
|
+
echo '--theme="Monokai Extended"' >> ~/.config/bat/config
|
|
529
|
+
```
|
|
530
|
+
|
|
531
|
+
### ripgrep Too Slow
|
|
532
|
+
|
|
533
|
+
Exclude large directories:
|
|
534
|
+
|
|
535
|
+
```bash
|
|
536
|
+
rg 'pattern' --glob '!node_modules' --glob '!dist'
|
|
537
|
+
```
|
|
538
|
+
|
|
539
|
+
Or configure permanently in `~/.ripgreprc`.
|
|
540
|
+
|
|
541
|
+
### fd Not Finding Hidden Files
|
|
542
|
+
|
|
543
|
+
Use `-H` flag:
|
|
544
|
+
|
|
545
|
+
```bash
|
|
546
|
+
fd -H '.env'
|
|
547
|
+
```
|
|
548
|
+
|
|
549
|
+
## Additional Resources
|
|
550
|
+
|
|
551
|
+
- [jq Manual](https://jqlang.github.io/jq/manual/)
|
|
552
|
+
- [jq Playground](https://jqplay.org/)
|
|
553
|
+
- [yq Documentation](https://mikefarah.gitbook.io/yq/)
|
|
554
|
+
- [ripgrep Guide](https://github.com/BurntSushi/ripgrep/blob/master/GUIDE.md)
|
|
555
|
+
- [fd Documentation](https://github.com/sharkdp/fd)
|
|
556
|
+
- [bat Documentation](https://github.com/sharkdp/bat)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
id: modern-cli-tools
|
|
2
|
+
name: Modern CLI Tools
|
|
3
|
+
description: jq, yq, ripgrep, fd, bat - Essential modern command-line tools
|
|
4
|
+
category: dev
|
|
5
|
+
supports: []
|
|
6
|
+
requires: []
|
|
7
|
+
suggests: []
|
|
8
|
+
conflicts: []
|
|
9
|
+
tags:
|
|
10
|
+
- dev
|
|
11
|
+
- cli
|
|
12
|
+
- productivity
|
|
13
|
+
ports: []
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Modern CLI tools setup script
|
|
3
|
+
|
|
4
|
+
set -e
|
|
5
|
+
|
|
6
|
+
echo "🚀 Setting up modern CLI tools..."
|
|
7
|
+
|
|
8
|
+
# Update package list
|
|
9
|
+
sudo apt-get update -qq
|
|
10
|
+
|
|
11
|
+
# Install jq (JSON processor)
|
|
12
|
+
echo "📦 Installing jq..."
|
|
13
|
+
sudo apt-get install -y jq
|
|
14
|
+
if command -v jq &> /dev/null; then
|
|
15
|
+
echo "✓ jq installed: $(jq --version)"
|
|
16
|
+
else
|
|
17
|
+
echo "✗ jq installation failed"
|
|
18
|
+
exit 1
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
# Install yq (YAML processor)
|
|
22
|
+
echo "📦 Installing yq..."
|
|
23
|
+
YQ_VERSION="4.52.2"
|
|
24
|
+
ARCH=$(uname -m)
|
|
25
|
+
|
|
26
|
+
# SHA256 checksums for yq v4.52.2
|
|
27
|
+
if [ "$ARCH" = "x86_64" ]; then
|
|
28
|
+
YQ_ARCH="amd64"
|
|
29
|
+
YQ_CHECKSUM="a74bd266990339e0c48a2103534aef692abf99f19390d12c2b0ce6830385c459"
|
|
30
|
+
elif [ "$ARCH" = "aarch64" ] || [ "$ARCH" = "arm64" ]; then
|
|
31
|
+
YQ_ARCH="arm64"
|
|
32
|
+
YQ_CHECKSUM="c82856ac30da522f50dcdd4f53065487b5a2927e9b87ff637956900986f1f7c2"
|
|
33
|
+
else
|
|
34
|
+
echo "⚠️ Unsupported architecture: $ARCH, defaulting to amd64"
|
|
35
|
+
YQ_ARCH="amd64"
|
|
36
|
+
YQ_CHECKSUM="a74bd266990339e0c48a2103534aef692abf99f19390d12c2b0ce6830385c459"
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
curl -L "https://github.com/mikefarah/yq/releases/download/v${YQ_VERSION}/yq_linux_${YQ_ARCH}" \
|
|
40
|
+
-o /tmp/yq
|
|
41
|
+
|
|
42
|
+
# Verify checksum
|
|
43
|
+
echo "🔐 Verifying yq checksum..."
|
|
44
|
+
echo "${YQ_CHECKSUM} /tmp/yq" | sha256sum -c - || {
|
|
45
|
+
echo "✗ yq checksum verification failed"
|
|
46
|
+
rm /tmp/yq
|
|
47
|
+
exit 1
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
sudo mv /tmp/yq /usr/local/bin/yq
|
|
51
|
+
sudo chmod +x /usr/local/bin/yq
|
|
52
|
+
|
|
53
|
+
if command -v yq &> /dev/null; then
|
|
54
|
+
echo "✓ yq installed: $(yq --version)"
|
|
55
|
+
else
|
|
56
|
+
echo "✗ yq installation failed"
|
|
57
|
+
exit 1
|
|
58
|
+
fi
|
|
59
|
+
|
|
60
|
+
# Install ripgrep (fast grep alternative)
|
|
61
|
+
echo "📦 Installing ripgrep..."
|
|
62
|
+
sudo apt-get install -y ripgrep
|
|
63
|
+
if command -v rg &> /dev/null; then
|
|
64
|
+
echo "✓ ripgrep installed: $(rg --version | head -n 1)"
|
|
65
|
+
else
|
|
66
|
+
echo "✗ ripgrep installation failed"
|
|
67
|
+
exit 1
|
|
68
|
+
fi
|
|
69
|
+
|
|
70
|
+
# Install fd (fast find alternative)
|
|
71
|
+
echo "📦 Installing fd..."
|
|
72
|
+
sudo apt-get install -y fd-find
|
|
73
|
+
# Create symlink for 'fd' command (package installs as 'fdfind' on Debian)
|
|
74
|
+
sudo ln -sf $(which fdfind) /usr/local/bin/fd
|
|
75
|
+
if command -v fd &> /dev/null; then
|
|
76
|
+
echo "✓ fd installed: $(fd --version)"
|
|
77
|
+
else
|
|
78
|
+
echo "✗ fd installation failed"
|
|
79
|
+
exit 1
|
|
80
|
+
fi
|
|
81
|
+
|
|
82
|
+
# Install bat (better cat with syntax highlighting)
|
|
83
|
+
echo "📦 Installing bat..."
|
|
84
|
+
sudo apt-get install -y bat
|
|
85
|
+
# Create symlink for 'bat' command (package installs as 'batcat' on Debian)
|
|
86
|
+
sudo ln -sf $(which batcat) /usr/local/bin/bat
|
|
87
|
+
if command -v bat &> /dev/null; then
|
|
88
|
+
echo "✓ bat installed: $(bat --version)"
|
|
89
|
+
else
|
|
90
|
+
echo "✗ bat installation failed"
|
|
91
|
+
exit 1
|
|
92
|
+
fi
|
|
93
|
+
|
|
94
|
+
# Configure bat
|
|
95
|
+
mkdir -p "$HOME/.config/bat"
|
|
96
|
+
cat > "$HOME/.config/bat/config" << 'EOF'
|
|
97
|
+
# bat configuration
|
|
98
|
+
--theme="Monokai Extended"
|
|
99
|
+
--style="numbers,changes,header"
|
|
100
|
+
--italic-text=always
|
|
101
|
+
--paging=auto
|
|
102
|
+
EOF
|
|
103
|
+
|
|
104
|
+
# Create shell aliases
|
|
105
|
+
ALIAS_FILE="$HOME/.bash_aliases"
|
|
106
|
+
cat > "$ALIAS_FILE" << 'EOF'
|
|
107
|
+
# Modern CLI tools aliases
|
|
108
|
+
|
|
109
|
+
# bat aliases
|
|
110
|
+
alias cat='bat'
|
|
111
|
+
alias less='bat'
|
|
112
|
+
|
|
113
|
+
# ripgrep aliases
|
|
114
|
+
alias grep='rg'
|
|
115
|
+
|
|
116
|
+
# fd aliases
|
|
117
|
+
alias find='fd'
|
|
118
|
+
|
|
119
|
+
# jq pretty print
|
|
120
|
+
alias jqp='jq -C . | bat -l json'
|
|
121
|
+
|
|
122
|
+
# yq pretty print
|
|
123
|
+
alias yqp='yq -C | bat -l yaml'
|
|
124
|
+
EOF
|
|
125
|
+
|
|
126
|
+
echo "✓ Shell aliases created in $ALIAS_FILE"
|
|
127
|
+
|
|
128
|
+
# Source aliases in .bashrc if not already done
|
|
129
|
+
if [ -f "$HOME/.bashrc" ]; then
|
|
130
|
+
if ! grep -q ".bash_aliases" "$HOME/.bashrc"; then
|
|
131
|
+
echo "" >> "$HOME/.bashrc"
|
|
132
|
+
echo "# Load modern CLI tool aliases" >> "$HOME/.bashrc"
|
|
133
|
+
echo "if [ -f ~/.bash_aliases ]; then" >> "$HOME/.bashrc"
|
|
134
|
+
echo " . ~/.bash_aliases" >> "$HOME/.bashrc"
|
|
135
|
+
echo "fi" >> "$HOME/.bashrc"
|
|
136
|
+
fi
|
|
137
|
+
fi
|
|
138
|
+
|
|
139
|
+
echo "✓ Modern CLI tools setup complete"
|
|
140
|
+
echo ""
|
|
141
|
+
echo "💡 Installed tools:"
|
|
142
|
+
echo " - jq: JSON processor"
|
|
143
|
+
echo " - yq: YAML/XML/TOML processor"
|
|
144
|
+
echo " - ripgrep: Fast search (rg, aliased as grep)"
|
|
145
|
+
echo " - fd: Fast find (aliased as find)"
|
|
146
|
+
echo " - bat: Cat with syntax highlighting (aliased as cat/less)"
|
|
147
|
+
echo ""
|
|
148
|
+
echo "Examples:"
|
|
149
|
+
echo " cat file.json # Syntax-highlighted with bat"
|
|
150
|
+
echo " rg 'pattern' . # Fast recursive search"
|
|
151
|
+
echo " fd '*.js' # Fast file finding"
|
|
152
|
+
echo " echo '{}' | jq # Pretty-print JSON"
|
|
153
|
+
echo " cat config.yml | yq # Process YAML"
|