From fed178ca636004932cd1d323d0788f27bc5d0761 Mon Sep 17 00:00:00 2001 From: KAAAsS Date: Mon, 25 Mar 2024 15:44:53 +0800 Subject: [PATCH] =?UTF-8?q?feat(pkg):=20=E6=94=AF=E6=8C=81=20apt=20?= =?UTF-8?q?=E5=8C=85=E7=AE=A1=E7=90=86=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- knotfiles/pkg.nu | 2 ++ knotfiles/pkgs/apt.nu | 48 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 knotfiles/pkgs/apt.nu diff --git a/knotfiles/pkg.nu b/knotfiles/pkg.nu index dbb1e5c..eab18f1 100644 --- a/knotfiles/pkg.nu +++ b/knotfiles/pkg.nu @@ -3,12 +3,14 @@ # Copyright (C) 2022 KAAAsS use pkgs/pacman.nu use pkgs/homebrew.nu +use pkgs/apt.nu export-env { # 所有可用的包管理器 $env.package_managers = [ (pacman pack), (homebrew pack), + (apt pack), (fallback_manager) ] # 计算默认包管理器 diff --git a/knotfiles/pkgs/apt.nu b/knotfiles/pkgs/apt.nu new file mode 100644 index 0000000..83f305e --- /dev/null +++ b/knotfiles/pkgs/apt.nu @@ -0,0 +1,48 @@ +# apt.nu -- apt 管理器的实际实现 +# +# Copyright (C) 2024 KAAAsS + +# 检查包管理器是否可用 +export def available? [] { + not (which apt | is-empty) and not (which dpkg | is-empty) +} + +# 检查包是否安装 +export def check_install? [ + pkg_name: string +] { + let ret = ( + do -i { dpkg -s $pkg_name } | complete + ) + $ret.exit_code == 0 +} + +# 安装包 +export def install [ + pkg_name: string +] { + let ret = ( + do -i { apt install $pkg_name -y } | complete + ) + $ret.exit_code == 0 +} + +# 卸载包 +export def uninstall [ + pkg_name: string +] { + let ret = ( + do -i { apt remove $pkg_name -y } | complete + ) + $ret.exit_code == 0 +} + +export def pack [] { + { + "name": "apt", + "available?": { available? }, + "check_install?": {|p| check_install? $p }, + "install": {|p| install $p }, + "uninstall": {|p| uninstall $p } + } +}