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,104 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
import "@/utils/log"
|
|
4
|
+
|
|
5
|
+
LOG_FILE="$KARNEL_CACHE/install_ai.log"
|
|
6
|
+
|
|
7
|
+
_codex_dependencies() {
|
|
8
|
+
loading "Installing dependencies" _codex_dependencies_impl
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
_codex_dependencies_impl() {
|
|
12
|
+
declare -A DEPS=(
|
|
13
|
+
["nodejs-lts"]="node"
|
|
14
|
+
["git"]="git"
|
|
15
|
+
["ripgrep"]="rg"
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
local pkg_name bin_name
|
|
19
|
+
for pkg_name in "${!DEPS[@]}"; do
|
|
20
|
+
bin_name="${DEPS[$pkg_name]}"
|
|
21
|
+
if ! command -v "$bin_name" &>/dev/null; then
|
|
22
|
+
if ! pkg install "$pkg_name" -y &>>"$LOG_FILE"; then
|
|
23
|
+
log_error "Failed to install $pkg_name"
|
|
24
|
+
return 1
|
|
25
|
+
fi
|
|
26
|
+
fi
|
|
27
|
+
done
|
|
28
|
+
|
|
29
|
+
return 0
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
_install_codex_npm() {
|
|
33
|
+
loading "Installing Codex CLI" _install_codex_npm_impl
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
_install_codex_npm_impl() {
|
|
37
|
+
if ! npm i -g @mmmbuto/codex-cli-termux@latest &>>"$LOG_FILE"; then
|
|
38
|
+
log_error "Failed to install Codex CLI"
|
|
39
|
+
return 1
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
return 0
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
install_codex() {
|
|
46
|
+
if command -v codex &>/dev/null; then
|
|
47
|
+
log_info "Codex CLI is already installed"
|
|
48
|
+
return 2
|
|
49
|
+
fi
|
|
50
|
+
log_info "Installing Codex CLI..."
|
|
51
|
+
|
|
52
|
+
mkdir -p "$(dirname "$LOG_FILE")"
|
|
53
|
+
|
|
54
|
+
_codex_dependencies || return 1
|
|
55
|
+
_install_codex_npm || return 1
|
|
56
|
+
|
|
57
|
+
log_success "Codex CLI installed"
|
|
58
|
+
return 0
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
uninstall_codex() {
|
|
62
|
+
if ! command -v codex &>/dev/null; then
|
|
63
|
+
log_info "Codex CLI is not installed"
|
|
64
|
+
return 2
|
|
65
|
+
fi
|
|
66
|
+
log_info "Uninstalling Codex CLI..."
|
|
67
|
+
mkdir -p "$(dirname "$LOG_FILE")"
|
|
68
|
+
|
|
69
|
+
loading "Removing Codex CLI" _uninstall_codex_impl
|
|
70
|
+
|
|
71
|
+
log_success "Codex CLI uninstalled"
|
|
72
|
+
return 0
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
_uninstall_codex_impl() {
|
|
76
|
+
if ! npm uninstall -g @mmmbuto/codex-cli-termux &>>"$LOG_FILE"; then
|
|
77
|
+
log_error "Failed to uninstall Codex CLI"
|
|
78
|
+
return 1
|
|
79
|
+
fi
|
|
80
|
+
return 0
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
update_codex() {
|
|
84
|
+
log_info "Updating Codex CLI..."
|
|
85
|
+
mkdir -p "$(dirname "$LOG_FILE")"
|
|
86
|
+
|
|
87
|
+
loading "Updating Codex CLI" _update_codex_impl
|
|
88
|
+
|
|
89
|
+
log_success "Codex CLI updated"
|
|
90
|
+
return 0
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
_update_codex_impl() {
|
|
94
|
+
if ! npm update -g @mmmbuto/codex-cli-termux &>>"$LOG_FILE"; then
|
|
95
|
+
log_error "Failed to update Codex CLI"
|
|
96
|
+
return 1
|
|
97
|
+
fi
|
|
98
|
+
return 0
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
reinstall_codex() {
|
|
102
|
+
uninstall_codex
|
|
103
|
+
install_codex
|
|
104
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Command Code
|
|
2
|
+
|
|
3
|
+
The coding agent that learns your coding taste.
|
|
4
|
+
|
|
5
|
+
**Package:** command-code
|
|
6
|
+
**Author:** israel marques
|
|
7
|
+
**Repository:** https://github.com/israelmarques1024-dotcom/karnel-termux
|
|
8
|
+
**Official:** https://github.com/CommandCodeAI/command-code
|
|
9
|
+
**Type:** AI coding assistant (npm local package with wrapper)
|
|
10
|
+
**License:** MIT
|
|
11
|
+
|
|
12
|
+
## Description
|
|
13
|
+
|
|
14
|
+
The first frontier coding agent that both builds software and continuously learns your coding taste. Ships full-stack projects, features, fixes bugs, writes tests, and refactors, all while learning how you write code.
|
|
15
|
+
|
|
16
|
+
## Why Local Install?
|
|
17
|
+
|
|
18
|
+
On Termux, the global `npm install -g command-code` creates a binary named `cmd` which conflicts with the existing Termux `cmd` binary. Karnel Termux solves this by:
|
|
19
|
+
|
|
20
|
+
1. Installing `command-code` locally in `~/.local/share/karnel-data/command-code/`
|
|
21
|
+
2. Creating a wrapper script at `$PREFIX/bin/command-code`
|
|
22
|
+
3. Adding an alias `cmdc` via symlink
|
|
23
|
+
|
|
24
|
+
## Dependencies
|
|
25
|
+
|
|
26
|
+
- Node.js LTS (nodejs-lts)
|
|
27
|
+
- npm
|
|
28
|
+
- git
|
|
29
|
+
- ripgrep
|
|
30
|
+
|
|
31
|
+
## Install
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
karnel install ai --command-code
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Uninstall
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
karnel uninstall ai --command-code
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Update
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
karnel update ai --command-code
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Commands
|
|
50
|
+
|
|
51
|
+
| Command | Description |
|
|
52
|
+
|---------|-------------|
|
|
53
|
+
| `command-code` | Run Command Code |
|
|
54
|
+
| `cmdc` | Alias for command-code |
|
|
55
|
+
|
|
56
|
+
## Notes
|
|
57
|
+
|
|
58
|
+
- Installed as a local npm package (avoids `cmd` binary conflict)
|
|
59
|
+
- Wrapper script created at `$PREFIX/bin/command-code`
|
|
60
|
+
- Alias `cmdc` created via symlink
|
|
61
|
+
- Data directory: `~/.local/share/karnel-data/command-code/`
|
|
62
|
+
- Requires Node.js LTS (installed automatically if missing)
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
import "@/utils/log"
|
|
4
|
+
|
|
5
|
+
LOG_FILE="$KARNEL_CACHE/install_ai.log"
|
|
6
|
+
COMMAND_CODE_DATA_DIR="$HOME/.local/share/karnel-data/command-code"
|
|
7
|
+
|
|
8
|
+
_command_code_dependencies() {
|
|
9
|
+
loading "Installing dependencies" _command_code_dependencies_impl
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
_command_code_dependencies_impl() {
|
|
13
|
+
declare -A DEPS=(
|
|
14
|
+
["nodejs-lts"]="node"
|
|
15
|
+
["git"]="git"
|
|
16
|
+
["ripgrep"]="rg"
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
local pkg_name bin_name
|
|
20
|
+
for pkg_name in "${!DEPS[@]}"; do
|
|
21
|
+
bin_name="${DEPS[$pkg_name]}"
|
|
22
|
+
if ! command -v "$bin_name" &>/dev/null; then
|
|
23
|
+
if ! pkg install "$pkg_name" -y &>>"$LOG_FILE"; then
|
|
24
|
+
log_error "Failed to install $pkg_name"
|
|
25
|
+
return 1
|
|
26
|
+
fi
|
|
27
|
+
fi
|
|
28
|
+
done
|
|
29
|
+
|
|
30
|
+
return 0
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
_install_command_code_npm() {
|
|
34
|
+
loading "Installing command-code via npm" _install_command_code_npm_impl
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
_install_command_code_npm_impl() {
|
|
38
|
+
mkdir -p "$COMMAND_CODE_DATA_DIR"
|
|
39
|
+
|
|
40
|
+
if ! (cd "$COMMAND_CODE_DATA_DIR" && npm init -y &>>"$LOG_FILE"); then
|
|
41
|
+
log_error "Failed to initialize npm project"
|
|
42
|
+
return 1
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
if ! (cd "$COMMAND_CODE_DATA_DIR" && npm install command-code@latest &>>"$LOG_FILE"); then
|
|
46
|
+
log_error "Failed to install command-code package"
|
|
47
|
+
return 1
|
|
48
|
+
fi
|
|
49
|
+
|
|
50
|
+
return 0
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
_install_command_code_wrappers() {
|
|
54
|
+
loading "Creating command-code and cmdc wrappers" _install_command_code_wrappers_impl
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
_install_command_code_wrappers_impl() {
|
|
58
|
+
local wrapper_content='#!'"$PREFIX"'/bin/bash
|
|
59
|
+
|
|
60
|
+
exec node '"$COMMAND_CODE_DATA_DIR"'/node_modules/command-code/dist/index.mjs "$@"'
|
|
61
|
+
|
|
62
|
+
echo "$wrapper_content" >"$PREFIX/bin/command-code"
|
|
63
|
+
chmod +x "$PREFIX/bin/command-code"
|
|
64
|
+
|
|
65
|
+
ln -sf "$PREFIX/bin/command-code" "$PREFIX/bin/cmdc"
|
|
66
|
+
|
|
67
|
+
return 0
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
install_command_code() {
|
|
71
|
+
if command -v command-code &>/dev/null; then
|
|
72
|
+
log_info "Command Code is already installed"
|
|
73
|
+
return 2
|
|
74
|
+
fi
|
|
75
|
+
|
|
76
|
+
log_info "Installing Command Code..."
|
|
77
|
+
|
|
78
|
+
mkdir -p "$(dirname "$LOG_FILE")"
|
|
79
|
+
|
|
80
|
+
_command_code_dependencies || return 1
|
|
81
|
+
_install_command_code_npm || return 1
|
|
82
|
+
_install_command_code_wrappers || return 1
|
|
83
|
+
|
|
84
|
+
log_success "Command Code installed successfully"
|
|
85
|
+
return 0
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
uninstall_command_code() {
|
|
89
|
+
if ! command -v command-code &>/dev/null; then
|
|
90
|
+
log_info "Command Code is not installed"
|
|
91
|
+
return 2
|
|
92
|
+
fi
|
|
93
|
+
log_info "Uninstalling Command Code..."
|
|
94
|
+
mkdir -p "$(dirname "$LOG_FILE")"
|
|
95
|
+
|
|
96
|
+
loading "Removing Command Code files" _uninstall_command_code_impl
|
|
97
|
+
|
|
98
|
+
log_success "Command Code uninstalled"
|
|
99
|
+
return 0
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
_uninstall_command_code_impl() {
|
|
103
|
+
rm -f "$PREFIX/bin/command-code"
|
|
104
|
+
rm -f "$PREFIX/bin/cmdc"
|
|
105
|
+
rm -rf "$COMMAND_CODE_DATA_DIR"
|
|
106
|
+
return 0
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
update_command_code() {
|
|
110
|
+
log_info "Updating Command Code..."
|
|
111
|
+
mkdir -p "$(dirname "$LOG_FILE")"
|
|
112
|
+
|
|
113
|
+
if [ ! -d "$COMMAND_CODE_DATA_DIR" ]; then
|
|
114
|
+
log_warn "Command Code is not installed"
|
|
115
|
+
return 1
|
|
116
|
+
fi
|
|
117
|
+
|
|
118
|
+
loading "Updating command-code package" _update_command_code_impl
|
|
119
|
+
|
|
120
|
+
log_success "Command Code updated"
|
|
121
|
+
return 0
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
_update_command_code_impl() {
|
|
125
|
+
if (cd "$COMMAND_CODE_DATA_DIR" && npm update command-code &>>"$LOG_FILE"); then
|
|
126
|
+
return 0
|
|
127
|
+
else
|
|
128
|
+
log_error "Failed to update Command Code"
|
|
129
|
+
return 1
|
|
130
|
+
fi
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
reinstall_command_code() {
|
|
134
|
+
uninstall_command_code
|
|
135
|
+
install_command_code
|
|
136
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Crush
|
|
2
|
+
|
|
3
|
+
> Your new coding bestie, now available in your favourite terminal.
|
|
4
|
+
|
|
5
|
+
Crush is a terminal-based AI coding assistant from Charm. It supports multiple LLMs, session-based context, LSP integration, and MCPs.
|
|
6
|
+
|
|
7
|
+
**Install:** `karnel install ai --crush`
|
|
8
|
+
**Command:** `crush`
|
|
9
|
+
**Docs:** https://github.com/charmbracelet/crush
|
|
10
|
+
|
|
11
|
+
## Features
|
|
12
|
+
|
|
13
|
+
- Multi-Model support (OpenAI, Anthropic, custom APIs)
|
|
14
|
+
- Session-based workflow with context preservation
|
|
15
|
+
- LSP-enhanced code understanding
|
|
16
|
+
- Extensible via MCPs (http, stdio, sse)
|
|
17
|
+
- Works on macOS, Linux, Windows, Android, FreeBSD
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
import "@/utils/log"
|
|
4
|
+
import "@/utils/colors"
|
|
5
|
+
|
|
6
|
+
LOG_FILE="$KARNEL_CACHE/install_ai.log"
|
|
7
|
+
CRUSH_VERSION="0.82.0"
|
|
8
|
+
|
|
9
|
+
install_crush() {
|
|
10
|
+
if command -v crush &>/dev/null; then
|
|
11
|
+
log_info "Crush is already installed"
|
|
12
|
+
return 2
|
|
13
|
+
fi
|
|
14
|
+
|
|
15
|
+
log_info "Installing Crush..."
|
|
16
|
+
|
|
17
|
+
# Try npm first
|
|
18
|
+
if command -v npm &>/dev/null; then
|
|
19
|
+
log_info "Attempting npm install..."
|
|
20
|
+
if npm install -g @charmland/crush &>>"$LOG_FILE"; then
|
|
21
|
+
if command -v crush &>/dev/null; then
|
|
22
|
+
log_success "Crush installed via npm"
|
|
23
|
+
return 0
|
|
24
|
+
fi
|
|
25
|
+
fi
|
|
26
|
+
log_warn "npm install failed, trying GitHub release..."
|
|
27
|
+
fi
|
|
28
|
+
|
|
29
|
+
# Fallback: download from GitHub releases
|
|
30
|
+
local arch
|
|
31
|
+
arch=$(uname -m)
|
|
32
|
+
local tarball="crush_${CRUSH_VERSION}_Android_arm64.tar.gz"
|
|
33
|
+
local url="https://github.com/charmbracelet/crush/releases/download/v${CRUSH_VERSION}/${tarball}"
|
|
34
|
+
|
|
35
|
+
log_info "Downloading Crush v${CRUSH_VERSION} for Android arm64..."
|
|
36
|
+
|
|
37
|
+
local tmpdir
|
|
38
|
+
tmpdir=$(mktemp -d)
|
|
39
|
+
if curl -fsSL --connect-timeout 15 --max-time 120 "$url" -o "$tmpdir/$tarball" 2>>"$LOG_FILE"; then
|
|
40
|
+
if tar xzf "$tmpdir/$tarball" -C "$tmpdir" 2>>"$LOG_FILE"; then
|
|
41
|
+
local bin_path
|
|
42
|
+
bin_path=$(find "$tmpdir" -name "crush" -type f -executable 2>/dev/null | head -1)
|
|
43
|
+
if [[ -n "$bin_path" ]]; then
|
|
44
|
+
rm -f "$PREFIX/bin/crush"
|
|
45
|
+
cp "$bin_path" "$PREFIX/bin/crush"
|
|
46
|
+
chmod +x "$PREFIX/bin/crush"
|
|
47
|
+
rm -rf "$tmpdir"
|
|
48
|
+
if command -v crush &>/dev/null; then
|
|
49
|
+
log_success "Crush installed from GitHub release"
|
|
50
|
+
return 0
|
|
51
|
+
fi
|
|
52
|
+
fi
|
|
53
|
+
fi
|
|
54
|
+
fi
|
|
55
|
+
|
|
56
|
+
rm -rf "$tmpdir"
|
|
57
|
+
log_error "Failed to install Crush"
|
|
58
|
+
log_info "Check log: $LOG_FILE"
|
|
59
|
+
return 1
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
uninstall_crush() {
|
|
63
|
+
if ! command -v crush &>/dev/null; then
|
|
64
|
+
log_info "Crush is not installed"
|
|
65
|
+
return 0
|
|
66
|
+
fi
|
|
67
|
+
|
|
68
|
+
log_info "Uninstalling Crush..."
|
|
69
|
+
rm -f "$PREFIX/bin/crush"
|
|
70
|
+
npm uninstall -g @charmland/crush &>>"$LOG_FILE" 2>/dev/null
|
|
71
|
+
log_success "Crush uninstalled"
|
|
72
|
+
return 0
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
update_crush() {
|
|
76
|
+
if ! command -v crush &>/dev/null; then
|
|
77
|
+
log_info "Crush is not installed"
|
|
78
|
+
return 0
|
|
79
|
+
fi
|
|
80
|
+
|
|
81
|
+
log_info "Updating Crush..."
|
|
82
|
+
uninstall_crush
|
|
83
|
+
install_crush
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
reinstall_crush() {
|
|
87
|
+
uninstall_crush
|
|
88
|
+
install_crush
|
|
89
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# ctx7 (Context7)
|
|
2
|
+
|
|
3
|
+
Real-time documentation provider for AI coding assistants.
|
|
4
|
+
|
|
5
|
+
## What is it?
|
|
6
|
+
|
|
7
|
+
[Context7](https://github.com/context7) solves stale knowledge issues by providing AI tools with real-time, version-specific documentation and code examples on-demand.
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
karnel install ai --ctx7
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Usage
|
|
16
|
+
|
|
17
|
+
- As an MCP server for Claude Code, Cursor, etc.
|
|
18
|
+
- CLI: `ctx7` to fetch library documentation
|
|
19
|
+
|
|
20
|
+
## Requirements
|
|
21
|
+
|
|
22
|
+
- Node.js (install with `karnel install lang --nodejs`)
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
*Adapted for Karnel-Termux by israel marques*
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
# ctx7 (Context7) - Real-time documentation provider for AI coding assistants
|
|
4
|
+
# Provides version-specific library docs and code examples on-demand
|
|
5
|
+
# Solves stale knowledge issues in AI tools like Claude Code, Cursor
|
|
6
|
+
# Official: npm install -g ctx7
|
|
7
|
+
|
|
8
|
+
install_ctx7() {
|
|
9
|
+
if command -v ctx7 &>/dev/null; then
|
|
10
|
+
log_info "ctx7 is already installed"
|
|
11
|
+
return 2
|
|
12
|
+
fi
|
|
13
|
+
|
|
14
|
+
log_info "Installing ctx7 (Context7 documentation provider)..."
|
|
15
|
+
npm install -g ctx7 2>/dev/null
|
|
16
|
+
local rc=$?
|
|
17
|
+
|
|
18
|
+
local _t
|
|
19
|
+
_t=$(readlink -f "$PREFIX/bin/ctx7" 2>/dev/null)
|
|
20
|
+
[ -f "$_t" ] && sed -i '1s|^#!/usr/bin/env node|#!/data/data/com.termux/files/usr/bin/env node|' "$_t"
|
|
21
|
+
|
|
22
|
+
if [[ $rc -eq 0 ]] && command -v ctx7 &>/dev/null; then
|
|
23
|
+
log_success "ctx7 installed successfully"
|
|
24
|
+
log_info "Use as MCP server: ctx7 --help"
|
|
25
|
+
return 0
|
|
26
|
+
else
|
|
27
|
+
log_error "ctx7 installation failed"
|
|
28
|
+
return 1
|
|
29
|
+
fi
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
uninstall_ctx7() {
|
|
33
|
+
if ! command -v ctx7 &>/dev/null; then
|
|
34
|
+
log_info "ctx7 is not installed"
|
|
35
|
+
return 0
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
log_info "Uninstalling ctx7..."
|
|
39
|
+
npm uninstall -g ctx7 2>/dev/null
|
|
40
|
+
return $?
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
update_ctx7() {
|
|
44
|
+
if ! command -v ctx7 &>/dev/null; then
|
|
45
|
+
log_warn "ctx7 is not installed"
|
|
46
|
+
return 1
|
|
47
|
+
fi
|
|
48
|
+
|
|
49
|
+
log_info "Updating ctx7..."
|
|
50
|
+
npm update -g ctx7 2>/dev/null
|
|
51
|
+
local _t
|
|
52
|
+
_t=$(readlink -f "$PREFIX/bin/ctx7" 2>/dev/null)
|
|
53
|
+
[ -f "$_t" ] && sed -i '1s|^#!/usr/bin/env node|#!/data/data/com.termux/files/usr/bin/env node|' "$_t"
|
|
54
|
+
return $?
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
reinstall_ctx7() {
|
|
58
|
+
uninstall_ctx7 2>/dev/null
|
|
59
|
+
install_ctx7
|
|
60
|
+
return $?
|
|
61
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Engram
|
|
2
|
+
|
|
3
|
+
Persistent memory system for AI coding agents
|
|
4
|
+
|
|
5
|
+
**Package:** engram
|
|
6
|
+
**Author:** israel marques
|
|
7
|
+
**Repository:** https://github.com/israelmarques1024-dotcom/karnel-termux
|
|
8
|
+
**Official:** https://github.com/Gentleman-Programming/engram
|
|
9
|
+
**Type:** AI memory system (Go binary)
|
|
10
|
+
**License:** MIT
|
|
11
|
+
|
|
12
|
+
## Description
|
|
13
|
+
|
|
14
|
+
Engram is a persistent memory system designed for AI coding agents. It provides long-term memory storage and retrieval, allowing AI assistants to maintain context across sessions. Built with Go for performance and reliability.
|
|
15
|
+
|
|
16
|
+
## Dependencies
|
|
17
|
+
|
|
18
|
+
- golang, git, sqlite
|
|
19
|
+
|
|
20
|
+
## Install
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
karnel install ai --engram
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Uninstall
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
karnel uninstall ai --engram
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Update
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
karnel update ai --engram
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Notes
|
|
39
|
+
|
|
40
|
+
- Built from source using Go
|
|
41
|
+
- Source cloned to `$KARNEL_DATA/engram/`
|
|
42
|
+
- Binary installed to `$PREFIX/bin/engram`
|
|
43
|
+
- Requires Go toolchain (installed automatically)
|
|
44
|
+
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
import "@/utils/log"
|
|
4
|
+
|
|
5
|
+
LOG_FILE="$KARNEL_CACHE/install_ai.log"
|
|
6
|
+
|
|
7
|
+
_engram_dependencies() {
|
|
8
|
+
loading "Installing dependencies" _engram_dependencies_impl
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
_engram_dependencies_impl() {
|
|
12
|
+
declare -A DEPS=(
|
|
13
|
+
["golang"]="go"
|
|
14
|
+
["git"]="git"
|
|
15
|
+
["sqlite"]="sqlite"
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
local pkg_name bin_name
|
|
19
|
+
for pkg_name in "${!DEPS[@]}"; do
|
|
20
|
+
bin_name="${DEPS[$pkg_name]}"
|
|
21
|
+
if ! command -v "$bin_name" &>/dev/null; then
|
|
22
|
+
if ! pkg install "$pkg_name" -y &>>"$LOG_FILE"; then
|
|
23
|
+
log_error "Failed to install $pkg_name"
|
|
24
|
+
return 1
|
|
25
|
+
fi
|
|
26
|
+
fi
|
|
27
|
+
done
|
|
28
|
+
|
|
29
|
+
return 0
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
_clone_engram_repo() {
|
|
33
|
+
loading "Cloning engram repository" _clone_engram_repo_impl
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
_clone_engram_repo_impl() {
|
|
37
|
+
if ! git clone --quiet https://github.com/Gentleman-Programming/engram "$KARNEL_DATA/engram" &>>"$LOG_FILE"; then
|
|
38
|
+
log_error "Failed to clone engram repository"
|
|
39
|
+
return 1
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
return 0
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
_build_engram() {
|
|
46
|
+
loading "Building engram binary" _build_engram_impl
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
_build_engram_impl() {
|
|
50
|
+
if ! go build -C "$KARNEL_DATA/engram/cmd/engram" -o $PREFIX/bin/engram &>>"$LOG_FILE"; then
|
|
51
|
+
log_error "Failed to build engram"
|
|
52
|
+
return 1
|
|
53
|
+
fi
|
|
54
|
+
|
|
55
|
+
return 0
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
install_engram() {
|
|
59
|
+
if command -v engram &>/dev/null; then
|
|
60
|
+
log_info "Engram is already installed"
|
|
61
|
+
return 2
|
|
62
|
+
fi
|
|
63
|
+
log_info "Installing Engram..."
|
|
64
|
+
|
|
65
|
+
export GOPATH="$HOME/.local/go"
|
|
66
|
+
export GOCACHE="$HOME/.cache/go"
|
|
67
|
+
export GOMODCACHE="$GOPATH/pkg/mod"
|
|
68
|
+
|
|
69
|
+
mkdir -p "$(dirname "$LOG_FILE")"
|
|
70
|
+
|
|
71
|
+
_engram_dependencies || return 1
|
|
72
|
+
_clone_engram_repo || return 1
|
|
73
|
+
_build_engram || return 1
|
|
74
|
+
|
|
75
|
+
log_success "Engram installed"
|
|
76
|
+
return 0
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
uninstall_engram() {
|
|
80
|
+
if ! command -v engram &>/dev/null; then
|
|
81
|
+
log_info "Engram is not installed"
|
|
82
|
+
return 2
|
|
83
|
+
fi
|
|
84
|
+
log_info "Uninstalling Engram..."
|
|
85
|
+
mkdir -p "$(dirname "$LOG_FILE")"
|
|
86
|
+
|
|
87
|
+
loading "Removing Engram" _uninstall_engram_impl
|
|
88
|
+
|
|
89
|
+
log_success "Engram uninstalled"
|
|
90
|
+
return 0
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
_uninstall_engram_impl() {
|
|
94
|
+
if rm -rf "$KARNEL_DATA/engram" && rm "$PREFIX/bin/engram" &>>"$LOG_FILE"; then
|
|
95
|
+
return 0
|
|
96
|
+
else
|
|
97
|
+
log_error "Failed to uninstall Engram"
|
|
98
|
+
return 1
|
|
99
|
+
fi
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
update_engram() {
|
|
103
|
+
log_info "Updating Engram..."
|
|
104
|
+
mkdir -p "$(dirname "$LOG_FILE")"
|
|
105
|
+
|
|
106
|
+
loading "Updating Engram" _update_engram_impl
|
|
107
|
+
|
|
108
|
+
log_success "Engram updated"
|
|
109
|
+
return 0
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
_update_engram_impl() {
|
|
113
|
+
export GOPATH="$HOME/.local/go"
|
|
114
|
+
export GOCACHE="$HOME/.cache/go"
|
|
115
|
+
export GOMODCACHE="$GOPATH/pkg/mod"
|
|
116
|
+
|
|
117
|
+
if ! git -C "$KARNEL_DATA/engram" pull &>>"$LOG_FILE" && go build -C "$KARNEL_DATA/engram/cmd/engram" -o $PREFIX/bin/engram &>>"$LOG_FILE"; then
|
|
118
|
+
log_error "Failed to update Engram"
|
|
119
|
+
return 1
|
|
120
|
+
fi
|
|
121
|
+
return 0
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
reinstall_engram() {
|
|
125
|
+
uninstall_engram
|
|
126
|
+
install_engram
|
|
127
|
+
}
|