@hasna/terminal 2.3.0 → 2.3.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 (202) hide show
  1. package/dist/cli.js +64 -16
  2. package/package.json +1 -1
  3. package/src/ai.ts +8 -0
  4. package/src/cli.tsx +57 -18
  5. package/src/output-processor.ts +6 -1
  6. package/src/output-store.ts +58 -12
  7. package/src/tool-profiles.ts +139 -0
  8. package/temp/rtk/.claude/agents/code-reviewer.md +0 -221
  9. package/temp/rtk/.claude/agents/debugger.md +0 -519
  10. package/temp/rtk/.claude/agents/rtk-testing-specialist.md +0 -461
  11. package/temp/rtk/.claude/agents/rust-rtk.md +0 -511
  12. package/temp/rtk/.claude/agents/technical-writer.md +0 -355
  13. package/temp/rtk/.claude/commands/diagnose.md +0 -352
  14. package/temp/rtk/.claude/commands/test-routing.md +0 -362
  15. package/temp/rtk/.claude/hooks/bash/pre-commit-format.sh +0 -16
  16. package/temp/rtk/.claude/hooks/rtk-rewrite.sh +0 -70
  17. package/temp/rtk/.claude/hooks/rtk-suggest.sh +0 -152
  18. package/temp/rtk/.claude/rules/cli-testing.md +0 -526
  19. package/temp/rtk/.claude/skills/issue-triage/SKILL.md +0 -348
  20. package/temp/rtk/.claude/skills/issue-triage/templates/issue-comment.md +0 -134
  21. package/temp/rtk/.claude/skills/performance.md +0 -435
  22. package/temp/rtk/.claude/skills/pr-triage/SKILL.md +0 -315
  23. package/temp/rtk/.claude/skills/pr-triage/templates/review-comment.md +0 -71
  24. package/temp/rtk/.claude/skills/repo-recap.md +0 -206
  25. package/temp/rtk/.claude/skills/rtk-tdd/SKILL.md +0 -78
  26. package/temp/rtk/.claude/skills/rtk-tdd/references/testing-patterns.md +0 -124
  27. package/temp/rtk/.claude/skills/security-guardian.md +0 -503
  28. package/temp/rtk/.claude/skills/ship.md +0 -404
  29. package/temp/rtk/.github/workflows/benchmark.yml +0 -34
  30. package/temp/rtk/.github/workflows/dco-check.yaml +0 -12
  31. package/temp/rtk/.github/workflows/release-please.yml +0 -51
  32. package/temp/rtk/.github/workflows/release.yml +0 -343
  33. package/temp/rtk/.github/workflows/security-check.yml +0 -135
  34. package/temp/rtk/.github/workflows/validate-docs.yml +0 -78
  35. package/temp/rtk/.release-please-manifest.json +0 -3
  36. package/temp/rtk/ARCHITECTURE.md +0 -1491
  37. package/temp/rtk/CHANGELOG.md +0 -640
  38. package/temp/rtk/CLAUDE.md +0 -605
  39. package/temp/rtk/CONTRIBUTING.md +0 -199
  40. package/temp/rtk/Cargo.lock +0 -1668
  41. package/temp/rtk/Cargo.toml +0 -64
  42. package/temp/rtk/Formula/rtk.rb +0 -43
  43. package/temp/rtk/INSTALL.md +0 -390
  44. package/temp/rtk/LICENSE +0 -21
  45. package/temp/rtk/README.md +0 -386
  46. package/temp/rtk/README_es.md +0 -159
  47. package/temp/rtk/README_fr.md +0 -197
  48. package/temp/rtk/README_ja.md +0 -159
  49. package/temp/rtk/README_ko.md +0 -159
  50. package/temp/rtk/README_zh.md +0 -167
  51. package/temp/rtk/ROADMAP.md +0 -15
  52. package/temp/rtk/SECURITY.md +0 -217
  53. package/temp/rtk/TEST_EXEC_TIME.md +0 -102
  54. package/temp/rtk/build.rs +0 -57
  55. package/temp/rtk/docs/AUDIT_GUIDE.md +0 -432
  56. package/temp/rtk/docs/FEATURES.md +0 -1410
  57. package/temp/rtk/docs/TROUBLESHOOTING.md +0 -309
  58. package/temp/rtk/docs/filter-workflow.md +0 -102
  59. package/temp/rtk/docs/images/gain-dashboard.jpg +0 -0
  60. package/temp/rtk/docs/tracking.md +0 -583
  61. package/temp/rtk/hooks/opencode-rtk.ts +0 -39
  62. package/temp/rtk/hooks/rtk-awareness.md +0 -29
  63. package/temp/rtk/hooks/rtk-rewrite.sh +0 -61
  64. package/temp/rtk/hooks/test-rtk-rewrite.sh +0 -442
  65. package/temp/rtk/install.sh +0 -124
  66. package/temp/rtk/release-please-config.json +0 -10
  67. package/temp/rtk/scripts/benchmark.sh +0 -592
  68. package/temp/rtk/scripts/check-installation.sh +0 -162
  69. package/temp/rtk/scripts/install-local.sh +0 -37
  70. package/temp/rtk/scripts/rtk-economics.sh +0 -137
  71. package/temp/rtk/scripts/test-all.sh +0 -561
  72. package/temp/rtk/scripts/test-aristote.sh +0 -227
  73. package/temp/rtk/scripts/test-tracking.sh +0 -79
  74. package/temp/rtk/scripts/update-readme-metrics.sh +0 -32
  75. package/temp/rtk/scripts/validate-docs.sh +0 -73
  76. package/temp/rtk/src/aws_cmd.rs +0 -880
  77. package/temp/rtk/src/binlog.rs +0 -1645
  78. package/temp/rtk/src/cargo_cmd.rs +0 -1727
  79. package/temp/rtk/src/cc_economics.rs +0 -1157
  80. package/temp/rtk/src/ccusage.rs +0 -340
  81. package/temp/rtk/src/config.rs +0 -187
  82. package/temp/rtk/src/container.rs +0 -855
  83. package/temp/rtk/src/curl_cmd.rs +0 -134
  84. package/temp/rtk/src/deps.rs +0 -268
  85. package/temp/rtk/src/diff_cmd.rs +0 -367
  86. package/temp/rtk/src/discover/mod.rs +0 -274
  87. package/temp/rtk/src/discover/provider.rs +0 -388
  88. package/temp/rtk/src/discover/registry.rs +0 -2022
  89. package/temp/rtk/src/discover/report.rs +0 -202
  90. package/temp/rtk/src/discover/rules.rs +0 -667
  91. package/temp/rtk/src/display_helpers.rs +0 -402
  92. package/temp/rtk/src/dotnet_cmd.rs +0 -1771
  93. package/temp/rtk/src/dotnet_format_report.rs +0 -133
  94. package/temp/rtk/src/dotnet_trx.rs +0 -593
  95. package/temp/rtk/src/env_cmd.rs +0 -204
  96. package/temp/rtk/src/filter.rs +0 -462
  97. package/temp/rtk/src/filters/README.md +0 -52
  98. package/temp/rtk/src/filters/ansible-playbook.toml +0 -34
  99. package/temp/rtk/src/filters/basedpyright.toml +0 -47
  100. package/temp/rtk/src/filters/biome.toml +0 -45
  101. package/temp/rtk/src/filters/brew-install.toml +0 -37
  102. package/temp/rtk/src/filters/composer-install.toml +0 -40
  103. package/temp/rtk/src/filters/df.toml +0 -16
  104. package/temp/rtk/src/filters/dotnet-build.toml +0 -64
  105. package/temp/rtk/src/filters/du.toml +0 -16
  106. package/temp/rtk/src/filters/fail2ban-client.toml +0 -15
  107. package/temp/rtk/src/filters/gcc.toml +0 -49
  108. package/temp/rtk/src/filters/gcloud.toml +0 -22
  109. package/temp/rtk/src/filters/hadolint.toml +0 -24
  110. package/temp/rtk/src/filters/helm.toml +0 -29
  111. package/temp/rtk/src/filters/iptables.toml +0 -27
  112. package/temp/rtk/src/filters/jj.toml +0 -28
  113. package/temp/rtk/src/filters/jq.toml +0 -24
  114. package/temp/rtk/src/filters/make.toml +0 -41
  115. package/temp/rtk/src/filters/markdownlint.toml +0 -24
  116. package/temp/rtk/src/filters/mix-compile.toml +0 -27
  117. package/temp/rtk/src/filters/mix-format.toml +0 -15
  118. package/temp/rtk/src/filters/mvn-build.toml +0 -44
  119. package/temp/rtk/src/filters/oxlint.toml +0 -43
  120. package/temp/rtk/src/filters/ping.toml +0 -63
  121. package/temp/rtk/src/filters/pio-run.toml +0 -40
  122. package/temp/rtk/src/filters/poetry-install.toml +0 -50
  123. package/temp/rtk/src/filters/pre-commit.toml +0 -35
  124. package/temp/rtk/src/filters/ps.toml +0 -16
  125. package/temp/rtk/src/filters/quarto-render.toml +0 -41
  126. package/temp/rtk/src/filters/rsync.toml +0 -48
  127. package/temp/rtk/src/filters/shellcheck.toml +0 -27
  128. package/temp/rtk/src/filters/shopify-theme.toml +0 -29
  129. package/temp/rtk/src/filters/skopeo.toml +0 -45
  130. package/temp/rtk/src/filters/sops.toml +0 -16
  131. package/temp/rtk/src/filters/ssh.toml +0 -44
  132. package/temp/rtk/src/filters/stat.toml +0 -34
  133. package/temp/rtk/src/filters/swift-build.toml +0 -41
  134. package/temp/rtk/src/filters/systemctl-status.toml +0 -33
  135. package/temp/rtk/src/filters/terraform-plan.toml +0 -35
  136. package/temp/rtk/src/filters/tofu-fmt.toml +0 -16
  137. package/temp/rtk/src/filters/tofu-init.toml +0 -38
  138. package/temp/rtk/src/filters/tofu-plan.toml +0 -35
  139. package/temp/rtk/src/filters/tofu-validate.toml +0 -17
  140. package/temp/rtk/src/filters/trunk-build.toml +0 -39
  141. package/temp/rtk/src/filters/ty.toml +0 -50
  142. package/temp/rtk/src/filters/uv-sync.toml +0 -37
  143. package/temp/rtk/src/filters/xcodebuild.toml +0 -99
  144. package/temp/rtk/src/filters/yamllint.toml +0 -25
  145. package/temp/rtk/src/find_cmd.rs +0 -598
  146. package/temp/rtk/src/format_cmd.rs +0 -386
  147. package/temp/rtk/src/gain.rs +0 -723
  148. package/temp/rtk/src/gh_cmd.rs +0 -1651
  149. package/temp/rtk/src/git.rs +0 -2012
  150. package/temp/rtk/src/go_cmd.rs +0 -592
  151. package/temp/rtk/src/golangci_cmd.rs +0 -254
  152. package/temp/rtk/src/grep_cmd.rs +0 -288
  153. package/temp/rtk/src/gt_cmd.rs +0 -810
  154. package/temp/rtk/src/hook_audit_cmd.rs +0 -283
  155. package/temp/rtk/src/hook_check.rs +0 -171
  156. package/temp/rtk/src/init.rs +0 -1859
  157. package/temp/rtk/src/integrity.rs +0 -537
  158. package/temp/rtk/src/json_cmd.rs +0 -231
  159. package/temp/rtk/src/learn/detector.rs +0 -628
  160. package/temp/rtk/src/learn/mod.rs +0 -119
  161. package/temp/rtk/src/learn/report.rs +0 -184
  162. package/temp/rtk/src/lint_cmd.rs +0 -694
  163. package/temp/rtk/src/local_llm.rs +0 -316
  164. package/temp/rtk/src/log_cmd.rs +0 -248
  165. package/temp/rtk/src/ls.rs +0 -324
  166. package/temp/rtk/src/main.rs +0 -2482
  167. package/temp/rtk/src/mypy_cmd.rs +0 -389
  168. package/temp/rtk/src/next_cmd.rs +0 -241
  169. package/temp/rtk/src/npm_cmd.rs +0 -236
  170. package/temp/rtk/src/parser/README.md +0 -267
  171. package/temp/rtk/src/parser/error.rs +0 -46
  172. package/temp/rtk/src/parser/formatter.rs +0 -336
  173. package/temp/rtk/src/parser/mod.rs +0 -311
  174. package/temp/rtk/src/parser/types.rs +0 -119
  175. package/temp/rtk/src/pip_cmd.rs +0 -302
  176. package/temp/rtk/src/playwright_cmd.rs +0 -479
  177. package/temp/rtk/src/pnpm_cmd.rs +0 -573
  178. package/temp/rtk/src/prettier_cmd.rs +0 -221
  179. package/temp/rtk/src/prisma_cmd.rs +0 -482
  180. package/temp/rtk/src/psql_cmd.rs +0 -382
  181. package/temp/rtk/src/pytest_cmd.rs +0 -384
  182. package/temp/rtk/src/read.rs +0 -217
  183. package/temp/rtk/src/rewrite_cmd.rs +0 -50
  184. package/temp/rtk/src/ruff_cmd.rs +0 -402
  185. package/temp/rtk/src/runner.rs +0 -271
  186. package/temp/rtk/src/summary.rs +0 -297
  187. package/temp/rtk/src/tee.rs +0 -405
  188. package/temp/rtk/src/telemetry.rs +0 -248
  189. package/temp/rtk/src/toml_filter.rs +0 -1655
  190. package/temp/rtk/src/tracking.rs +0 -1416
  191. package/temp/rtk/src/tree.rs +0 -209
  192. package/temp/rtk/src/tsc_cmd.rs +0 -259
  193. package/temp/rtk/src/utils.rs +0 -432
  194. package/temp/rtk/src/verify_cmd.rs +0 -47
  195. package/temp/rtk/src/vitest_cmd.rs +0 -385
  196. package/temp/rtk/src/wc_cmd.rs +0 -401
  197. package/temp/rtk/src/wget_cmd.rs +0 -260
  198. package/temp/rtk/tests/fixtures/dotnet/build_failed.txt +0 -11
  199. package/temp/rtk/tests/fixtures/dotnet/format_changes.json +0 -31
  200. package/temp/rtk/tests/fixtures/dotnet/format_empty.json +0 -1
  201. package/temp/rtk/tests/fixtures/dotnet/format_success.json +0 -12
  202. package/temp/rtk/tests/fixtures/dotnet/test_failed.txt +0 -18
@@ -1,561 +0,0 @@
1
- #!/usr/bin/env bash
2
- #
3
- # RTK Smoke Test Suite
4
- # Exercises every command to catch regressions after merge.
5
- # Exit code: number of failures (0 = all green)
6
- #
7
- set -euo pipefail
8
-
9
- PASS=0
10
- FAIL=0
11
- SKIP=0
12
- FAILURES=()
13
-
14
- # Colors
15
- RED='\033[0;31m'
16
- GREEN='\033[0;32m'
17
- YELLOW='\033[0;33m'
18
- CYAN='\033[0;36m'
19
- BOLD='\033[1m'
20
- NC='\033[0m'
21
-
22
- # ── Helpers ──────────────────────────────────────────
23
-
24
- assert_ok() {
25
- local name="$1"
26
- shift
27
- local output
28
- if output=$("$@" 2>&1); then
29
- PASS=$((PASS + 1))
30
- printf " ${GREEN}PASS${NC} %s\n" "$name"
31
- else
32
- FAIL=$((FAIL + 1))
33
- FAILURES+=("$name")
34
- printf " ${RED}FAIL${NC} %s\n" "$name"
35
- printf " cmd: %s\n" "$*"
36
- printf " out: %s\n" "$(echo "$output" | head -3)"
37
- fi
38
- }
39
-
40
- assert_contains() {
41
- local name="$1"
42
- local needle="$2"
43
- shift 2
44
- local output
45
- if output=$("$@" 2>&1) && echo "$output" | grep -q "$needle"; then
46
- PASS=$((PASS + 1))
47
- printf " ${GREEN}PASS${NC} %s\n" "$name"
48
- else
49
- FAIL=$((FAIL + 1))
50
- FAILURES+=("$name")
51
- printf " ${RED}FAIL${NC} %s\n" "$name"
52
- printf " expected: '%s'\n" "$needle"
53
- printf " got: %s\n" "$(echo "$output" | head -3)"
54
- fi
55
- }
56
-
57
- assert_exit_ok() {
58
- local name="$1"
59
- shift
60
- if "$@" >/dev/null 2>&1; then
61
- PASS=$((PASS + 1))
62
- printf " ${GREEN}PASS${NC} %s\n" "$name"
63
- else
64
- FAIL=$((FAIL + 1))
65
- FAILURES+=("$name")
66
- printf " ${RED}FAIL${NC} %s\n" "$name"
67
- printf " cmd: %s\n" "$*"
68
- fi
69
- }
70
-
71
- assert_fails() {
72
- local name="$1"
73
- shift
74
- if "$@" >/dev/null 2>&1; then
75
- FAIL=$((FAIL + 1))
76
- FAILURES+=("$name (expected failure, got success)")
77
- printf " ${RED}FAIL${NC} %s (expected failure)\n" "$name"
78
- else
79
- PASS=$((PASS + 1))
80
- printf " ${GREEN}PASS${NC} %s\n" "$name"
81
- fi
82
- }
83
-
84
- assert_help() {
85
- local name="$1"
86
- shift
87
- assert_contains "$name --help" "Usage:" "$@" --help
88
- }
89
-
90
- skip_test() {
91
- local name="$1"
92
- local reason="$2"
93
- SKIP=$((SKIP + 1))
94
- printf " ${YELLOW}SKIP${NC} %s (%s)\n" "$name" "$reason"
95
- }
96
-
97
- section() {
98
- printf "\n${BOLD}${CYAN}── %s ──${NC}\n" "$1"
99
- }
100
-
101
- # ── Preamble ─────────────────────────────────────────
102
-
103
- RTK=$(command -v rtk || echo "")
104
- if [[ -z "$RTK" ]]; then
105
- echo "rtk not found in PATH. Run: cargo install --path ."
106
- exit 1
107
- fi
108
-
109
- printf "${BOLD}RTK Smoke Test Suite${NC}\n"
110
- printf "Binary: %s\n" "$RTK"
111
- printf "Version: %s\n" "$(rtk --version)"
112
- printf "Date: %s\n" "$(date '+%Y-%m-%d %H:%M')"
113
-
114
- # Need a git repo to test git commands
115
- if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
116
- echo "Must run from inside a git repository."
117
- exit 1
118
- fi
119
-
120
- REPO_ROOT=$(git rev-parse --show-toplevel)
121
-
122
- # ── 1. Version & Help ───────────────────────────────
123
-
124
- section "Version & Help"
125
-
126
- assert_contains "rtk --version" "rtk" rtk --version
127
- assert_contains "rtk --help" "Usage:" rtk --help
128
-
129
- # ── 2. Ls ────────────────────────────────────────────
130
-
131
- section "Ls"
132
-
133
- assert_ok "rtk ls ." rtk ls .
134
- assert_ok "rtk ls -la ." rtk ls -la .
135
- assert_ok "rtk ls -lh ." rtk ls -lh .
136
- assert_ok "rtk ls -l src/" rtk ls -l src/
137
- assert_ok "rtk ls src/ -l (flag after)" rtk ls src/ -l
138
- assert_ok "rtk ls multi paths" rtk ls src/ scripts/
139
- assert_contains "rtk ls -a shows hidden" ".git" rtk ls -a .
140
- assert_contains "rtk ls shows sizes" "K" rtk ls src/
141
- assert_contains "rtk ls shows dirs with /" "/" rtk ls .
142
-
143
- # ── 2b. Tree ─────────────────────────────────────────
144
-
145
- section "Tree"
146
-
147
- if command -v tree >/dev/null 2>&1; then
148
- assert_ok "rtk tree ." rtk tree .
149
- assert_ok "rtk tree -L 2 ." rtk tree -L 2 .
150
- assert_ok "rtk tree -d -L 1 ." rtk tree -d -L 1 .
151
- assert_contains "rtk tree shows src/" "src" rtk tree -L 1 .
152
- else
153
- skip_test "rtk tree" "tree not installed"
154
- fi
155
-
156
- # ── 3. Read ──────────────────────────────────────────
157
-
158
- section "Read"
159
-
160
- assert_ok "rtk read Cargo.toml" rtk read Cargo.toml
161
- assert_ok "rtk read --level none Cargo.toml" rtk read --level none Cargo.toml
162
- assert_ok "rtk read --level aggressive Cargo.toml" rtk read --level aggressive Cargo.toml
163
- assert_ok "rtk read -n Cargo.toml" rtk read -n Cargo.toml
164
- assert_ok "rtk read --max-lines 5 Cargo.toml" rtk read --max-lines 5 Cargo.toml
165
-
166
- section "Read (stdin support)"
167
-
168
- assert_ok "rtk read stdin pipe" bash -c 'echo "fn main() {}" | rtk read -'
169
-
170
- # ── 4. Git ───────────────────────────────────────────
171
-
172
- section "Git (existing)"
173
-
174
- assert_ok "rtk git status" rtk git status
175
- assert_ok "rtk git status --short" rtk git status --short
176
- assert_ok "rtk git status -s" rtk git status -s
177
- assert_ok "rtk git status --porcelain" rtk git status --porcelain
178
- assert_ok "rtk git log" rtk git log
179
- assert_ok "rtk git log -5" rtk git log -- -5
180
- assert_ok "rtk git diff" rtk git diff
181
- assert_ok "rtk git diff --stat" rtk git diff --stat
182
-
183
- section "Git (new: branch, fetch, stash, worktree)"
184
-
185
- assert_ok "rtk git branch" rtk git branch
186
- assert_ok "rtk git fetch" rtk git fetch
187
- assert_ok "rtk git stash list" rtk git stash list
188
- assert_ok "rtk git worktree" rtk git worktree
189
-
190
- section "Git (passthrough: unsupported subcommands)"
191
-
192
- assert_ok "rtk git tag --list" rtk git tag --list
193
- assert_ok "rtk git remote -v" rtk git remote -v
194
- assert_ok "rtk git rev-parse HEAD" rtk git rev-parse HEAD
195
-
196
- # ── 5. GitHub CLI ────────────────────────────────────
197
-
198
- section "GitHub CLI"
199
-
200
- if command -v gh >/dev/null 2>&1 && gh auth status >/dev/null 2>&1; then
201
- assert_ok "rtk gh pr list" rtk gh pr list
202
- assert_ok "rtk gh run list" rtk gh run list
203
- assert_ok "rtk gh issue list" rtk gh issue list
204
- # pr create/merge/diff/comment/edit are write ops, test help only
205
- assert_help "rtk gh" rtk gh
206
- else
207
- skip_test "gh commands" "gh not authenticated"
208
- fi
209
-
210
- # ── 6. Cargo ─────────────────────────────────────────
211
-
212
- section "Cargo (new)"
213
-
214
- assert_ok "rtk cargo build" rtk cargo build
215
- assert_ok "rtk cargo clippy" rtk cargo clippy
216
- # cargo test exits non-zero due to pre-existing failures; check output ignoring exit code
217
- output_cargo_test=$(rtk cargo test 2>&1 || true)
218
- if echo "$output_cargo_test" | grep -q "FAILURES\|test result:\|passed"; then
219
- PASS=$((PASS + 1))
220
- printf " ${GREEN}PASS${NC} %s\n" "rtk cargo test"
221
- else
222
- FAIL=$((FAIL + 1))
223
- FAILURES+=("rtk cargo test")
224
- printf " ${RED}FAIL${NC} %s\n" "rtk cargo test"
225
- printf " got: %s\n" "$(echo "$output_cargo_test" | head -3)"
226
- fi
227
- assert_help "rtk cargo" rtk cargo
228
-
229
- # ── 7. Curl ──────────────────────────────────────────
230
-
231
- section "Curl (new)"
232
-
233
- assert_contains "rtk curl JSON detect" "string" rtk curl https://httpbin.org/json
234
- assert_ok "rtk curl plain text" rtk curl https://httpbin.org/robots.txt
235
- assert_help "rtk curl" rtk curl
236
-
237
- # ── 8. Npm / Npx ────────────────────────────────────
238
-
239
- section "Npm / Npx (new)"
240
-
241
- assert_help "rtk npm" rtk npm
242
- assert_help "rtk npx" rtk npx
243
-
244
- # ── 9. Pnpm ─────────────────────────────────────────
245
-
246
- section "Pnpm"
247
-
248
- assert_help "rtk pnpm" rtk pnpm
249
- assert_help "rtk pnpm build" rtk pnpm build
250
- assert_help "rtk pnpm typecheck" rtk pnpm typecheck
251
-
252
- if command -v pnpm >/dev/null 2>&1; then
253
- assert_ok "rtk pnpm help" rtk pnpm help
254
- fi
255
-
256
- # ── 10. Grep ─────────────────────────────────────────
257
-
258
- section "Grep"
259
-
260
- assert_ok "rtk grep pattern" rtk grep "pub fn" src/
261
- assert_contains "rtk grep finds results" "pub fn" rtk grep "pub fn" src/
262
- assert_ok "rtk grep with file type" rtk grep "pub fn" src/ -t rust
263
-
264
- section "Grep (extra args passthrough)"
265
-
266
- assert_ok "rtk grep -i case insensitive" rtk grep "fn" src/ -i
267
- assert_ok "rtk grep -A context lines" rtk grep "fn run" src/ -A 2
268
-
269
- # ── 11. Find ─────────────────────────────────────────
270
-
271
- section "Find"
272
-
273
- assert_ok "rtk find *.rs" rtk find "*.rs" src/
274
- assert_contains "rtk find shows files" ".rs" rtk find "*.rs" src/
275
-
276
- # ── 12. Json ─────────────────────────────────────────
277
-
278
- section "Json"
279
-
280
- # Create temp JSON file for testing
281
- TMPJSON=$(mktemp /tmp/rtk-test-XXXXX.json)
282
- echo '{"name":"test","count":42,"items":[1,2,3]}' > "$TMPJSON"
283
-
284
- assert_ok "rtk json file" rtk json "$TMPJSON"
285
- assert_contains "rtk json shows schema" "string" rtk json "$TMPJSON"
286
-
287
- rm -f "$TMPJSON"
288
-
289
- # ── 13. Deps ─────────────────────────────────────────
290
-
291
- section "Deps"
292
-
293
- assert_ok "rtk deps ." rtk deps .
294
- assert_contains "rtk deps shows Cargo" "Cargo" rtk deps .
295
-
296
- # ── 14. Env ──────────────────────────────────────────
297
-
298
- section "Env"
299
-
300
- assert_ok "rtk env" rtk env
301
- assert_ok "rtk env --filter PATH" rtk env --filter PATH
302
-
303
- # ── 16. Log ──────────────────────────────────────────
304
-
305
- section "Log"
306
-
307
- TMPLOG=$(mktemp /tmp/rtk-log-XXXXX.log)
308
- for i in $(seq 1 20); do
309
- echo "[2025-01-01 12:00:00] INFO: repeated message" >> "$TMPLOG"
310
- done
311
- echo "[2025-01-01 12:00:01] ERROR: something failed" >> "$TMPLOG"
312
-
313
- assert_ok "rtk log file" rtk log "$TMPLOG"
314
-
315
- rm -f "$TMPLOG"
316
-
317
- # ── 17. Summary ──────────────────────────────────────
318
-
319
- section "Summary"
320
-
321
- assert_ok "rtk summary echo hello" rtk summary echo hello
322
-
323
- # ── 18. Err ──────────────────────────────────────────
324
-
325
- section "Err"
326
-
327
- assert_ok "rtk err echo ok" rtk err echo ok
328
-
329
- # ── 19. Test runner ──────────────────────────────────
330
-
331
- section "Test runner"
332
-
333
- assert_ok "rtk test echo ok" rtk test echo ok
334
-
335
- # ── 20. Gain ─────────────────────────────────────────
336
-
337
- section "Gain"
338
-
339
- assert_ok "rtk gain" rtk gain
340
- assert_ok "rtk gain --history" rtk gain --history
341
-
342
- # ── 21. Config & Init ────────────────────────────────
343
-
344
- section "Config & Init"
345
-
346
- assert_ok "rtk config" rtk config
347
- assert_ok "rtk init --show" rtk init --show
348
-
349
- # ── 22. Wget ─────────────────────────────────────────
350
-
351
- section "Wget"
352
-
353
- if command -v wget >/dev/null 2>&1; then
354
- assert_ok "rtk wget stdout" rtk wget https://httpbin.org/robots.txt -O
355
- else
356
- skip_test "rtk wget" "wget not installed"
357
- fi
358
-
359
- # ── 23. Tsc / Lint / Prettier / Next / Playwright ───
360
-
361
- section "JS Tooling (help only, no project context)"
362
-
363
- assert_help "rtk tsc" rtk tsc
364
- assert_help "rtk lint" rtk lint
365
- assert_help "rtk prettier" rtk prettier
366
- assert_help "rtk next" rtk next
367
- assert_help "rtk playwright" rtk playwright
368
-
369
- # ── 24. Prisma ───────────────────────────────────────
370
-
371
- section "Prisma (help only)"
372
-
373
- assert_help "rtk prisma" rtk prisma
374
-
375
- # ── 25. Vitest ───────────────────────────────────────
376
-
377
- section "Vitest (help only)"
378
-
379
- assert_help "rtk vitest" rtk vitest
380
-
381
- # ── 26. Docker / Kubectl (help only) ────────────────
382
-
383
- section "Docker / Kubectl (help only)"
384
-
385
- assert_help "rtk docker" rtk docker
386
- assert_help "rtk kubectl" rtk kubectl
387
-
388
- # ── 27. Python (conditional) ────────────────────────
389
-
390
- section "Python (conditional)"
391
-
392
- if command -v pytest &>/dev/null; then
393
- assert_help "rtk pytest" rtk pytest --help
394
- else
395
- skip_test "rtk pytest" "pytest not installed"
396
- fi
397
-
398
- if command -v ruff &>/dev/null; then
399
- assert_help "rtk ruff" rtk ruff --help
400
- else
401
- skip_test "rtk ruff" "ruff not installed"
402
- fi
403
-
404
- if command -v pip &>/dev/null; then
405
- assert_help "rtk pip" rtk pip --help
406
- else
407
- skip_test "rtk pip" "pip not installed"
408
- fi
409
-
410
- # ── 28. Go (conditional) ────────────────────────────
411
-
412
- section "Go (conditional)"
413
-
414
- if command -v go &>/dev/null; then
415
- assert_help "rtk go" rtk go --help
416
- assert_help "rtk go test" rtk go test -h
417
- assert_help "rtk go build" rtk go build -h
418
- assert_help "rtk go vet" rtk go vet -h
419
- else
420
- skip_test "rtk go" "go not installed"
421
- fi
422
-
423
- if command -v golangci-lint &>/dev/null; then
424
- assert_help "rtk golangci-lint" rtk golangci-lint --help
425
- else
426
- skip_test "rtk golangci-lint" "golangci-lint not installed"
427
- fi
428
-
429
- # ── 29. Graphite (conditional) ─────────────────────
430
-
431
- section "Graphite (conditional)"
432
-
433
- if command -v gt &>/dev/null; then
434
- assert_help "rtk gt" rtk gt --help
435
- assert_ok "rtk gt log short" rtk gt log short
436
- else
437
- skip "gt not installed"
438
- fi
439
-
440
- # ── 30. Global flags ────────────────────────────────
441
-
442
- section "Global flags"
443
-
444
- assert_ok "rtk -u ls ." rtk -u ls .
445
- assert_ok "rtk --skip-env npm --help" rtk --skip-env npm --help
446
-
447
- # ── 31. CcEconomics ─────────────────────────────────
448
-
449
- section "CcEconomics"
450
-
451
- assert_ok "rtk cc-economics" rtk cc-economics
452
-
453
- # ── 32. Learn ───────────────────────────────────────
454
-
455
- section "Learn"
456
-
457
- assert_ok "rtk learn --help" rtk learn --help
458
- assert_ok "rtk learn (no sessions)" rtk learn --since 0 2>&1 || true
459
-
460
- # ── 32. Rewrite ───────────────────────────────────────
461
-
462
- section "Rewrite"
463
-
464
- assert_contains "rewrite git status" "rtk git status" rtk rewrite "git status"
465
- assert_contains "rewrite cargo test" "rtk cargo test" rtk rewrite "cargo test"
466
- assert_contains "rewrite compound &&" "rtk git status" rtk rewrite "git status && cargo test"
467
- assert_contains "rewrite pipe preserves" "| head" rtk rewrite "git log | head"
468
-
469
- section "Rewrite (#345: RTK_DISABLED skip)"
470
-
471
- assert_fails "rewrite RTK_DISABLED=1 skip" rtk rewrite "RTK_DISABLED=1 git status"
472
- assert_fails "rewrite env RTK_DISABLED skip" rtk rewrite "FOO=1 RTK_DISABLED=1 cargo test"
473
-
474
- section "Rewrite (#346: 2>&1 preserved)"
475
-
476
- assert_contains "rewrite 2>&1 preserved" "2>&1" rtk rewrite "cargo test 2>&1 | head"
477
-
478
- section "Rewrite (#196: gh --json skip)"
479
-
480
- assert_fails "rewrite gh --json skip" rtk rewrite "gh pr list --json number"
481
- assert_fails "rewrite gh --jq skip" rtk rewrite "gh api /repos --jq .name"
482
- assert_fails "rewrite gh --template skip" rtk rewrite "gh pr view 1 --template '{{.title}}'"
483
- assert_contains "rewrite gh normal works" "rtk gh pr list" rtk rewrite "gh pr list"
484
-
485
- # ── 33. Verify ────────────────────────────────────────
486
-
487
- section "Verify"
488
-
489
- assert_ok "rtk verify" rtk verify
490
-
491
- # ── 34. Proxy ─────────────────────────────────────────
492
-
493
- section "Proxy"
494
-
495
- assert_ok "rtk proxy echo hello" rtk proxy echo hello
496
- assert_contains "rtk proxy passthrough" "hello" rtk proxy echo hello
497
-
498
- # ── 35. Discover ──────────────────────────────────────
499
-
500
- section "Discover"
501
-
502
- assert_ok "rtk discover" rtk discover
503
-
504
- # ── 36. Diff ──────────────────────────────────────────
505
-
506
- section "Diff"
507
-
508
- assert_ok "rtk diff two files" rtk diff Cargo.toml LICENSE
509
-
510
- # ── 37. Wc ────────────────────────────────────────────
511
-
512
- section "Wc"
513
-
514
- assert_ok "rtk wc Cargo.toml" rtk wc Cargo.toml
515
-
516
- # ── 38. Smart ─────────────────────────────────────────
517
-
518
- section "Smart"
519
-
520
- assert_ok "rtk smart src/main.rs" rtk smart src/main.rs
521
-
522
- # ── 39. Json edge cases ──────────────────────────────
523
-
524
- section "Json (edge cases)"
525
-
526
- assert_fails "rtk json on TOML (#347)" rtk json Cargo.toml
527
-
528
- # ── 40. Docker (conditional) ─────────────────────────
529
-
530
- section "Docker (conditional)"
531
-
532
- if command -v docker >/dev/null 2>&1 && docker info >/dev/null 2>&1; then
533
- assert_ok "rtk docker ps" rtk docker ps
534
- assert_ok "rtk docker images" rtk docker images
535
- else
536
- skip_test "rtk docker" "docker not running"
537
- fi
538
-
539
- # ── 41. Hook check ───────────────────────────────────
540
-
541
- section "Hook check (#344)"
542
-
543
- assert_contains "rtk init --show hook version" "version" rtk init --show
544
-
545
- # ══════════════════════════════════════════════════════
546
- # Report
547
- # ══════════════════════════════════════════════════════
548
-
549
- printf "\n${BOLD}══════════════════════════════════════${NC}\n"
550
- printf "${BOLD}Results: ${GREEN}%d passed${NC}, ${RED}%d failed${NC}, ${YELLOW}%d skipped${NC}\n" "$PASS" "$FAIL" "$SKIP"
551
-
552
- if [[ ${#FAILURES[@]} -gt 0 ]]; then
553
- printf "\n${RED}Failures:${NC}\n"
554
- for f in "${FAILURES[@]}"; do
555
- printf " - %s\n" "$f"
556
- done
557
- fi
558
-
559
- printf "${BOLD}══════════════════════════════════════${NC}\n"
560
-
561
- exit "$FAIL"