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.
- package/LICENSE +21 -0
- package/README.md +454 -0
- package/install.sh +272 -0
- package/karnel/bin/karnel +77 -0
- package/karnel/cli/commands/brain.sh +1553 -0
- package/karnel/cli/commands/cleanup.sh +66 -0
- package/karnel/cli/commands/doctor.sh +1528 -0
- package/karnel/cli/commands/env.sh +233 -0
- package/karnel/cli/commands/help.sh +8 -0
- package/karnel/cli/commands/ia.sh +502 -0
- package/karnel/cli/commands/init.sh +1274 -0
- package/karnel/cli/commands/install.sh +718 -0
- package/karnel/cli/commands/list.sh +399 -0
- package/karnel/cli/commands/open.sh +106 -0
- package/karnel/cli/commands/pg.sh +719 -0
- package/karnel/cli/commands/reinstall.sh +663 -0
- package/karnel/cli/commands/show.sh +90 -0
- package/karnel/cli/commands/start.sh +54 -0
- package/karnel/cli/commands/status.sh +96 -0
- package/karnel/cli/commands/uninstall.sh +668 -0
- package/karnel/cli/commands/update.sh +723 -0
- package/karnel/cli/commands/upgrade.sh +40 -0
- package/karnel/cli/commands/version.sh +3 -0
- package/karnel/cli/commands/voice.sh +230 -0
- package/karnel/cli/karnel.sh +706 -0
- package/karnel/modules/ai.sh +135 -0
- package/karnel/modules/auto.sh +114 -0
- package/karnel/modules/db.sh +132 -0
- package/karnel/modules/deploy.sh +74 -0
- package/karnel/modules/dev.sh +148 -0
- package/karnel/modules/editor.sh +115 -0
- package/karnel/modules/lang.sh +124 -0
- package/karnel/modules/npm.sh +146 -0
- package/karnel/modules/shell.sh +338 -0
- package/karnel/modules/ui.sh +139 -0
- package/karnel/modules/voice.sh +118 -0
- package/karnel/tools/ai/all.sh +209 -0
- package/karnel/tools/ai/antigravity-cli/README.md +45 -0
- package/karnel/tools/ai/antigravity-cli/bin/agy +28 -0
- package/karnel/tools/ai/antigravity-cli/helper/agy_helper.c +39 -0
- package/karnel/tools/ai/antigravity-cli/install.sh +469 -0
- package/karnel/tools/ai/claude-code/README.md +45 -0
- package/karnel/tools/ai/claude-code/bin/claude +29 -0
- package/karnel/tools/ai/claude-code/helper/claude_helper.c +42 -0
- package/karnel/tools/ai/claude-code/install.sh +278 -0
- package/karnel/tools/ai/cline/install.sh +160 -0
- package/karnel/tools/ai/codegraph/README.md +43 -0
- package/karnel/tools/ai/codegraph/bin/codegraph +5 -0
- package/karnel/tools/ai/codegraph/install.sh +160 -0
- package/karnel/tools/ai/codex/README.md +44 -0
- package/karnel/tools/ai/codex/install.sh +104 -0
- package/karnel/tools/ai/command-code/README.md +62 -0
- package/karnel/tools/ai/command-code/install.sh +136 -0
- package/karnel/tools/ai/crush/README.md +17 -0
- package/karnel/tools/ai/crush/install.sh +89 -0
- package/karnel/tools/ai/ctx7/README.md +26 -0
- package/karnel/tools/ai/ctx7/install.sh +61 -0
- package/karnel/tools/ai/engram/README.md +44 -0
- package/karnel/tools/ai/engram/install.sh +127 -0
- package/karnel/tools/ai/freebuff/README.md +52 -0
- package/karnel/tools/ai/freebuff/bin/freebuff +28 -0
- package/karnel/tools/ai/freebuff/helper/freebuff_helper.c +47 -0
- package/karnel/tools/ai/freebuff/install.sh +303 -0
- package/karnel/tools/ai/gemini-cli/README.md +46 -0
- package/karnel/tools/ai/gemini-cli/install.sh +111 -0
- package/karnel/tools/ai/gentle-ai/README.md +42 -0
- package/karnel/tools/ai/gentle-ai/install.sh +253 -0
- package/karnel/tools/ai/gentle-ai/termux-patches.go +256 -0
- package/karnel/tools/ai/gga/README.md +49 -0
- package/karnel/tools/ai/gga/install.sh +134 -0
- package/karnel/tools/ai/hermes-agent/README.md +50 -0
- package/karnel/tools/ai/hermes-agent/install.sh +120 -0
- package/karnel/tools/ai/kilocode-cli/README.md +45 -0
- package/karnel/tools/ai/kilocode-cli/bin/kilocode +21 -0
- package/karnel/tools/ai/kilocode-cli/helper/kilocode_helper.c +47 -0
- package/karnel/tools/ai/kilocode-cli/install.sh +179 -0
- package/karnel/tools/ai/kimchi-code/README.md +53 -0
- package/karnel/tools/ai/kimchi-code/install.sh +221 -0
- package/karnel/tools/ai/kimi-code/README.md +45 -0
- package/karnel/tools/ai/kimi-code/install.sh +111 -0
- package/karnel/tools/ai/kiro/README.md +17 -0
- package/karnel/tools/ai/kiro/install.sh +134 -0
- package/karnel/tools/ai/mimocode/README.md +43 -0
- package/karnel/tools/ai/mimocode/bin/mimo +28 -0
- package/karnel/tools/ai/mimocode/helper/mimocode_helper.c +47 -0
- package/karnel/tools/ai/mimocode/install.sh +287 -0
- package/karnel/tools/ai/minimax-cli/README.md +45 -0
- package/karnel/tools/ai/minimax-cli/install.sh +111 -0
- package/karnel/tools/ai/mistral-vibe/README.md +46 -0
- package/karnel/tools/ai/mistral-vibe/install.sh +119 -0
- package/karnel/tools/ai/odysseus/README.md +35 -0
- package/karnel/tools/ai/odysseus/install.sh +198 -0
- package/karnel/tools/ai/ollama/README.md +44 -0
- package/karnel/tools/ai/ollama/install.sh +78 -0
- package/karnel/tools/ai/omni-route/README.md +111 -0
- package/karnel/tools/ai/omni-route/install.sh +165 -0
- package/karnel/tools/ai/openclaude/README.md +46 -0
- package/karnel/tools/ai/openclaude/install.sh +110 -0
- package/karnel/tools/ai/openclaw/README.md +47 -0
- package/karnel/tools/ai/openclaw/install.sh +112 -0
- package/karnel/tools/ai/opencode/README.md +51 -0
- package/karnel/tools/ai/opencode/bin/opencode +28 -0
- package/karnel/tools/ai/opencode/helper/opencode_helper.c +57 -0
- package/karnel/tools/ai/opencode/install.sh +290 -0
- package/karnel/tools/ai/openspec/README.md +34 -0
- package/karnel/tools/ai/openspec/install.sh +61 -0
- package/karnel/tools/ai/pi/README.md +46 -0
- package/karnel/tools/ai/pi/install.sh +104 -0
- package/karnel/tools/ai/qwen-code/README.md +45 -0
- package/karnel/tools/ai/qwen-code/install.sh +111 -0
- package/karnel/tools/auto/all.sh +57 -0
- package/karnel/tools/auto/n8n/README.md +47 -0
- package/karnel/tools/auto/n8n/install.sh +102 -0
- package/karnel/tools/db/all.sh +61 -0
- package/karnel/tools/db/mariadb/README.md +43 -0
- package/karnel/tools/db/mariadb/install.sh +65 -0
- package/karnel/tools/db/mongodb/README.md +42 -0
- package/karnel/tools/db/mongodb/install.sh +73 -0
- package/karnel/tools/db/postgresql/README.md +45 -0
- package/karnel/tools/db/postgresql/install.sh +65 -0
- package/karnel/tools/db/redis/README.md +46 -0
- package/karnel/tools/db/redis/install.sh +64 -0
- package/karnel/tools/db/sqlite/README.md +44 -0
- package/karnel/tools/db/sqlite/install.sh +65 -0
- package/karnel/tools/deploy/all.sh +43 -0
- package/karnel/tools/deploy/netlify/install.sh +41 -0
- package/karnel/tools/deploy/railway/install.sh +109 -0
- package/karnel/tools/deploy/vercel/install.sh +43 -0
- package/karnel/tools/dev/all.sh +77 -0
- package/karnel/tools/dev/bat/README.md +44 -0
- package/karnel/tools/dev/bat/install.sh +82 -0
- package/karnel/tools/dev/bc/README.md +44 -0
- package/karnel/tools/dev/bc/install.sh +82 -0
- package/karnel/tools/dev/cloudflared/README.md +43 -0
- package/karnel/tools/dev/cloudflared/install.sh +82 -0
- package/karnel/tools/dev/curl/README.md +43 -0
- package/karnel/tools/dev/curl/install.sh +82 -0
- package/karnel/tools/dev/fzf/README.md +44 -0
- package/karnel/tools/dev/fzf/install.sh +82 -0
- package/karnel/tools/dev/gh/README.md +43 -0
- package/karnel/tools/dev/gh/install.sh +82 -0
- package/karnel/tools/dev/html2text/README.md +44 -0
- package/karnel/tools/dev/html2text/install.sh +82 -0
- package/karnel/tools/dev/imagemagick/README.md +44 -0
- package/karnel/tools/dev/imagemagick/install.sh +82 -0
- package/karnel/tools/dev/jq/README.md +44 -0
- package/karnel/tools/dev/jq/install.sh +82 -0
- package/karnel/tools/dev/lsd/README.md +44 -0
- package/karnel/tools/dev/lsd/install.sh +82 -0
- package/karnel/tools/dev/make/README.md +44 -0
- package/karnel/tools/dev/make/install.sh +82 -0
- package/karnel/tools/dev/ncurses/README.md +42 -0
- package/karnel/tools/dev/ncurses/install.sh +82 -0
- package/karnel/tools/dev/openssh/README.md +43 -0
- package/karnel/tools/dev/openssh/install.sh +75 -0
- package/karnel/tools/dev/proot/README.md +43 -0
- package/karnel/tools/dev/proot/install.sh +82 -0
- package/karnel/tools/dev/shfmt/README.md +44 -0
- package/karnel/tools/dev/shfmt/install.sh +82 -0
- package/karnel/tools/dev/tmate/README.md +44 -0
- package/karnel/tools/dev/tmate/install.sh +82 -0
- package/karnel/tools/dev/tmux/README.md +43 -0
- package/karnel/tools/dev/tmux/install.sh +75 -0
- package/karnel/tools/dev/translate/README.md +44 -0
- package/karnel/tools/dev/translate/install.sh +82 -0
- package/karnel/tools/dev/tree/README.md +44 -0
- package/karnel/tools/dev/tree/install.sh +82 -0
- package/karnel/tools/dev/udocker/README.md +44 -0
- package/karnel/tools/dev/udocker/install.sh +82 -0
- package/karnel/tools/dev/wget/README.md +44 -0
- package/karnel/tools/dev/wget/install.sh +82 -0
- package/karnel/tools/editor/all.sh +59 -0
- package/karnel/tools/editor/code-server/README.md +42 -0
- package/karnel/tools/editor/code-server/install.sh +74 -0
- package/karnel/tools/editor/neovim/README.md +43 -0
- package/karnel/tools/editor/neovim/install.sh +64 -0
- package/karnel/tools/editor/nvchad/README.md +45 -0
- package/karnel/tools/editor/nvchad/install.sh +105 -0
- package/karnel/tools/lang/all.sh +63 -0
- package/karnel/tools/lang/clang/README.md +43 -0
- package/karnel/tools/lang/clang/install.sh +79 -0
- package/karnel/tools/lang/golang/README.md +43 -0
- package/karnel/tools/lang/golang/install.sh +79 -0
- package/karnel/tools/lang/nodejs/README.md +43 -0
- package/karnel/tools/lang/nodejs/install.sh +79 -0
- package/karnel/tools/lang/perl/README.md +43 -0
- package/karnel/tools/lang/perl/install.sh +79 -0
- package/karnel/tools/lang/php/README.md +43 -0
- package/karnel/tools/lang/php/install.sh +79 -0
- package/karnel/tools/lang/python/README.md +43 -0
- package/karnel/tools/lang/python/install.sh +79 -0
- package/karnel/tools/lang/rust/README.md +43 -0
- package/karnel/tools/lang/rust/install.sh +79 -0
- package/karnel/tools/npm/all.sh +90 -0
- package/karnel/tools/npm/live-server/README.md +43 -0
- package/karnel/tools/npm/live-server/install.sh +96 -0
- package/karnel/tools/npm/localtunnel/README.md +43 -0
- package/karnel/tools/npm/localtunnel/install.sh +112 -0
- package/karnel/tools/npm/markserv/README.md +43 -0
- package/karnel/tools/npm/markserv/install.sh +95 -0
- package/karnel/tools/npm/ncu/README.md +43 -0
- package/karnel/tools/npm/ncu/install.sh +95 -0
- package/karnel/tools/npm/nestjs/README.md +43 -0
- package/karnel/tools/npm/nestjs/install.sh +95 -0
- package/karnel/tools/npm/ngrok/README.md +44 -0
- package/karnel/tools/npm/ngrok/install.sh +95 -0
- package/karnel/tools/npm/prettier/README.md +43 -0
- package/karnel/tools/npm/prettier/install.sh +95 -0
- package/karnel/tools/npm/psqlformat/README.md +43 -0
- package/karnel/tools/npm/psqlformat/install.sh +95 -0
- package/karnel/tools/npm/turbopack/README.md +8 -0
- package/karnel/tools/npm/turbopack/install.sh +42 -0
- package/karnel/tools/npm/typescript/README.md +43 -0
- package/karnel/tools/npm/typescript/install.sh +95 -0
- package/karnel/tools/npm/vercel/README.md +43 -0
- package/karnel/tools/npm/vercel/install.sh +95 -0
- package/karnel/tools/shell/all.sh +67 -0
- package/karnel/tools/shell/better-npm/README.md +43 -0
- package/karnel/tools/shell/better-npm/install.sh +85 -0
- package/karnel/tools/shell/fzf-tab/README.md +44 -0
- package/karnel/tools/shell/fzf-tab/install.sh +85 -0
- package/karnel/tools/shell/history-substring/README.md +43 -0
- package/karnel/tools/shell/history-substring/install.sh +85 -0
- package/karnel/tools/shell/powerlevel10k/README.md +43 -0
- package/karnel/tools/shell/powerlevel10k/install.sh +85 -0
- package/karnel/tools/shell/you-should-use/README.md +43 -0
- package/karnel/tools/shell/you-should-use/install.sh +85 -0
- package/karnel/tools/shell/zsh-autopair/README.md +44 -0
- package/karnel/tools/shell/zsh-autopair/install.sh +85 -0
- package/karnel/tools/shell/zsh-autosuggestions/README.md +43 -0
- package/karnel/tools/shell/zsh-autosuggestions/install.sh +85 -0
- package/karnel/tools/shell/zsh-completions/README.md +43 -0
- package/karnel/tools/shell/zsh-completions/install.sh +85 -0
- package/karnel/tools/shell/zsh-defer/README.md +43 -0
- package/karnel/tools/shell/zsh-defer/install.sh +85 -0
- package/karnel/tools/shell/zsh-syntax-highlighting/README.md +43 -0
- package/karnel/tools/shell/zsh-syntax-highlighting/install.sh +72 -0
- package/karnel/tools/ui/all.sh +61 -0
- package/karnel/tools/ui/banner/README.md +42 -0
- package/karnel/tools/ui/banner/install.sh +160 -0
- package/karnel/tools/ui/cursor/README.md +42 -0
- package/karnel/tools/ui/cursor/install.sh +58 -0
- package/karnel/tools/ui/extra-keys/README.md +43 -0
- package/karnel/tools/ui/extra-keys/install.sh +62 -0
- package/karnel/tools/ui/font/README.md +43 -0
- package/karnel/tools/ui/font/install.sh +63 -0
- package/karnel/tools/voice/all.sh +27 -0
- package/karnel/tools/voice/install.sh +10 -0
- package/karnel/tools/voice/uninstall.sh +8 -0
- package/karnel/utils/banner.sh +492 -0
- package/karnel/utils/bootstrap.sh +25 -0
- package/karnel/utils/colors.sh +33 -0
- package/karnel/utils/dialogrc +30 -0
- package/karnel/utils/env.sh +53 -0
- package/karnel/utils/log.sh +567 -0
- package/karnel/utils/version.sh +205 -0
- package/package.json +42 -0
- 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();
|