URI: 
       tREADME.md - arm-sdk - os build toolkit for various embedded devices
  HTML git clone https://git.parazyd.org/arm-sdk
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
   DIR README
   DIR LICENSE
       ---
       tREADME.md (4085B)
       ---
            1 ```
            2  _  _  _  _  _
            3 (_)(_)(_)(_)(_)
            4           _(_)_         _   _  _  _  _    _  _  _  _  _       _  _
            5         _(_) (_)       (_) (_)(_)(_)(_)_ (_)(_)(_)(_)(_)_  _ (_)(_)
            6       _(_)   (_)       (_) (_)        (_(_) _  _  _ (_)(_)(_)
            7     _(_)     (_)       (_) (_)        (_(_)(_)(_)(_)(_)(_)
            8  _ (_) _  _  (_)_  _  _(_)_(_) _  _  _(_(_)_  _  _  _  (_)
            9 (_)(_)(_)(_)(_)(_)(_)(_) (_(_)(_)(_)(_)   (_)(_)(_)(_) (_)
           10                            (_)
           11                            (_)
           12 ```
           13 
           14 **Z**sh **U**ltimate **P**rogrammer's **E**xtensions **R**efurbished
           15 
           16 # Introduction
           17 
           18 Zuper is a minimalist library of extensions for Zsh programming,
           19 because believe it or not Zsh is so slick and powerful that it can be
           20 used as a programming language.
           21 
           22 # Features
           23 
           24  - key/value store on files mapped to associative arrays
           25  - consul k/v integration using native get/set over ztcp
           26  - nifty messaging using colors and intl support (gettext)
           27  - procedural flow debugging functions and variable monitor
           28  - clean exit and destructors registration
           29  - improved temp file handling
           30  - more to come...
           31 
           32 # Requirements
           33 
           34 Zuper requires the following programs to be installed:
           35 
           36 ```
           37 zsh curl sed awk hexdump
           38 ```
           39 
           40 # Usage
           41 
           42 Documentation is still lacking, however to use Zuper in Zsh scripts
           43 one must first source its main library `zuper`, then declare global
           44 variables and arrays, then source `zuper.init` and at the end of the
           45 program call `endgame` for a clean exit. Example test program:
           46 
           47 ```zsh
           48 #!/usr/bin/env zsh
           49 
           50 # switch on debugging output
           51 DEBUG=1
           52 
           53 # switch logging into test.log
           54 LOG=test.log
           55 
           56 ##### INIT
           57 # load our zuper library
           58 source zuper
           59 # declare a custom global variable
           60 vars+=(myvar)
           61 # assign a default value to our global variable
           62 myvar=${myvar:-ok}
           63 # declare a global associative map
           64 maps+=(mymap)
           65 # conclude the init phase
           66 source zuper.init
           67 #####
           68 
           69 # register the zdump debug function to be executed on exit
           70 destruens+=(zdump)
           71 
           72 
           73 # declare a custom function to print it out
           74 testfun() {
           75     # register the function in the debug flow
           76     fn "testfun"
           77     # print out with nice green colors
           78     notice "Custom var: $myvar"
           79     # create a tempfile
           80     ztmp && mytmp=$ztmpfile
           81     # put the value into the tempfile
           82     print $myvar >> $mytmp
           83     # print out the path to the tempfile
           84     act "Temp file: $mytmp"
           85     # print out the contents of the tempfile
           86     act "Content: `cat $mytmp`"
           87     # the tempfile will be deleted in endgame()
           88     # but can also be delete earlier here, optionally
           89 }
           90 
           91 
           92 # call our custom function
           93 testfun
           94 
           95 # we use words and their md5
           96 mymap=(
           97     lorem f737a087bca81f69a6048ec744c73e41
           98     ipsum 02063b9bf9d6e15ad61226fa4584aae0
           99     dolor 5f20730ddc7a1fedbf265358f0ce4f26
          100 )
          101 
          102 # save the map into a file
          103 zkv.save mymap test.map
          104 
          105 # free the map
          106 mymap=()
          107 
          108 # re-declare the map
          109 typeset -A mymap
          110 # re-load saved contents
          111 zkv.load test.map
          112 # dump contents
          113 for i in ${(k)mymap}; do
          114     print "$i \t ${mymap[$i]}"
          115 done
          116 
          117 # end of the program (will call destructors)
          118 ```
          119 
          120 
          121 # Deployment
          122 
          123 Here we reference applications where zuper is used succesfully:
          124 
          125  - Devuan Simple Development Toolkit https://git.devuan.org/groups/sdk
          126  - Dowse IoT awareness OS http://dyne.org/software/dowse
          127  - Jaro Mail terminal email http://dyne.org/software/jaro-mail
          128 
          129 If you use it, let us know! http://dyne.org/contact
          130 
          131 # License
          132 
          133 Zuper is designed, developed and maintained by Denis Roio <jaromil@dyne.org>
          134 
          135 Zuper is Copyright (C) 2015 by the Dyne.org foundation
          136 
          137 This source code is free software; you can redistribute it and/or
          138 modify it under the terms of the GNU Public License as published by
          139 the Free Software Foundation; either version 3 of the License, or (at
          140 your option) any later version.
          141 
          142 This source code is distributed in the hope that it will be useful,
          143 but WITHOUT ANY WARRANTY; without even the implied warranty of
          144 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  Please refer to
          145 the GNU Public License for more details.
          146 
          147 You should have received a copy of the GNU Public License along with
          148 this source code; if not, write to: Free Software Foundation, Inc.,
          149 675 Mass Ave, Cambridge, MA 02139, USA.