diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/cmd/local.mk | 3 | ||||
-rw-r--r-- | lib/cmd/opkg.sh | 79 |
2 files changed, 81 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 +} |