diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/foo.sh | 4 | ||||
-rw-r--r-- | src/local.mk | 4 | ||||
-rw-r--r-- | src/main.sh | 20 | ||||
-rw-r--r-- | src/ui.sh | 28 | ||||
-rw-r--r-- | src/ui/cli.sh | 48 | ||||
-rw-r--r-- | src/ui/local.mk | 2 |
6 files changed, 100 insertions, 6 deletions
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 <http://www.gnu.org/licenses/>. + 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 <http://www.gnu.org/licenses/>. + +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 <http://www.gnu.org/licenses/>. + +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 |