summaryrefslogtreecommitdiff
path: root/scripts/linuxcnc_var.in
blob: 0a5b4588343f6b761a08e9010121be214a774c48 (plain)
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
73
74
75
76
#!/bin/bash
# maintainer: when adding items update three places:
#             usage(), show_all(), and show_item()
#
# note: report LINUXCNVERSION=$EMC2VERSION (as does linuxcnc.in)

function usage () {
  cat <<EOF

Retrieve Linuxcnc Variables
Usage:
      $(basename $0) [ varname | all ]

Varnames supported:
         LINUXCNCVERSION
         REALTIME
         SIMULATOR

Option 'all' returns varname=value for all supported varnames
EOF
exit 1
}

function show_all () {
  echo "LINUXCNCVERSION=@EMC2VERSION@
REALTIME=@REALTIME@
SIMULATOR=@SIMULATOR@"
}

function show_item () {
  case $1 in
    LINUXCNCVERSION) echo @EMC2VERSION@;;
    REALTIME) echo @REALTIME@;;
    SIMULATOR) echo @SIMULATOR@;;
    all) show_all;;
    *) echo UNKNOWN; exit 1;;
  esac
}

case $# in
   0) usage;;
   1) show_item $1;;
   *) usage;;
esac
exit 0

# Example shell usage to populate environment in a sourced script:
# for line in $(linuxcnc_var all) ; do
#   name=${line%%=*}
#   value=${line##*=}
#   echo "name=$name value=$value"
#   export "$name"="$value"
# done

# Example tcl usage:
# foreach line [exec linuxcnc_var all] {
#   set l [split $line =]
#   set name  [lindex $l 0]
#   set value [lindex $l 1]
#   set V($name) $value
# }
# parray V

# Example python usage:
# import subprocess
# s   = subprocess.Popen(['linuxcnc_var','all']
#                       ,stdout=subprocess.PIPE
#                       ,stderr=subprocess.PIPE
# p,e = s.communicate()
# v={}
# for line in p.split('\n'):
#     if line == '': continue
#     name = line.split('=')[0]
#     value = line.split('=')[1]
#     v[name] = value
# print(v)