karnel-termux 0.0.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 (258) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +454 -0
  3. package/install.sh +272 -0
  4. package/karnel/bin/karnel +77 -0
  5. package/karnel/cli/commands/brain.sh +1553 -0
  6. package/karnel/cli/commands/cleanup.sh +66 -0
  7. package/karnel/cli/commands/doctor.sh +1528 -0
  8. package/karnel/cli/commands/env.sh +233 -0
  9. package/karnel/cli/commands/help.sh +8 -0
  10. package/karnel/cli/commands/ia.sh +502 -0
  11. package/karnel/cli/commands/init.sh +1274 -0
  12. package/karnel/cli/commands/install.sh +718 -0
  13. package/karnel/cli/commands/list.sh +399 -0
  14. package/karnel/cli/commands/open.sh +106 -0
  15. package/karnel/cli/commands/pg.sh +719 -0
  16. package/karnel/cli/commands/reinstall.sh +663 -0
  17. package/karnel/cli/commands/show.sh +90 -0
  18. package/karnel/cli/commands/start.sh +54 -0
  19. package/karnel/cli/commands/status.sh +96 -0
  20. package/karnel/cli/commands/uninstall.sh +668 -0
  21. package/karnel/cli/commands/update.sh +723 -0
  22. package/karnel/cli/commands/upgrade.sh +40 -0
  23. package/karnel/cli/commands/version.sh +3 -0
  24. package/karnel/cli/commands/voice.sh +230 -0
  25. package/karnel/cli/karnel.sh +706 -0
  26. package/karnel/modules/ai.sh +135 -0
  27. package/karnel/modules/auto.sh +114 -0
  28. package/karnel/modules/db.sh +132 -0
  29. package/karnel/modules/deploy.sh +74 -0
  30. package/karnel/modules/dev.sh +148 -0
  31. package/karnel/modules/editor.sh +115 -0
  32. package/karnel/modules/lang.sh +124 -0
  33. package/karnel/modules/npm.sh +146 -0
  34. package/karnel/modules/shell.sh +338 -0
  35. package/karnel/modules/ui.sh +139 -0
  36. package/karnel/modules/voice.sh +118 -0
  37. package/karnel/tools/ai/all.sh +209 -0
  38. package/karnel/tools/ai/antigravity-cli/README.md +45 -0
  39. package/karnel/tools/ai/antigravity-cli/bin/agy +28 -0
  40. package/karnel/tools/ai/antigravity-cli/helper/agy_helper.c +39 -0
  41. package/karnel/tools/ai/antigravity-cli/install.sh +469 -0
  42. package/karnel/tools/ai/claude-code/README.md +45 -0
  43. package/karnel/tools/ai/claude-code/bin/claude +29 -0
  44. package/karnel/tools/ai/claude-code/helper/claude_helper.c +42 -0
  45. package/karnel/tools/ai/claude-code/install.sh +278 -0
  46. package/karnel/tools/ai/cline/install.sh +160 -0
  47. package/karnel/tools/ai/codegraph/README.md +43 -0
  48. package/karnel/tools/ai/codegraph/bin/codegraph +5 -0
  49. package/karnel/tools/ai/codegraph/install.sh +160 -0
  50. package/karnel/tools/ai/codex/README.md +44 -0
  51. package/karnel/tools/ai/codex/install.sh +104 -0
  52. package/karnel/tools/ai/command-code/README.md +62 -0
  53. package/karnel/tools/ai/command-code/install.sh +136 -0
  54. package/karnel/tools/ai/crush/README.md +17 -0
  55. package/karnel/tools/ai/crush/install.sh +89 -0
  56. package/karnel/tools/ai/ctx7/README.md +26 -0
  57. package/karnel/tools/ai/ctx7/install.sh +61 -0
  58. package/karnel/tools/ai/engram/README.md +44 -0
  59. package/karnel/tools/ai/engram/install.sh +127 -0
  60. package/karnel/tools/ai/freebuff/README.md +52 -0
  61. package/karnel/tools/ai/freebuff/bin/freebuff +28 -0
  62. package/karnel/tools/ai/freebuff/helper/freebuff_helper.c +47 -0
  63. package/karnel/tools/ai/freebuff/install.sh +303 -0
  64. package/karnel/tools/ai/gemini-cli/README.md +46 -0
  65. package/karnel/tools/ai/gemini-cli/install.sh +111 -0
  66. package/karnel/tools/ai/gentle-ai/README.md +42 -0
  67. package/karnel/tools/ai/gentle-ai/install.sh +253 -0
  68. package/karnel/tools/ai/gentle-ai/termux-patches.go +256 -0
  69. package/karnel/tools/ai/gga/README.md +49 -0
  70. package/karnel/tools/ai/gga/install.sh +134 -0
  71. package/karnel/tools/ai/hermes-agent/README.md +50 -0
  72. package/karnel/tools/ai/hermes-agent/install.sh +120 -0
  73. package/karnel/tools/ai/kilocode-cli/README.md +45 -0
  74. package/karnel/tools/ai/kilocode-cli/bin/kilocode +21 -0
  75. package/karnel/tools/ai/kilocode-cli/helper/kilocode_helper.c +47 -0
  76. package/karnel/tools/ai/kilocode-cli/install.sh +179 -0
  77. package/karnel/tools/ai/kimchi-code/README.md +53 -0
  78. package/karnel/tools/ai/kimchi-code/install.sh +221 -0
  79. package/karnel/tools/ai/kimi-code/README.md +45 -0
  80. package/karnel/tools/ai/kimi-code/install.sh +111 -0
  81. package/karnel/tools/ai/kiro/README.md +17 -0
  82. package/karnel/tools/ai/kiro/install.sh +134 -0
  83. package/karnel/tools/ai/mimocode/README.md +43 -0
  84. package/karnel/tools/ai/mimocode/bin/mimo +28 -0
  85. package/karnel/tools/ai/mimocode/helper/mimocode_helper.c +47 -0
  86. package/karnel/tools/ai/mimocode/install.sh +287 -0
  87. package/karnel/tools/ai/minimax-cli/README.md +45 -0
  88. package/karnel/tools/ai/minimax-cli/install.sh +111 -0
  89. package/karnel/tools/ai/mistral-vibe/README.md +46 -0
  90. package/karnel/tools/ai/mistral-vibe/install.sh +119 -0
  91. package/karnel/tools/ai/odysseus/README.md +35 -0
  92. package/karnel/tools/ai/odysseus/install.sh +198 -0
  93. package/karnel/tools/ai/ollama/README.md +44 -0
  94. package/karnel/tools/ai/ollama/install.sh +78 -0
  95. package/karnel/tools/ai/omni-route/README.md +111 -0
  96. package/karnel/tools/ai/omni-route/install.sh +165 -0
  97. package/karnel/tools/ai/openclaude/README.md +46 -0
  98. package/karnel/tools/ai/openclaude/install.sh +110 -0
  99. package/karnel/tools/ai/openclaw/README.md +47 -0
  100. package/karnel/tools/ai/openclaw/install.sh +112 -0
  101. package/karnel/tools/ai/opencode/README.md +51 -0
  102. package/karnel/tools/ai/opencode/bin/opencode +28 -0
  103. package/karnel/tools/ai/opencode/helper/opencode_helper.c +57 -0
  104. package/karnel/tools/ai/opencode/install.sh +290 -0
  105. package/karnel/tools/ai/openspec/README.md +34 -0
  106. package/karnel/tools/ai/openspec/install.sh +61 -0
  107. package/karnel/tools/ai/pi/README.md +46 -0
  108. package/karnel/tools/ai/pi/install.sh +104 -0
  109. package/karnel/tools/ai/qwen-code/README.md +45 -0
  110. package/karnel/tools/ai/qwen-code/install.sh +111 -0
  111. package/karnel/tools/auto/all.sh +57 -0
  112. package/karnel/tools/auto/n8n/README.md +47 -0
  113. package/karnel/tools/auto/n8n/install.sh +102 -0
  114. package/karnel/tools/db/all.sh +61 -0
  115. package/karnel/tools/db/mariadb/README.md +43 -0
  116. package/karnel/tools/db/mariadb/install.sh +65 -0
  117. package/karnel/tools/db/mongodb/README.md +42 -0
  118. package/karnel/tools/db/mongodb/install.sh +73 -0
  119. package/karnel/tools/db/postgresql/README.md +45 -0
  120. package/karnel/tools/db/postgresql/install.sh +65 -0
  121. package/karnel/tools/db/redis/README.md +46 -0
  122. package/karnel/tools/db/redis/install.sh +64 -0
  123. package/karnel/tools/db/sqlite/README.md +44 -0
  124. package/karnel/tools/db/sqlite/install.sh +65 -0
  125. package/karnel/tools/deploy/all.sh +43 -0
  126. package/karnel/tools/deploy/netlify/install.sh +41 -0
  127. package/karnel/tools/deploy/railway/install.sh +109 -0
  128. package/karnel/tools/deploy/vercel/install.sh +43 -0
  129. package/karnel/tools/dev/all.sh +77 -0
  130. package/karnel/tools/dev/bat/README.md +44 -0
  131. package/karnel/tools/dev/bat/install.sh +82 -0
  132. package/karnel/tools/dev/bc/README.md +44 -0
  133. package/karnel/tools/dev/bc/install.sh +82 -0
  134. package/karnel/tools/dev/cloudflared/README.md +43 -0
  135. package/karnel/tools/dev/cloudflared/install.sh +82 -0
  136. package/karnel/tools/dev/curl/README.md +43 -0
  137. package/karnel/tools/dev/curl/install.sh +82 -0
  138. package/karnel/tools/dev/fzf/README.md +44 -0
  139. package/karnel/tools/dev/fzf/install.sh +82 -0
  140. package/karnel/tools/dev/gh/README.md +43 -0
  141. package/karnel/tools/dev/gh/install.sh +82 -0
  142. package/karnel/tools/dev/html2text/README.md +44 -0
  143. package/karnel/tools/dev/html2text/install.sh +82 -0
  144. package/karnel/tools/dev/imagemagick/README.md +44 -0
  145. package/karnel/tools/dev/imagemagick/install.sh +82 -0
  146. package/karnel/tools/dev/jq/README.md +44 -0
  147. package/karnel/tools/dev/jq/install.sh +82 -0
  148. package/karnel/tools/dev/lsd/README.md +44 -0
  149. package/karnel/tools/dev/lsd/install.sh +82 -0
  150. package/karnel/tools/dev/make/README.md +44 -0
  151. package/karnel/tools/dev/make/install.sh +82 -0
  152. package/karnel/tools/dev/ncurses/README.md +42 -0
  153. package/karnel/tools/dev/ncurses/install.sh +82 -0
  154. package/karnel/tools/dev/openssh/README.md +43 -0
  155. package/karnel/tools/dev/openssh/install.sh +75 -0
  156. package/karnel/tools/dev/proot/README.md +43 -0
  157. package/karnel/tools/dev/proot/install.sh +82 -0
  158. package/karnel/tools/dev/shfmt/README.md +44 -0
  159. package/karnel/tools/dev/shfmt/install.sh +82 -0
  160. package/karnel/tools/dev/tmate/README.md +44 -0
  161. package/karnel/tools/dev/tmate/install.sh +82 -0
  162. package/karnel/tools/dev/tmux/README.md +43 -0
  163. package/karnel/tools/dev/tmux/install.sh +75 -0
  164. package/karnel/tools/dev/translate/README.md +44 -0
  165. package/karnel/tools/dev/translate/install.sh +82 -0
  166. package/karnel/tools/dev/tree/README.md +44 -0
  167. package/karnel/tools/dev/tree/install.sh +82 -0
  168. package/karnel/tools/dev/udocker/README.md +44 -0
  169. package/karnel/tools/dev/udocker/install.sh +82 -0
  170. package/karnel/tools/dev/wget/README.md +44 -0
  171. package/karnel/tools/dev/wget/install.sh +82 -0
  172. package/karnel/tools/editor/all.sh +59 -0
  173. package/karnel/tools/editor/code-server/README.md +42 -0
  174. package/karnel/tools/editor/code-server/install.sh +74 -0
  175. package/karnel/tools/editor/neovim/README.md +43 -0
  176. package/karnel/tools/editor/neovim/install.sh +64 -0
  177. package/karnel/tools/editor/nvchad/README.md +45 -0
  178. package/karnel/tools/editor/nvchad/install.sh +105 -0
  179. package/karnel/tools/lang/all.sh +63 -0
  180. package/karnel/tools/lang/clang/README.md +43 -0
  181. package/karnel/tools/lang/clang/install.sh +79 -0
  182. package/karnel/tools/lang/golang/README.md +43 -0
  183. package/karnel/tools/lang/golang/install.sh +79 -0
  184. package/karnel/tools/lang/nodejs/README.md +43 -0
  185. package/karnel/tools/lang/nodejs/install.sh +79 -0
  186. package/karnel/tools/lang/perl/README.md +43 -0
  187. package/karnel/tools/lang/perl/install.sh +79 -0
  188. package/karnel/tools/lang/php/README.md +43 -0
  189. package/karnel/tools/lang/php/install.sh +79 -0
  190. package/karnel/tools/lang/python/README.md +43 -0
  191. package/karnel/tools/lang/python/install.sh +79 -0
  192. package/karnel/tools/lang/rust/README.md +43 -0
  193. package/karnel/tools/lang/rust/install.sh +79 -0
  194. package/karnel/tools/npm/all.sh +90 -0
  195. package/karnel/tools/npm/live-server/README.md +43 -0
  196. package/karnel/tools/npm/live-server/install.sh +96 -0
  197. package/karnel/tools/npm/localtunnel/README.md +43 -0
  198. package/karnel/tools/npm/localtunnel/install.sh +112 -0
  199. package/karnel/tools/npm/markserv/README.md +43 -0
  200. package/karnel/tools/npm/markserv/install.sh +95 -0
  201. package/karnel/tools/npm/ncu/README.md +43 -0
  202. package/karnel/tools/npm/ncu/install.sh +95 -0
  203. package/karnel/tools/npm/nestjs/README.md +43 -0
  204. package/karnel/tools/npm/nestjs/install.sh +95 -0
  205. package/karnel/tools/npm/ngrok/README.md +44 -0
  206. package/karnel/tools/npm/ngrok/install.sh +95 -0
  207. package/karnel/tools/npm/prettier/README.md +43 -0
  208. package/karnel/tools/npm/prettier/install.sh +95 -0
  209. package/karnel/tools/npm/psqlformat/README.md +43 -0
  210. package/karnel/tools/npm/psqlformat/install.sh +95 -0
  211. package/karnel/tools/npm/turbopack/README.md +8 -0
  212. package/karnel/tools/npm/turbopack/install.sh +42 -0
  213. package/karnel/tools/npm/typescript/README.md +43 -0
  214. package/karnel/tools/npm/typescript/install.sh +95 -0
  215. package/karnel/tools/npm/vercel/README.md +43 -0
  216. package/karnel/tools/npm/vercel/install.sh +95 -0
  217. package/karnel/tools/shell/all.sh +67 -0
  218. package/karnel/tools/shell/better-npm/README.md +43 -0
  219. package/karnel/tools/shell/better-npm/install.sh +85 -0
  220. package/karnel/tools/shell/fzf-tab/README.md +44 -0
  221. package/karnel/tools/shell/fzf-tab/install.sh +85 -0
  222. package/karnel/tools/shell/history-substring/README.md +43 -0
  223. package/karnel/tools/shell/history-substring/install.sh +85 -0
  224. package/karnel/tools/shell/powerlevel10k/README.md +43 -0
  225. package/karnel/tools/shell/powerlevel10k/install.sh +85 -0
  226. package/karnel/tools/shell/you-should-use/README.md +43 -0
  227. package/karnel/tools/shell/you-should-use/install.sh +85 -0
  228. package/karnel/tools/shell/zsh-autopair/README.md +44 -0
  229. package/karnel/tools/shell/zsh-autopair/install.sh +85 -0
  230. package/karnel/tools/shell/zsh-autosuggestions/README.md +43 -0
  231. package/karnel/tools/shell/zsh-autosuggestions/install.sh +85 -0
  232. package/karnel/tools/shell/zsh-completions/README.md +43 -0
  233. package/karnel/tools/shell/zsh-completions/install.sh +85 -0
  234. package/karnel/tools/shell/zsh-defer/README.md +43 -0
  235. package/karnel/tools/shell/zsh-defer/install.sh +85 -0
  236. package/karnel/tools/shell/zsh-syntax-highlighting/README.md +43 -0
  237. package/karnel/tools/shell/zsh-syntax-highlighting/install.sh +72 -0
  238. package/karnel/tools/ui/all.sh +61 -0
  239. package/karnel/tools/ui/banner/README.md +42 -0
  240. package/karnel/tools/ui/banner/install.sh +160 -0
  241. package/karnel/tools/ui/cursor/README.md +42 -0
  242. package/karnel/tools/ui/cursor/install.sh +58 -0
  243. package/karnel/tools/ui/extra-keys/README.md +43 -0
  244. package/karnel/tools/ui/extra-keys/install.sh +62 -0
  245. package/karnel/tools/ui/font/README.md +43 -0
  246. package/karnel/tools/ui/font/install.sh +63 -0
  247. package/karnel/tools/voice/all.sh +27 -0
  248. package/karnel/tools/voice/install.sh +10 -0
  249. package/karnel/tools/voice/uninstall.sh +8 -0
  250. package/karnel/utils/banner.sh +492 -0
  251. package/karnel/utils/bootstrap.sh +25 -0
  252. package/karnel/utils/colors.sh +33 -0
  253. package/karnel/utils/dialogrc +30 -0
  254. package/karnel/utils/env.sh +53 -0
  255. package/karnel/utils/log.sh +567 -0
  256. package/karnel/utils/version.sh +205 -0
  257. package/package.json +42 -0
  258. package/scripts/npm-install.js +60 -0
@@ -0,0 +1,205 @@
1
+ #!/data/data/com.termux/files/usr/bin/bash
2
+
3
+ import "@/utils/log"
4
+ import "@/utils/colors"
5
+
6
+ _parse_version() {
7
+ local output="$1"
8
+ local ver
9
+ ver=$(echo "$output" | grep -oE '[0-9]+\.[0-9]+(\.[0-9]+)?' | head -1)
10
+ if [ -z "$ver" ]; then
11
+ echo ""
12
+ return 1
13
+ fi
14
+ local parts
15
+ IFS='.' read -ra parts <<< "$ver"
16
+ if [ ${#parts[@]} -eq 2 ]; then
17
+ echo "${parts[0]}.${parts[1]}.0"
18
+ else
19
+ echo "$ver"
20
+ fi
21
+ }
22
+
23
+ _get_installed_version() {
24
+ local binary="$1"
25
+ local flag="${2:---version}"
26
+ local display="${3:-$binary}"
27
+
28
+ if ! command -v "$binary" &>/dev/null; then
29
+ echo ""
30
+ return 1
31
+ fi
32
+
33
+ _spin_capture "Detecting $display version" _detect_installed_version "$binary" "$flag"
34
+ }
35
+
36
+ _detect_installed_version() {
37
+ local binary="$1"
38
+ local flag="$2"
39
+ local output
40
+ output=$("$binary" "$flag" 2>&1)
41
+ _parse_version "$output"
42
+ }
43
+
44
+ _spin_capture() {
45
+ local msg="$1"
46
+ shift
47
+ local frames=('⠋' '⠙' '⠹' '⠸' '⠼' '⠴' '⠦' '⠧' '⠇' '⠏')
48
+ local tmp
49
+ tmp=$(mktemp)
50
+ local spinner_fd
51
+ if [ -c /dev/tty ] 2>/dev/null; then
52
+ spinner_fd=/dev/tty
53
+ else
54
+ spinner_fd=/dev/null
55
+ fi
56
+
57
+ printf " ${CYAN}%s${D_CYAN} %s${NC}" "${frames[0]}" "$msg" >"$spinner_fd"
58
+
59
+ ("$@" >"$tmp" 2>&1) &
60
+ local pid=$!
61
+
62
+ local i=0
63
+ while kill -0 "$pid" 2>/dev/null; do
64
+ printf "\r ${CYAN}%s${D_CYAN} %s${NC}" "${frames[i]}" "$msg" >"$spinner_fd"
65
+ ((i = (i + 1) % ${#frames[@]}))
66
+ sleep 0.08
67
+ done
68
+
69
+ wait "$pid"
70
+ local rc=$?
71
+
72
+ printf "\r\033[K" >"$spinner_fd"
73
+ cat "$tmp"
74
+ rm -f "$tmp"
75
+ return $rc
76
+ }
77
+
78
+ _get_installed_npm_version() {
79
+ local pkg="$1"
80
+ local display="${2:-$pkg}"
81
+ _spin_capture "Detecting $display version" bash -c "npm ls -g '$pkg' --depth=0 2>/dev/null | grep '$pkg@' | sed 's/.*@//'"
82
+ }
83
+
84
+ _get_remote_npm_version() {
85
+ _spin_capture "Checking npm" npm view "$1" version 2>/dev/null
86
+ }
87
+
88
+ _get_remote_pip_version() {
89
+ local pkg="$1"
90
+ _spin_capture "Checking PyPI" bash -c "pip index versions '$pkg' 2>/dev/null | head -1 | awk '{print \$2}' | tr -d '()'"
91
+ }
92
+
93
+ _get_remote_github_version() {
94
+ local repo="$1"
95
+ local raw tag
96
+
97
+ raw=$(_spin_capture "Checking GitHub" curl -fsSL "https://api.github.com/repos/$repo/releases/latest" 2>/dev/null)
98
+ tag=$(echo "$raw" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
99
+
100
+ if [ -z "$tag" ]; then
101
+ raw=$(_spin_capture "Checking GitHub tags" curl -fsSL "https://api.github.com/repos/$repo/tags?per_page=5" 2>/dev/null)
102
+ tag=$(echo "$raw" | grep '"name":' | head -1 | sed -E 's/.*"([^"]+)".*/\1/')
103
+ fi
104
+
105
+ _parse_version "$tag"
106
+ }
107
+
108
+ _get_installed_pkg_version() {
109
+ local pkg="$1"
110
+ local display="${2:-$pkg}"
111
+ local raw
112
+ raw=$(_spin_capture "Detecting $display version" apt-cache policy "$pkg" 2>/dev/null)
113
+ echo "$raw" | grep 'Installed:' | awk '{print $2}' | grep -oE '[0-9]+\.[0-9]+(\.[0-9]+)?' | head -1
114
+ }
115
+
116
+ _get_installed_git_version() {
117
+ local dir="$1"
118
+ local display="${2:-$dir}"
119
+ if [ ! -d "$dir/.git" ]; then
120
+ echo ""
121
+ return 1
122
+ fi
123
+ local raw
124
+ raw=$(_spin_capture "Detecting $display version" bash -c "cd '$dir' 2>/dev/null && git fetch --tags --depth=1 2>/dev/null; cd '$dir' 2>/dev/null && git tag -l 2>/dev/null | sort -V | tail -1" 2>/dev/null)
125
+ _parse_version "$raw"
126
+ }
127
+
128
+ _get_remote_pkg_version() {
129
+ local raw
130
+ raw=$(_spin_capture "Checking apt" apt-cache policy "$1" 2>/dev/null)
131
+ echo "$raw" | grep 'Candidate:' | awk '{print $2}' | grep -oE '[0-9]+\.[0-9]+(\.[0-9]+)?' | head -1
132
+ }
133
+
134
+ _compare_versions() {
135
+ local v1="$1" v2="$2"
136
+
137
+ if [ -z "$v1" ] || [ -z "$v2" ]; then
138
+ return 2
139
+ fi
140
+
141
+ if [ "$v1" = "$v2" ]; then
142
+ return 0
143
+ fi
144
+
145
+ local strip_v1="${v1#v}"
146
+ local strip_v2="${v2#v}"
147
+
148
+ if [ "$strip_v1" = "$strip_v2" ]; then
149
+ return 0
150
+ fi
151
+
152
+ return 1
153
+ }
154
+
155
+ _check_update_needed() {
156
+ local display_name="$1"
157
+ local installed_ver="$2"
158
+ local remote_ver="$3"
159
+ local update_func="$4"
160
+
161
+ if [ -z "$installed_ver" ]; then
162
+ log_warn "$display_name: could not detect installed version"
163
+ echo
164
+ local confirm_var
165
+ read_confirm_default "Update $display_name anyway?" "y" confirm_var
166
+ if [ "$confirm_var" = "y" ]; then
167
+ $update_func
168
+ return $?
169
+ fi
170
+ log_info "Skipped $display_name"
171
+ return 0
172
+ fi
173
+
174
+ if [ -z "$remote_ver" ]; then
175
+ log_warn "$display_name: could not detect remote version"
176
+ echo
177
+ local confirm_var
178
+ read_confirm_default "Update $display_name anyway?" "y" confirm_var
179
+ if [ "$confirm_var" = "y" ]; then
180
+ $update_func
181
+ return $?
182
+ fi
183
+ log_info "Skipped $display_name"
184
+ return 0
185
+ fi
186
+
187
+ if _compare_versions "$installed_ver" "$remote_ver"; then
188
+ log_success "$display_name is already up to date (${D_GREEN}v${installed_ver}${D_NC})"
189
+ return 2
190
+ fi
191
+
192
+ echo
193
+ log_info "$display_name: ${D_GREEN}v${installed_ver}${D_NC} → ${D_CYAN}v${remote_ver}${D_NC}"
194
+
195
+ local confirm_var
196
+ read_confirm_default "Update $display_name to v$remote_ver?" "y" confirm_var
197
+
198
+ if [ "$confirm_var" = "y" ]; then
199
+ $update_func
200
+ return $?
201
+ else
202
+ log_info "Skipped $display_name"
203
+ return 0
204
+ fi
205
+ }
package/package.json ADDED
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "karnel-termux",
3
+ "version": "0.0.1",
4
+ "description": "Modular Dev Environment for Termux — install languages, databases, AI agents, editors, and more with one command",
5
+ "bin": {
6
+ "karnel": "karnel/bin/karnel"
7
+ },
8
+ "files": [
9
+ "karnel/",
10
+ "scripts/",
11
+ "install.sh",
12
+ "README.md",
13
+ "LICENSE"
14
+ ],
15
+ "scripts": {
16
+ "postinstall": "node scripts/npm-install.js"
17
+ },
18
+ "engines": {
19
+ "node": ">=14.0.0"
20
+ },
21
+ "repository": {
22
+ "type": "git",
23
+ "url": "git+https://github.com/israelmarques1024-dotcom/karnel-termux.git"
24
+ },
25
+ "keywords": [
26
+ "termux",
27
+ "dev-environment",
28
+ "cli",
29
+ "modular",
30
+ "android",
31
+ "developer-tools"
32
+ ],
33
+ "author": "israel marques",
34
+ "license": "MIT",
35
+ "bugs": {
36
+ "url": "https://github.com/israelmarques1024-dotcom/karnel-termux/issues"
37
+ },
38
+ "homepage": "https://kerneltermux.vercel.app",
39
+ "os": [
40
+ "android"
41
+ ]
42
+ }
@@ -0,0 +1,60 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * npm/postinstall helper for Karnel
5
+ *
6
+ * Runs when `npm install -g karnel` is executed.
7
+ * Detects Termux environment and triggers install.sh if appropriate.
8
+ */
9
+
10
+ const fs = require('fs');
11
+ const path = require('path');
12
+ const { execSync, execFileSync } = require('child_process');
13
+
14
+ const isTermux = () => {
15
+ return (
16
+ process.env.PREFIX &&
17
+ process.env.PREFIX.includes('/com.termux') &&
18
+ fs.existsSync('/data/data/com.termux')
19
+ );
20
+ };
21
+
22
+ const isAlreadyInstalled = () => {
23
+ try {
24
+ const symlink = process.env.PREFIX + '/bin/karnel';
25
+ const target = execFileSync('readlink', ['-f', symlink], { encoding: 'utf8' }).trim();
26
+ const ourTarget = path.resolve(__dirname, '..', 'karnel/bin/karnel');
27
+ return target === ourTarget;
28
+ } catch {
29
+ return false;
30
+ }
31
+ };
32
+
33
+ const main = () => {
34
+ if (!isTermux()) {
35
+ console.log('[karnel] Not a Termux environment — skipping install.');
36
+ console.log('[karnel] Run "bash install.sh" manually if needed.');
37
+ process.exit(0);
38
+ }
39
+
40
+ if (isAlreadyInstalled()) {
41
+ console.log('[karnel] Karnel is already installed and up-to-date.');
42
+ process.exit(0);
43
+ }
44
+
45
+ console.log('[karnel] Installing Karnel for Termux...');
46
+ try {
47
+ execSync('bash install.sh', {
48
+ cwd: path.resolve(__dirname, '..'),
49
+ stdio: 'inherit',
50
+ env: { ...process.env, KARNEL_NPM_INSTALL: '1' }
51
+ });
52
+ console.log('[karnel] Installation complete! Run "karnel" to get started.');
53
+ } catch (err) {
54
+ console.error('[karnel] Installation failed:', err.message);
55
+ console.log('[karnel] Try running "bash install.sh" manually.');
56
+ process.exit(1);
57
+ }
58
+ };
59
+
60
+ main();