Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dyne/zuper
Zsh Ultimate Programmer's Extensions Refurbished
https://github.com/dyne/zuper
shell zsh
Last synced: 2 days ago
JSON representation
Zsh Ultimate Programmer's Extensions Refurbished
- Host: GitHub
- URL: https://github.com/dyne/zuper
- Owner: dyne
- License: gpl-3.0
- Created: 2015-03-19T11:41:51.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2017-11-29T19:56:13.000Z (almost 7 years ago)
- Last Synced: 2024-05-01T09:47:03.020Z (7 months ago)
- Topics: shell, zsh
- Language: Shell
- Size: 52.7 KB
- Stars: 7
- Watchers: 5
- Forks: 10
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: COPYING.txt
Awesome Lists containing this project
README
```
_ _ _ _ _
(_)(_)(_)(_)(_)
_(_)_ _ _ _ _ _ _ _ _ _ _ _ _
_(_) (_) (_) (_)(_)(_)(_)_ (_)(_)(_)(_)(_)_ _ (_)(_)
_(_) (_) (_) (_) (_(_) _ _ _ (_)(_)(_)
_(_) (_) (_) (_) (_(_)(_)(_)(_)(_)(_)
_ (_) _ _ (_)_ _ _(_)_(_) _ _ _(_(_)_ _ _ _ (_)
(_)(_)(_)(_)(_)(_)(_)(_) (_(_)(_)(_)(_) (_)(_)(_)(_) (_)
(_)
(_)
```**Z**sh **U**ltimate **P**rogrammer's **E**xtensions **R**efurbished
# Introduction
Zuper is a minimalist library of extensions for Zsh programming,
because believe it or not Zsh is so slick and powerful that it can be
used as a programming language.# Features
- key/value store on files mapped to associative arrays
- consul k/v integration using native get/set over ztcp
- nifty messaging using colors and intl support (gettext)
- procedural flow debugging functions and variable monitor
- clean exit and destructors registration
- improved temp file handling
- more to come...# Requirements
Zuper requires the following programs to be installed:
```
zsh curl sed awk hexdump
```# Usage
Documentation is still lacking, however to use Zuper in Zsh scripts
one must first source its main library `zuper`, then declare global
variables and arrays, then source `zuper.init` and at the end of the
program call `endgame` for a clean exit. Example test program:```zsh
#!/usr/bin/env zsh# switch on debugging output
DEBUG=1# switch logging into test.log
LOG=test.log##### INIT
# load our zuper library
source zuper
# declare a custom global variable
vars+=(myvar)
# assign a default value to our global variable
myvar=${myvar:-ok}
# declare a global associative map
maps+=(mymap)
# conclude the init phase
source zuper.init
###### register the zdump debug function to be executed on exit
destruens+=(zdump)# declare a custom function to print it out
testfun() {
# register the function in the debug flow
fn "testfun"
# print out with nice green colors
notice "Custom var: $myvar"
# create a tempfile
ztmp && mytmp=$ztmpfile
# put the value into the tempfile
print $myvar >> $mytmp
# print out the path to the tempfile
act "Temp file: $mytmp"
# print out the contents of the tempfile
act "Content: `cat $mytmp`"
# the tempfile will be deleted in endgame()
# but can also be delete earlier here, optionally
}# call our custom function
testfun# we use words and their md5
mymap=(
lorem f737a087bca81f69a6048ec744c73e41
ipsum 02063b9bf9d6e15ad61226fa4584aae0
dolor 5f20730ddc7a1fedbf265358f0ce4f26
)# save the map into a file
zkv.save mymap test.map# free the map
mymap=()# re-declare the map
typeset -A mymap
# re-load saved contents
zkv.load test.map
# dump contents
for i in ${(k)mymap}; do
print "$i \t ${mymap[$i]}"
done# end of the program (will call destructors)
```# Deployment
Here we reference applications where zuper is used succesfully:
- Devuan Simple Development Toolkit https://git.devuan.org/groups/sdk
- Dowse IoT awareness OS http://dyne.org/software/dowse
- Jaro Mail terminal email http://dyne.org/software/jaro-mailIf you use it, let us know! http://dyne.org/contact
# License
Zuper is designed, developed and maintained by Denis Roio
Zuper is Copyright (C) 2015 by the Dyne.org foundation
This source code is free software; you can redistribute it and/or
modify it under the terms of the GNU Public License as published by
the Free Software Foundation; either version 3 of the License, or (at
your option) any later version.This source code 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. Please refer to
the GNU Public License for more details.You should have received a copy of the GNU Public License along with
this source code; if not, write to: Free Software Foundation, Inc.,
675 Mass Ave, Cambridge, MA 02139, USA.