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.
Files changed (327) hide show
  1. package/README.md +843 -0
  2. package/dist/scripts/init.d.ts +3 -0
  3. package/dist/scripts/init.d.ts.map +1 -0
  4. package/dist/scripts/init.js +1190 -0
  5. package/dist/scripts/init.js.map +1 -0
  6. package/dist/scripts/migrate-to-manifests.d.ts +12 -0
  7. package/dist/scripts/migrate-to-manifests.d.ts.map +1 -0
  8. package/dist/scripts/migrate-to-manifests.js +230 -0
  9. package/dist/scripts/migrate-to-manifests.js.map +1 -0
  10. package/dist/tool/questionnaire/composer.d.ts +6 -0
  11. package/dist/tool/questionnaire/composer.d.ts.map +1 -0
  12. package/dist/tool/questionnaire/composer.js +1232 -0
  13. package/dist/tool/questionnaire/composer.js.map +1 -0
  14. package/dist/tool/readme/markdown-parser.d.ts +30 -0
  15. package/dist/tool/readme/markdown-parser.d.ts.map +1 -0
  16. package/dist/tool/readme/markdown-parser.js +139 -0
  17. package/dist/tool/readme/markdown-parser.js.map +1 -0
  18. package/dist/tool/readme/readme-generator.d.ts +9 -0
  19. package/dist/tool/readme/readme-generator.d.ts.map +1 -0
  20. package/dist/tool/readme/readme-generator.js +422 -0
  21. package/dist/tool/readme/readme-generator.js.map +1 -0
  22. package/dist/tool/schema/custom-loader.d.ts +17 -0
  23. package/dist/tool/schema/custom-loader.d.ts.map +1 -0
  24. package/dist/tool/schema/custom-loader.js +149 -0
  25. package/dist/tool/schema/custom-loader.js.map +1 -0
  26. package/dist/tool/schema/overlay-loader.d.ts +47 -0
  27. package/dist/tool/schema/overlay-loader.d.ts.map +1 -0
  28. package/dist/tool/schema/overlay-loader.js +252 -0
  29. package/dist/tool/schema/overlay-loader.js.map +1 -0
  30. package/dist/tool/schema/types.d.ts +212 -0
  31. package/dist/tool/schema/types.d.ts.map +1 -0
  32. package/dist/tool/schema/types.js +5 -0
  33. package/dist/tool/schema/types.js.map +1 -0
  34. package/docs/README.md +308 -0
  35. package/docs/architecture.md +233 -0
  36. package/docs/creating-overlays.md +549 -0
  37. package/docs/custom-patches.md +540 -0
  38. package/docs/dependencies.md +279 -0
  39. package/docs/examples/custom-patches-example.md +85 -0
  40. package/docs/examples.md +576 -0
  41. package/docs/messaging-comparison.md +265 -0
  42. package/docs/messaging-quick-start.md +385 -0
  43. package/docs/observability-workflow.md +537 -0
  44. package/docs/overlay-manifest-refactoring.md +214 -0
  45. package/docs/overlay-metadata-archive.md +54 -0
  46. package/docs/overlays.md +523 -0
  47. package/docs/presets-architecture.md +498 -0
  48. package/docs/presets.md +366 -0
  49. package/docs/publishing.md +476 -0
  50. package/docs/quick-reference.md +326 -0
  51. package/docs/ux.md +170 -0
  52. package/features/README.md +85 -0
  53. package/features/cross-distro-packages/README.md +146 -0
  54. package/features/cross-distro-packages/devcontainer-feature.json +20 -0
  55. package/features/cross-distro-packages/install.sh +58 -0
  56. package/features/local-secrets-manager/devcontainer-feature.json +18 -0
  57. package/features/local-secrets-manager/install.sh +127 -0
  58. package/features/project-scaffolder/devcontainer-feature.json +24 -0
  59. package/features/project-scaffolder/install.sh +100 -0
  60. package/features/team-conventions/devcontainer-feature.json +24 -0
  61. package/features/team-conventions/install.sh +93 -0
  62. package/overlays/.registry/README.md +14 -0
  63. package/overlays/.registry/base-images.yml +26 -0
  64. package/overlays/.registry/base-templates.yml +7 -0
  65. package/overlays/README.md +155 -0
  66. package/overlays/alertmanager/.env.example +5 -0
  67. package/overlays/alertmanager/README.md +465 -0
  68. package/overlays/alertmanager/alert-rules.yml +56 -0
  69. package/overlays/alertmanager/alertmanager.yml +42 -0
  70. package/overlays/alertmanager/devcontainer.patch.json +12 -0
  71. package/overlays/alertmanager/docker-compose.yml +20 -0
  72. package/overlays/alertmanager/overlay.yml +17 -0
  73. package/overlays/alertmanager/setup.sh +53 -0
  74. package/overlays/alertmanager/verify.sh +31 -0
  75. package/overlays/aws-cli/README.md +473 -0
  76. package/overlays/aws-cli/devcontainer.patch.json +13 -0
  77. package/overlays/aws-cli/overlay.yml +13 -0
  78. package/overlays/azure-cli/README.md +551 -0
  79. package/overlays/azure-cli/devcontainer.patch.json +8 -0
  80. package/overlays/azure-cli/overlay.yml +13 -0
  81. package/overlays/bun/README.md +312 -0
  82. package/overlays/bun/devcontainer.patch.json +41 -0
  83. package/overlays/bun/overlay.yml +16 -0
  84. package/overlays/bun/setup.sh +79 -0
  85. package/overlays/bun/verify.sh +30 -0
  86. package/overlays/codex/README.md +128 -0
  87. package/overlays/codex/devcontainer.patch.json +3 -0
  88. package/overlays/codex/overlay.yml +14 -0
  89. package/overlays/codex/setup.sh +24 -0
  90. package/overlays/codex/verify.sh +30 -0
  91. package/overlays/commitlint/README.md +333 -0
  92. package/overlays/commitlint/devcontainer.patch.json +8 -0
  93. package/overlays/commitlint/overlay.yml +16 -0
  94. package/overlays/commitlint/setup.sh +234 -0
  95. package/overlays/direnv/README.md +504 -0
  96. package/overlays/direnv/devcontainer.patch.json +6 -0
  97. package/overlays/direnv/overlay.yml +13 -0
  98. package/overlays/direnv/setup.sh +139 -0
  99. package/overlays/docker-in-docker/README.md +534 -0
  100. package/overlays/docker-in-docker/devcontainer.patch.json +10 -0
  101. package/overlays/docker-in-docker/overlay.yml +13 -0
  102. package/overlays/docker-sock/README.md +256 -0
  103. package/overlays/docker-sock/devcontainer.patch.json +9 -0
  104. package/overlays/docker-sock/docker-compose.yml +8 -0
  105. package/overlays/docker-sock/overlay.yml +13 -0
  106. package/overlays/dotnet/README.md +147 -0
  107. package/overlays/dotnet/devcontainer.patch.json +51 -0
  108. package/overlays/dotnet/global-tools.txt +24 -0
  109. package/overlays/dotnet/overlay.yml +13 -0
  110. package/overlays/dotnet/setup.sh +51 -0
  111. package/overlays/dotnet/verify.sh +26 -0
  112. package/overlays/gcloud/README.md +269 -0
  113. package/overlays/gcloud/devcontainer.patch.json +14 -0
  114. package/overlays/gcloud/overlay.yml +14 -0
  115. package/overlays/gcloud/verify.sh +52 -0
  116. package/overlays/git-helpers/README.md +168 -0
  117. package/overlays/git-helpers/devcontainer.patch.json +33 -0
  118. package/overlays/git-helpers/overlay.yml +15 -0
  119. package/overlays/git-helpers/setup.sh +91 -0
  120. package/overlays/go/README.md +293 -0
  121. package/overlays/go/devcontainer.patch.json +43 -0
  122. package/overlays/go/overlay.yml +15 -0
  123. package/overlays/go/setup.sh +33 -0
  124. package/overlays/go/verify.sh +40 -0
  125. package/overlays/grafana/.env.example +9 -0
  126. package/overlays/grafana/README.md +462 -0
  127. package/overlays/grafana/dashboard-provider.yml +11 -0
  128. package/overlays/grafana/dashboards/observability-overview.json +263 -0
  129. package/overlays/grafana/devcontainer.patch.json +12 -0
  130. package/overlays/grafana/docker-compose.yml +27 -0
  131. package/overlays/grafana/grafana-datasources.yml +57 -0
  132. package/overlays/grafana/overlay.yml +21 -0
  133. package/overlays/grafana/verify.sh +34 -0
  134. package/overlays/jaeger/.env.example +7 -0
  135. package/overlays/jaeger/README.md +867 -0
  136. package/overlays/jaeger/devcontainer.patch.json +12 -0
  137. package/overlays/jaeger/docker-compose.yml +17 -0
  138. package/overlays/jaeger/overlay.yml +19 -0
  139. package/overlays/java/README.md +267 -0
  140. package/overlays/java/devcontainer.patch.json +44 -0
  141. package/overlays/java/overlay.yml +16 -0
  142. package/overlays/java/setup.sh +41 -0
  143. package/overlays/java/verify.sh +42 -0
  144. package/overlays/just/README.md +443 -0
  145. package/overlays/just/devcontainer.patch.json +3 -0
  146. package/overlays/just/overlay.yml +13 -0
  147. package/overlays/just/setup.sh +182 -0
  148. package/overlays/kubectl-helm/README.md +660 -0
  149. package/overlays/kubectl-helm/devcontainer.patch.json +10 -0
  150. package/overlays/kubectl-helm/overlay.yml +13 -0
  151. package/overlays/loki/.env.example +5 -0
  152. package/overlays/loki/README.md +1156 -0
  153. package/overlays/loki/devcontainer.patch.json +12 -0
  154. package/overlays/loki/docker-compose.yml +18 -0
  155. package/overlays/loki/loki-config.yaml +45 -0
  156. package/overlays/loki/overlay.yml +17 -0
  157. package/overlays/minio/.env.example +9 -0
  158. package/overlays/minio/README.md +639 -0
  159. package/overlays/minio/devcontainer.patch.json +30 -0
  160. package/overlays/minio/docker-compose.yml +28 -0
  161. package/overlays/minio/overlay.yml +18 -0
  162. package/overlays/minio/setup.sh +61 -0
  163. package/overlays/minio/verify.sh +64 -0
  164. package/overlays/mkdocs/README.md +309 -0
  165. package/overlays/mkdocs/devcontainer.patch.json +24 -0
  166. package/overlays/mkdocs/overlay.yml +15 -0
  167. package/overlays/modern-cli-tools/README.md +556 -0
  168. package/overlays/modern-cli-tools/devcontainer.patch.json +3 -0
  169. package/overlays/modern-cli-tools/overlay.yml +13 -0
  170. package/overlays/modern-cli-tools/setup.sh +153 -0
  171. package/overlays/mongodb/.env.example +9 -0
  172. package/overlays/mongodb/README.md +481 -0
  173. package/overlays/mongodb/devcontainer.patch.json +32 -0
  174. package/overlays/mongodb/docker-compose.yml +44 -0
  175. package/overlays/mongodb/overlay.yml +17 -0
  176. package/overlays/mongodb/verify.sh +48 -0
  177. package/overlays/mysql/.env.example +11 -0
  178. package/overlays/mysql/README.md +542 -0
  179. package/overlays/mysql/devcontainer.patch.json +34 -0
  180. package/overlays/mysql/docker-compose.yml +55 -0
  181. package/overlays/mysql/overlay.yml +16 -0
  182. package/overlays/mysql/verify.sh +48 -0
  183. package/overlays/nats/.env.example +5 -0
  184. package/overlays/nats/README.md +762 -0
  185. package/overlays/nats/devcontainer.patch.json +24 -0
  186. package/overlays/nats/docker-compose.yml +31 -0
  187. package/overlays/nats/overlay.yml +18 -0
  188. package/overlays/nats/verify.sh +50 -0
  189. package/overlays/ngrok/README.md +503 -0
  190. package/overlays/ngrok/devcontainer.patch.json +3 -0
  191. package/overlays/ngrok/overlay.yml +14 -0
  192. package/overlays/ngrok/setup.sh +125 -0
  193. package/overlays/nodejs/README.md +192 -0
  194. package/overlays/nodejs/devcontainer.patch.json +49 -0
  195. package/overlays/nodejs/global-packages.txt +16 -0
  196. package/overlays/nodejs/overlay.yml +14 -0
  197. package/overlays/nodejs/setup.sh +46 -0
  198. package/overlays/nodejs/verify.sh +32 -0
  199. package/overlays/otel-collector/.env.example +9 -0
  200. package/overlays/otel-collector/README.md +1257 -0
  201. package/overlays/otel-collector/devcontainer.patch.json +28 -0
  202. package/overlays/otel-collector/docker-compose.yml +22 -0
  203. package/overlays/otel-collector/otel-collector-config.yaml +68 -0
  204. package/overlays/otel-collector/overlay.yml +21 -0
  205. package/overlays/otel-collector/setup.sh +49 -0
  206. package/overlays/otel-demo-nodejs/.env.example +2 -0
  207. package/overlays/otel-demo-nodejs/Dockerfile-otel-demo-nodejs +17 -0
  208. package/overlays/otel-demo-nodejs/README.md +409 -0
  209. package/overlays/otel-demo-nodejs/devcontainer.patch.json +12 -0
  210. package/overlays/otel-demo-nodejs/docker-compose.yml +19 -0
  211. package/overlays/otel-demo-nodejs/overlay.yml +23 -0
  212. package/overlays/otel-demo-nodejs/package-otel-demo-nodejs.json +20 -0
  213. package/overlays/otel-demo-nodejs/server-otel-demo-nodejs.js +259 -0
  214. package/overlays/otel-demo-nodejs/tracing-otel-demo-nodejs.js +57 -0
  215. package/overlays/otel-demo-nodejs/verify.sh +31 -0
  216. package/overlays/otel-demo-python/.env.example +2 -0
  217. package/overlays/otel-demo-python/Dockerfile-otel-demo-python +16 -0
  218. package/overlays/otel-demo-python/README.md +82 -0
  219. package/overlays/otel-demo-python/app-otel-demo-python.py +208 -0
  220. package/overlays/otel-demo-python/devcontainer.patch.json +12 -0
  221. package/overlays/otel-demo-python/docker-compose.yml +19 -0
  222. package/overlays/otel-demo-python/overlay.yml +23 -0
  223. package/overlays/otel-demo-python/requirements-otel-demo-python.txt +4 -0
  224. package/overlays/otel-demo-python/verify.sh +31 -0
  225. package/overlays/playwright/README.md +629 -0
  226. package/overlays/playwright/devcontainer.patch.json +9 -0
  227. package/overlays/playwright/overlay.yml +13 -0
  228. package/overlays/postgres/.env.example +6 -0
  229. package/overlays/postgres/README.md +602 -0
  230. package/overlays/postgres/devcontainer.patch.json +21 -0
  231. package/overlays/postgres/docker-compose.yml +22 -0
  232. package/overlays/postgres/overlay.yml +15 -0
  233. package/overlays/postgres/verify.sh +45 -0
  234. package/overlays/powershell/README.md +314 -0
  235. package/overlays/powershell/devcontainer.patch.json +22 -0
  236. package/overlays/powershell/overlay.yml +13 -0
  237. package/overlays/powershell/setup.sh +29 -0
  238. package/overlays/powershell/verify.sh +38 -0
  239. package/overlays/pre-commit/README.md +263 -0
  240. package/overlays/pre-commit/devcontainer.patch.json +9 -0
  241. package/overlays/pre-commit/overlay.yml +16 -0
  242. package/overlays/pre-commit/setup.sh +129 -0
  243. package/overlays/presets/docs-site.yml +118 -0
  244. package/overlays/presets/fullstack.yml +181 -0
  245. package/overlays/presets/microservice.yml +118 -0
  246. package/overlays/presets/web-api.yml +109 -0
  247. package/overlays/prometheus/.env.example +5 -0
  248. package/overlays/prometheus/README.md +1246 -0
  249. package/overlays/prometheus/devcontainer.patch.json +12 -0
  250. package/overlays/prometheus/docker-compose.yml +22 -0
  251. package/overlays/prometheus/overlay.yml +17 -0
  252. package/overlays/prometheus/prometheus.yml +12 -0
  253. package/overlays/prometheus/verify.sh +34 -0
  254. package/overlays/promtail/.env.example +2 -0
  255. package/overlays/promtail/README.md +357 -0
  256. package/overlays/promtail/devcontainer.patch.json +5 -0
  257. package/overlays/promtail/docker-compose.yml +16 -0
  258. package/overlays/promtail/overlay.yml +17 -0
  259. package/overlays/promtail/promtail-config.yaml +60 -0
  260. package/overlays/promtail/verify.sh +31 -0
  261. package/overlays/pulumi/README.md +472 -0
  262. package/overlays/pulumi/devcontainer.patch.json +13 -0
  263. package/overlays/pulumi/overlay.yml +14 -0
  264. package/overlays/pulumi/verify.sh +31 -0
  265. package/overlays/python/README.md +919 -0
  266. package/overlays/python/devcontainer.patch.json +41 -0
  267. package/overlays/python/overlay.yml +12 -0
  268. package/overlays/python/requirements-overlay.txt +13 -0
  269. package/overlays/python/setup.sh +47 -0
  270. package/overlays/python/verify.sh +32 -0
  271. package/overlays/rabbitmq/.env.example +7 -0
  272. package/overlays/rabbitmq/README.md +680 -0
  273. package/overlays/rabbitmq/devcontainer.patch.json +28 -0
  274. package/overlays/rabbitmq/docker-compose.yml +30 -0
  275. package/overlays/rabbitmq/overlay.yml +18 -0
  276. package/overlays/rabbitmq/verify.sh +41 -0
  277. package/overlays/redis/.env.example +4 -0
  278. package/overlays/redis/README.md +776 -0
  279. package/overlays/redis/devcontainer.patch.json +21 -0
  280. package/overlays/redis/docker-compose.yml +21 -0
  281. package/overlays/redis/overlay.yml +15 -0
  282. package/overlays/redis/verify.sh +41 -0
  283. package/overlays/redpanda/.env.example +10 -0
  284. package/overlays/redpanda/README.md +703 -0
  285. package/overlays/redpanda/devcontainer.patch.json +37 -0
  286. package/overlays/redpanda/docker-compose.yml +67 -0
  287. package/overlays/redpanda/overlay.yml +21 -0
  288. package/overlays/redpanda/verify.sh +48 -0
  289. package/overlays/rust/README.md +299 -0
  290. package/overlays/rust/devcontainer.patch.json +39 -0
  291. package/overlays/rust/overlay.yml +15 -0
  292. package/overlays/rust/setup.sh +36 -0
  293. package/overlays/rust/verify.sh +51 -0
  294. package/overlays/sqlite/README.md +584 -0
  295. package/overlays/sqlite/devcontainer.patch.json +14 -0
  296. package/overlays/sqlite/overlay.yml +15 -0
  297. package/overlays/sqlite/setup.sh +27 -0
  298. package/overlays/sqlite/verify.sh +43 -0
  299. package/overlays/sqlserver/.env.example +6 -0
  300. package/overlays/sqlserver/README.md +592 -0
  301. package/overlays/sqlserver/devcontainer.patch.json +22 -0
  302. package/overlays/sqlserver/docker-compose.yml +32 -0
  303. package/overlays/sqlserver/overlay.yml +17 -0
  304. package/overlays/sqlserver/verify.sh +30 -0
  305. package/overlays/tempo/.env.example +5 -0
  306. package/overlays/tempo/README.md +273 -0
  307. package/overlays/tempo/devcontainer.patch.json +12 -0
  308. package/overlays/tempo/docker-compose.yml +20 -0
  309. package/overlays/tempo/overlay.yml +20 -0
  310. package/overlays/tempo/tempo-config.yaml +32 -0
  311. package/overlays/tempo/verify.sh +31 -0
  312. package/overlays/terraform/README.md +389 -0
  313. package/overlays/terraform/devcontainer.patch.json +15 -0
  314. package/overlays/terraform/overlay.yml +14 -0
  315. package/overlays/terraform/verify.sh +63 -0
  316. package/package.json +74 -0
  317. package/templates/README.md +285 -0
  318. package/templates/compose/.devcontainer/devcontainer.json +46 -0
  319. package/templates/compose/.devcontainer/docker-compose.yml +12 -0
  320. package/templates/compose/README.md +20 -0
  321. package/templates/plain/.devcontainer/devcontainer.json +35 -0
  322. package/templates/plain/README.md +21 -0
  323. package/tool/README.md +281 -0
  324. package/tool/schema/base-images.schema.json +43 -0
  325. package/tool/schema/base-templates.schema.json +34 -0
  326. package/tool/schema/config.schema.json +71 -0
  327. 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,3 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json"
3
+ }
@@ -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"