diff options
author | P. J. McDermott <pj@pehjota.net> | 2014-08-27 22:25:15 (EDT) |
---|---|---|
committer | P. J. McDermott <pj@pehjota.net> | 2014-08-27 22:25:15 (EDT) |
commit | 26aa1c83c76e72d9ed472e7dd4fbe2ad041a774c (patch) | |
tree | c110b34d2a5859b634f12d4ddbcd14a42fceac9a | |
parent | fd9be223b3a6959d7936cb2c8ed7855ec03d53c1 (diff) |
opkg: New command
-rw-r--r-- | lib/cmd/local.mk | 3 | ||||
-rw-r--r-- | lib/cmd/opkg.sh | 79 | ||||
-rw-r--r-- | locale/en_US.sh | 5 |
3 files changed, 86 insertions, 1 deletions
diff --git a/lib/cmd/local.mk b/lib/cmd/local.mk index aba8908..1c77e63 100644 --- a/lib/cmd/local.mk +++ b/lib/cmd/local.mk @@ -2,4 +2,5 @@ pkgdatacmd_sources = \ lib/cmd/help.sh \ lib/cmd/version.sh \ lib/cmd/install.sh \ - lib/cmd/shell.sh + lib/cmd/shell.sh \ + lib/cmd/opkg.sh diff --git a/lib/cmd/opkg.sh b/lib/cmd/opkg.sh new file mode 100644 index 0000000..e415387 --- /dev/null +++ b/lib/cmd/opkg.sh @@ -0,0 +1,79 @@ +# "opkg" command +# +# Copyright (C) 2014 Patrick "P. J." McDermott +# +# This file is part of the ProteanOS Development Kit. +# +# The ProteanOS Development Kit is free software: you can redistribute +# it and/or modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# The ProteanOS Development Kit is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with the ProteanOS Development Kit. If not, see +# <http://www.gnu.org/licenses/>. + +use profile +use chroot +use rand + +cmd_opkg_main() +{ + local root= + local first_arg= + local install_cmd= + local opks= + local arg= + local new_fname= + + if [ ${#} -lt 1 ]; then + print_cmd_usage 'opkg' >&2 + exit 1 + fi + + root="${1}" + shift 1 + + first_arg=true + install_cmd=false + opks='' + for arg in "${@}"; do + if ${first_arg}; then + set -- + first_arg=false + fi + if ${install_cmd}; then + case "${arg}" in + *.opk|*.ipk|*.deb) + rand + new_fname="/tmp/prokit.${rand_x}.opk" + opks="${opks} ${new_fname}" + cp "${arg}" "${root}${new_fname}" + set -- "${@}" "${new_fname}" + ;; + *) + set -- "${@}" "${arg}" + ;; + esac + else + set -- "${@}" "${arg}" + if [ "x${arg}" = 'xinstall' ]; then + install_cmd=true + fi + fi + done + + . "${root}/etc/os-release" + profile_set "${ID}" + + chroot_exec "${root}" opkg "${@}" + + for new_fname in ${opks}; do + rm -f "${root}${new_fname}" + done +} diff --git a/locale/en_US.sh b/locale/en_US.sh index ba3d5b7..dbf518d 100644 --- a/locale/en_US.sh +++ b/locale/en_US.sh @@ -86,5 +86,10 @@ msg_prokit_cmd_shell_summary='run a shell in an isolated environment' msg_prokit_cmd_shell_usage='<root-dir>' msg_prokit_cmd_shell_exiting='Exiting...' +# lib/cmd/opkg.sh +msg_prokit_cmd_opkg_summary='manage packages with opkg' +msg_prokit_cmd_opkg_usage='<root-dir> [<option> ...] <sub-command> '\ +'[<argument> ...]' + # lib/profile.sh msg_prokit_profile_not_found='Profile "%s" not found' |