From 5331b639b98e57771c3c303493c232376eb9999f Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Tue, 27 Oct 2015 12:30:34 -0400 Subject: Add UI support Also remove src/foo.sh. --- diff --git a/src/foo.sh b/src/foo.sh deleted file mode 100644 index 39ec45d..0000000 --- a/src/foo.sh +++ /dev/null @@ -1,4 +0,0 @@ -hello() -{ - echo hello world -} diff --git a/src/local.mk b/src/local.mk index 3f18420..4d0e58d 100644 --- a/src/local.mk +++ b/src/local.mk @@ -1,3 +1,5 @@ firman_SOURCES += \ src/main.sh \ - src/foo.sh + src/ui.sh + +include $(top_srcdir)/src/ui/local.mk diff --git a/src/main.sh b/src/main.sh index 62878e3..35156b3 100644 --- a/src/main.sh +++ b/src/main.sh @@ -1,4 +1,22 @@ +# Program entry point +# +# Copyright (C) 2015 Patrick "P. J." McDermott +# +# This program 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. +# +# This program 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 this program. If not, see . + main() { - hello + init_ui 'cli' + info 'Hello, world!' } diff --git a/src/ui.sh b/src/ui.sh new file mode 100644 index 0000000..f6e225c --- /dev/null +++ b/src/ui.sh @@ -0,0 +1,28 @@ +# User interface bindings +# +# Copyright (C) 2015 Patrick "P. J." McDermott +# +# This program 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. +# +# This program 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 this program. If not, see . + +ui_functions='info warn err dbg show_menu' + +init_ui() +{ + local ui="${1}" + local fn= + + for fn in ${ui_functions}; do + eval "${fn}() { ${ui}_${fn} \"\${@}\"; }" + done +} diff --git a/src/ui/cli.sh b/src/ui/cli.sh new file mode 100644 index 0000000..16321b8 --- /dev/null +++ b/src/ui/cli.sh @@ -0,0 +1,48 @@ +# CLI user interface +# +# Copyright (C) 2015 Patrick "P. J." McDermott +# +# This program 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. +# +# This program 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 this program. If not, see . + +cli_info() +{ + local fmt="${1}" + shift 1 + + printf "${fmt}\n" "${@}" +} + +cli_warn() +{ + local fmt="${1}" + shift 1 + + printf "Warning: ${fmt}\n" "${@}" +} + +cli_err() +{ + local fmt="${1}" + shift 1 + + printf "Error: ${fmt}\n" "${@}" +} + +cli_dbg() +{ + local fmt="${1}" + shift 1 + + printf "Debug: ${fmt}\n" "${@}" +} diff --git a/src/ui/local.mk b/src/ui/local.mk new file mode 100644 index 0000000..636d0a5 --- /dev/null +++ b/src/ui/local.mk @@ -0,0 +1,2 @@ +firman_SOURCES += \ + src/ui/cli.sh -- cgit v0.9.1