all repos — litestore @ 427bec0c251aa462be57f3043e57c84754a46e6a

A minimalist nosql document store.

cli.nim

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
import
  parseopt2,
  strutils
import
  types


const 
  version* = "1.0"
  usage* = "  LiteStore v"& version & " - Lightweight REST Document Store" & """
  (c) 2015 Fabio Cevasco

  Usage:
    LS [-p:<port> -a:<address>] [<file>] [--pack:<directory> | --unpack:<directory>] 

  Options:
    -a, --address     Specify address (default: 0.0.0.0).
    -h, --help        Display this message.
    -p, --port        Specify port number (default: 70700).
    --pack            Pack the specified directory (Store all its contents).
    --unpack          Unpack the previously-packed specified directory to the current directory.
    -v, --version     Display the program version.
"""

var 
  file = "data.ls"
  port = 9500
  address = "0.0.0.0"
  operation = opRun
  directory = ""
  readonly = false
  

for kind, key, val in getOpt():
  case kind:
    of cmdLongOption, cmdShortOption:
      case key:
        of "address", "a":
          address = val
        of "port", "p":
          port = val.parseInt
        of "pack":
          operation = opPack
          directory = val
        of "unpack":
          operation = opUnpack
          directory = val
        of "version", "v":
          echo version
          quit(0)
        of "help", "h":
          echo usage
          quit(0)
        of "readonly", "r":
          readonly = true
        else:
          discard
    of cmdArgument:
      file = key
    else:
      discard

var LS*: LiteStore

LS.port = port
LS.address = address
LS.operation = operation
LS.file = file
LS.directory = directory
LS.appversion = version
LS.readonly = readonly
LS.appname = "LiteStore"