corl 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (122) hide show
  1. data/Gemfile +5 -10
  2. data/Gemfile.lock +13 -11
  3. data/README.rdoc +1 -1
  4. data/Rakefile +3 -3
  5. data/VERSION +1 -1
  6. data/bin/corl +2 -54
  7. data/bootstrap/bootstrap.sh +91 -0
  8. data/bootstrap/lib/shell/LICENSE.txt +674 -0
  9. data/bootstrap/lib/shell/command.sh +214 -0
  10. data/bootstrap/lib/shell/filesystem.sh +139 -0
  11. data/bootstrap/lib/shell/load.sh +73 -0
  12. data/bootstrap/lib/shell/os.sh +67 -0
  13. data/bootstrap/lib/shell/script.sh +160 -0
  14. data/bootstrap/lib/shell/starter.sh +64 -0
  15. data/bootstrap/lib/shell/validators.sh +50 -0
  16. data/bootstrap/os/ubuntu/00_base.sh +5 -0
  17. data/bootstrap/os/ubuntu/01_git.sh +5 -0
  18. data/bootstrap/os/ubuntu/05_ruby.sh +7 -0
  19. data/bootstrap/os/ubuntu/06_puppet.sh +38 -0
  20. data/bootstrap/os/ubuntu/10_corl.sh +9 -0
  21. data/corl.gemspec +61 -124
  22. data/lib/{corl → CORL}/action/bootstrap.rb +13 -7
  23. data/lib/CORL/action/exec.rb +39 -0
  24. data/lib/CORL/action/image.rb +31 -0
  25. data/lib/{corl → CORL}/action/images.rb +1 -1
  26. data/lib/CORL/action/lookup.rb +34 -0
  27. data/lib/{corl → CORL}/action/machines.rb +1 -1
  28. data/lib/CORL/action/provision.rb +31 -0
  29. data/lib/{corl → CORL}/action/seed.rb +3 -3
  30. data/lib/{corl → CORL}/action/spawn.rb +2 -2
  31. data/lib/CORL/action/start.rb +31 -0
  32. data/lib/CORL/action/stop.rb +31 -0
  33. data/lib/{corl → CORL}/configuration/file.rb +1 -1
  34. data/lib/{corl → CORL}/event/puppet.rb +1 -1
  35. data/lib/{corl → CORL}/extension/puppetloader.rb +1 -1
  36. data/lib/{corl → CORL}/machine/fog.rb +3 -3
  37. data/lib/{corl → CORL}/machine/physical.rb +2 -2
  38. data/lib/{corl → CORL}/network/default.rb +1 -1
  39. data/lib/{corl → CORL}/node/aws.rb +0 -4
  40. data/lib/{corl → CORL}/node/google.rb +0 -4
  41. data/lib/{corl → CORL}/node/local.rb +1 -1
  42. data/lib/{corl → CORL}/node/rackspace.rb +0 -4
  43. data/lib/{corl → CORL}/provisioner/puppetnode.rb +1 -14
  44. data/lib/{corl → CORL}/provisioner/puppetnode/resource.rb +0 -0
  45. data/lib/{corl → CORL}/provisioner/puppetnode/resource_group.rb +0 -0
  46. data/lib/{corl → CORL}/template/environment.rb +1 -1
  47. data/lib/core/facade.rb +49 -0
  48. data/lib/{corl_core → core}/mixin/action/keypair.rb +10 -10
  49. data/lib/{corl_core → core}/mixin/lookup.rb +0 -0
  50. data/lib/{corl_core → core}/mod/hiera_backend.rb +0 -0
  51. data/lib/{corl_core/mixin/action/node.rb → core/plugin/action.rb} +66 -33
  52. data/lib/{corl_core → core}/plugin/configuration.rb +2 -2
  53. data/lib/{corl/node → core/plugin}/fog.rb +5 -1
  54. data/lib/{corl_core → core}/plugin/machine.rb +2 -2
  55. data/lib/{corl_core → core}/plugin/network.rb +4 -4
  56. data/lib/{corl_core → core}/plugin/node.rb +11 -9
  57. data/lib/{corl_core → core}/plugin/provisioner.rb +2 -2
  58. data/lib/{corl_core → core}/util/ssh.rb +1 -1
  59. data/lib/corl.rb +53 -112
  60. data/lib/puppet/parser/functions/ensure.rb +0 -4
  61. data/locales/en.yml +55 -148
  62. metadata +84 -222
  63. data/lib/corl/action/add.rb +0 -69
  64. data/lib/corl/action/clone.rb +0 -40
  65. data/lib/corl/action/create.rb +0 -55
  66. data/lib/corl/action/exec.rb +0 -41
  67. data/lib/corl/action/extract.rb +0 -49
  68. data/lib/corl/action/image.rb +0 -30
  69. data/lib/corl/action/lookup.rb +0 -35
  70. data/lib/corl/action/provision.rb +0 -37
  71. data/lib/corl/action/remove.rb +0 -51
  72. data/lib/corl/action/save.rb +0 -53
  73. data/lib/corl/action/start.rb +0 -37
  74. data/lib/corl/action/stop.rb +0 -30
  75. data/lib/corl/action/update.rb +0 -37
  76. data/lib/corl/command/shell.rb +0 -164
  77. data/lib/corl/event/regex.rb +0 -52
  78. data/lib/corl/project/git.rb +0 -465
  79. data/lib/corl/project/github.rb +0 -108
  80. data/lib/corl/template/json.rb +0 -16
  81. data/lib/corl/template/wrapper.rb +0 -16
  82. data/lib/corl/template/yaml.rb +0 -16
  83. data/lib/corl/translator/json.rb +0 -27
  84. data/lib/corl/translator/yaml.rb +0 -27
  85. data/lib/corl_core/codes.rb +0 -107
  86. data/lib/corl_core/config.rb +0 -337
  87. data/lib/corl_core/config/collection.rb +0 -57
  88. data/lib/corl_core/config/options.rb +0 -70
  89. data/lib/corl_core/core.rb +0 -59
  90. data/lib/corl_core/corl.rb +0 -254
  91. data/lib/corl_core/errors.rb +0 -84
  92. data/lib/corl_core/facade.rb +0 -126
  93. data/lib/corl_core/gems.rb +0 -72
  94. data/lib/corl_core/manager.rb +0 -425
  95. data/lib/corl_core/mixin/action/commit.rb +0 -58
  96. data/lib/corl_core/mixin/action/project.rb +0 -53
  97. data/lib/corl_core/mixin/action/push.rb +0 -52
  98. data/lib/corl_core/mixin/config/collection.rb +0 -53
  99. data/lib/corl_core/mixin/config/ops.rb +0 -53
  100. data/lib/corl_core/mixin/config/options.rb +0 -39
  101. data/lib/corl_core/mixin/macro/object_interface.rb +0 -361
  102. data/lib/corl_core/mixin/macro/plugin_interface.rb +0 -380
  103. data/lib/corl_core/mixin/settings.rb +0 -46
  104. data/lib/corl_core/mixin/sub_config.rb +0 -148
  105. data/lib/corl_core/mod/hash.rb +0 -29
  106. data/lib/corl_core/plugin/action.rb +0 -381
  107. data/lib/corl_core/plugin/base.rb +0 -374
  108. data/lib/corl_core/plugin/command.rb +0 -98
  109. data/lib/corl_core/plugin/event.rb +0 -53
  110. data/lib/corl_core/plugin/extension.rb +0 -12
  111. data/lib/corl_core/plugin/project.rb +0 -927
  112. data/lib/corl_core/plugin/template.rb +0 -80
  113. data/lib/corl_core/plugin/translator.rb +0 -38
  114. data/lib/corl_core/util/cli.rb +0 -352
  115. data/lib/corl_core/util/data.rb +0 -404
  116. data/lib/corl_core/util/disk.rb +0 -114
  117. data/lib/corl_core/util/git.rb +0 -47
  118. data/lib/corl_core/util/interface.rb +0 -319
  119. data/lib/corl_core/util/liquid.rb +0 -17
  120. data/lib/corl_core/util/package.rb +0 -93
  121. data/lib/corl_core/util/shell.rb +0 -239
  122. data/spec/corl_core/interface_spec.rb +0 -489
@@ -0,0 +1,214 @@
1
+ #!/bin/bash
2
+ #
3
+ # command.sh
4
+ #
5
+ #-------------------------------------------------------------------------------
6
+ # Convert parameters into newline separated sections and apply other
7
+ # normalizations.
8
+ #
9
+ # This way we can avoid problems with quote expansion when passing parameters
10
+ # around.
11
+ #
12
+ # USAGE:> PARAMS=`normalize_params "$@"`
13
+ #
14
+ function normalize_params()
15
+ {
16
+ local PARAMS=''
17
+
18
+ for PARAM in "$@"
19
+ do
20
+ # Split single character flags
21
+ if [[ $PARAM =~ ^-([A-Za-z0-9]{2,})$ ]]
22
+ then
23
+ BLOB=${BASH_REMATCH[1]}
24
+ for ((i=0; i<${#BLOB}; i++)); do
25
+ PARAMS="${PARAMS}-${BLOB:$i:1}"$'\n'
26
+ done
27
+ # Split equal '=' assignments
28
+ elif [[ $PARAM =~ ^(--?[A-Za-z0-9_-]+)\=(.+)$ ]]
29
+ then
30
+ PARAMS="${PARAMS}${BASH_REMATCH[1]}"$'\n'
31
+ PARAMS="${PARAMS}${BASH_REMATCH[2]}"$'\n'
32
+ else
33
+ PARAMS="${PARAMS}${PARAM}"$'\n'
34
+ fi
35
+ done
36
+
37
+ echo "$PARAMS"
38
+ return 0
39
+ }
40
+
41
+ #-------------------------------------------------------------------------------
42
+ # Return whether or not parameters have a particular flag enabled.
43
+ #
44
+ # USAGE:> parse_flag $FLAG FOUND_REF
45
+ #
46
+ # Note: Needs [ PARAMS="$@" ] defined in the calling function.
47
+ # The flag is removed from this variable.
48
+ #
49
+ function parse_flag()
50
+ {
51
+ local FLAGS="$1"
52
+ local FOUND="$2"
53
+
54
+ local LOCAL_FOUND=''
55
+
56
+ local ALT_PARAMS=''
57
+ local IFS_ORIG="$IFS"
58
+
59
+ IFS='|'
60
+ read -ra FLAG_ARRAY <<< "$FLAGS"
61
+
62
+ IFS=$'\n'
63
+ for PARAM in $PARAMS # $PARAMS is not a local variable
64
+ do
65
+ # echo "PARAM = $PARAM"
66
+ for FLAG in "${FLAG_ARRAY[@]}"
67
+ do
68
+ if [ "$PARAM" = "$FLAG" ]
69
+ then
70
+ eval $FOUND="$PARAM" # Notify parent script that flag was found.
71
+ LOCAL_FOUND='1'
72
+
73
+ # echo "Flag $FLAG found."
74
+ break
75
+ fi
76
+ done
77
+
78
+ if [ ! "$LOCAL_FOUND" ]
79
+ then
80
+ ALT_PARAMS="${ALT_PARAMS}${PARAM}"$'\n'
81
+ # echo "ALT_PARAMS = $ALT_PARAMS"
82
+ fi
83
+
84
+ LOCAL_FOUND=''
85
+ done
86
+
87
+ PARAMS=$ALT_PARAMS # Reassign to calling function params.
88
+ IFS="$IFS_ORIG"
89
+ return 0
90
+ }
91
+
92
+ #-------------------------------------------------------------------------------
93
+ # Return whether or not parameters have a particular option specified.
94
+ #
95
+ # USAGE:> parse_option $OPTION VALUE_REF $VALIDATOR_FUNC $ERROR_MSG
96
+ #
97
+ # Note: Needs [ PARAMS="$@" ] defined in the calling function.
98
+ # The option and value are removed from this variable.
99
+ #
100
+ function parse_option()
101
+ {
102
+ local OPTIONS="$1"
103
+ local VALUE="$2"
104
+ local VALIDATOR="$3"
105
+ local ERROR_MSG="$4"
106
+
107
+ if [ ! "$VALIDATOR" ]
108
+ then
109
+ VALIDATOR='validate_string' # Default option value is non empty string
110
+ fi
111
+
112
+ local ALT_PARAMS=''
113
+ local IFS_ORIG="$IFS"
114
+
115
+ local OPTION_FOUND=''
116
+ local VALUE_FOUND=''
117
+ local NEEDS_PROCESSING=''
118
+
119
+ IFS='|'
120
+ read -ra OPTION_ARRAY <<< "$OPTIONS"
121
+
122
+ IFS=$'\n'
123
+ for PARAM in $PARAMS # $PARAMS is not a local variable
124
+ do
125
+ #echo "PARAM = $PARAM"
126
+ if [ "$NEEDS_PROCESSING" ]
127
+ then
128
+ #echo "OPTION FOUND - Retreiving Value"
129
+ if [[ $PARAM =~ ^- ]]
130
+ then
131
+ ERROR_MSG=`echo "Parameter [ $OPTIONS ] (empty): $ERROR_MSG"`
132
+ echo "$ERROR_MSG"
133
+
134
+ IFS="$IFS_ORIG"
135
+ return 1
136
+ fi
137
+
138
+ if [ "$VALIDATOR" ]
139
+ then
140
+ #echo "$VALIDATOR '$PARAM'"
141
+ if ! $VALIDATOR "$PARAM"
142
+ then
143
+ ERROR_MSG=`echo "Parameter [ $OPTIONS ] ($PARAM): $ERROR_MSG"`
144
+ echo "$ERROR_MSG"
145
+ return 1
146
+ fi
147
+ fi
148
+ eval $VALUE="'$PARAM'" # Notify parent script that option was found.
149
+ VALUE_FOUND='1'
150
+ NEEDS_PROCESSING=''
151
+ continue
152
+ fi
153
+
154
+ for OPTION in "${OPTION_ARRAY[@]}"
155
+ do
156
+ #echo "OPTION = $OPTION"
157
+ if [ "$PARAM" = "$OPTION" ]
158
+ then
159
+ #echo "OPTION FOUND - Setting Flag"
160
+ OPTION_FOUND='1'
161
+ NEEDS_PROCESSING='1'
162
+ break
163
+ fi
164
+ done
165
+
166
+ if [ ! "$NEEDS_PROCESSING" ]
167
+ then
168
+ ALT_PARAMS="${ALT_PARAMS}${PARAM}"$'\n'
169
+ #echo "ALT_PARAMS = $ALT_PARAMS"
170
+ fi
171
+ done
172
+
173
+ # Check if we have a value.
174
+ if [ "$OPTION_FOUND" -a ! "$VALUE_FOUND" ]
175
+ then
176
+ ERROR_MSG=`echo "Parameter [ $OPTIONS ] (empty): $ERROR_MSG"`
177
+ echo "$ERROR_MSG"
178
+
179
+ IFS="$IFS_ORIG"
180
+ return 1
181
+ fi
182
+
183
+ PARAMS=$ALT_PARAMS # Reassign to calling function params.
184
+ IFS="$IFS_ORIG"
185
+ return 0
186
+ }
187
+
188
+ #-------------------------------------------------------------------------------
189
+ # Returns all non dashed arguments from list of parameters.
190
+ #
191
+ # This should be run after all flags and options have been parsed.
192
+ #
193
+ # USAGE:> ARGS=`get_args "$PARAMS"`
194
+ #
195
+ function get_args()
196
+ {
197
+ local ARGS=()
198
+ local IFS_ORIG="$IFS"
199
+
200
+ IFS=$'\n'
201
+ for PARAM in $@
202
+ do
203
+ #echo "$PARAM"
204
+ # No options allowed
205
+ if [[ $PARAM =~ ^[^-] ]]
206
+ then
207
+ ARGS=("${ARGS[@]}" "$PARAM")
208
+ fi
209
+ done
210
+
211
+ echo "$ARGS"
212
+ IFS="$IFS_ORIG"
213
+ return 0
214
+ }
@@ -0,0 +1,139 @@
1
+ #!/bin/bash
2
+ #
3
+ # filesystem.sh
4
+ #
5
+ #-------------------------------------------------------------------------------
6
+ # Transfer one directory to another. (NON DESTRUCTIVE)
7
+ #
8
+ # USAGE:> transfer_directory [ --sudo ][ --force ] $ORIGIN_DIR $DEST_DIR
9
+ #
10
+ function transfer_directory()
11
+ {
12
+ local PARAMS=`normalize_params "$@"`
13
+ local SUDO_ENABLED=''
14
+ local FORCE_OVERWRITE=''
15
+
16
+ parse_flag '-s|--sudo' SUDO_ENABLED || return 1
17
+ parse_flag '-f|--force' FORCE_OVERWRITE || return 2
18
+
19
+ local ARGS=`get_args "$PARAMS"`
20
+ local ORIGIN_DIR="${ARGS[0]}"
21
+ local DEST_DIR="${ARGS[1]}"
22
+
23
+ # echo "PARAMS = $@"
24
+ # echo "ORIGIN_DIR = $ORIGIN_DIR"
25
+ # echo "DEST_DIR = $DEST_DIR"
26
+ # echo "SUDO_ENABLED = $SUDO_ENABLED"
27
+
28
+ if [ "$ORIGIN_DIR" != "$DEST_DIR" ]
29
+ then
30
+ if [ "$FORCE_OVERWRITE" -o ! -d "$DEST_DIR" ]
31
+ then
32
+ echo "Transfering $ORIGIN_DIR to $DEST_DIR."
33
+
34
+ if [ "$SUDO_ENABLED" ]
35
+ then
36
+ # echo "SUDO enabled."
37
+ if [ "$FORCE_OVERWRITE" ]
38
+ then
39
+ echo "Removing existing directory: $DEST_DIR (as admin)."
40
+ sudo rm -Rf "$DEST_DIR"
41
+ fi
42
+ echo "Copying $ORIGIN_DIR to $DEST_DIR (as admin)."
43
+ sudo cp -Rf "$ORIGIN_DIR" "$DEST_DIR"
44
+ else
45
+ if [ "$FORCE_OVERWRITE" ]
46
+ then
47
+ echo "Removing existing directory: $DEST_DIR."
48
+ rm -Rf "$DEST_DIR"
49
+ fi
50
+ echo "Copying $ORIGIN_DIR to $DEST_DIR."
51
+ cp -Rf "$ORIGIN_DIR" "$DEST_DIR"
52
+ fi
53
+ else
54
+ echo "Directory $DEST_DIR already exists. If you wish to replace it, delete it first."
55
+ return 3
56
+ fi
57
+ fi
58
+ return 0
59
+ }
60
+
61
+ #-------------------------------------------------------------------------------
62
+ # Change permissions on all directories under a base directory.
63
+ #
64
+ # USAGE:> directory_access [ --sudo ] $BASE_DIR $PERM
65
+ #
66
+ function directory_access()
67
+ {
68
+ local PARAMS=`normalize_params "$@"`
69
+ local SUDO_ENABLED=''
70
+
71
+ parse_flag "-s|--sudo" SUDO_ENABLED || return 1
72
+
73
+ local ARGS=`get_args "$PARAMS"`
74
+ local BASE_DIR="${ARGS[0]}"
75
+ local PERM="${ARGS[1]}"
76
+
77
+ if [ "$SUDO_ENABLED" ]
78
+ then
79
+ echo "Adjusting permissions for all directories under $BASE_DIR to $PERM (as admin)."
80
+ sudo find "$BASE_DIR" -type d -exec chmod "$PERM" {} \; || return 2
81
+ else
82
+ echo "Adjusting permissions for all directories under $BASE_DIR to $PERM."
83
+ find "$BASE_DIR" -type d -exec chmod "$PERM" {} \; || return 2
84
+ fi
85
+ }
86
+
87
+ #-------------------------------------------------------------------------------
88
+ # Change permissions on all files under a base directory.
89
+ #
90
+ # USAGE:> file_access [ --sudo ] $BASE_DIR $PERM
91
+ #
92
+ function file_access()
93
+ {
94
+ local PARAMS=`normalize_params "$@"`
95
+ local SUDO_ENABLED=''
96
+
97
+ parse_flag "-s|--sudo" SUDO_ENABLED || return 1
98
+
99
+ local ARGS=`get_args "$PARAMS"`
100
+ local BASE_DIR="${ARGS[0]}"
101
+ local PERM="${ARGS[1]}"
102
+
103
+ if [ "$SUDO_ENABLED" ]
104
+ then
105
+ echo "Adjusting permissions for all files under $BASE_DIR to $PERM (as admin)."
106
+ sudo find "$BASE_DIR" -type f -exec chmod "$PERM" {} \; || return 2
107
+ else
108
+ echo "Adjusting permissions for all files under $BASE_DIR to $PERM."
109
+ find "$BASE_DIR" -type f -exec chmod "$PERM" {} \; || return 2
110
+ fi
111
+ }
112
+
113
+ #-------------------------------------------------------------------------------
114
+ # Change permissions on all files or directories matching a specified pattern
115
+ # under a base directory.
116
+ #
117
+ # USAGE:> pattern_access [ --sudo ] $BASE_DIR $PATTERN $PERM
118
+ #
119
+ function pattern_access()
120
+ {
121
+ local PARAMS=`normalize_params "$@"`
122
+ local SUDO_ENABLED=''
123
+
124
+ parse_flag "-s|--sudo" SUDO_ENABLED || return 1
125
+
126
+ local ARGS=`get_args "$PARAMS"`
127
+ local BASE_DIR="${ARGS[0]}"
128
+ local PATTERN="${ARGS[1]//\'/}"
129
+ local PERM="${ARGS[2]}"
130
+
131
+ if [ "$SUDO_ENABLED" ]
132
+ then
133
+ echo "Adjusting permissions for all files or directories under $BASE_DIR matching $PATTERN to $PERM (as admin)."
134
+ sudo find "$BASE_DIR" -name "$PATTERN" -exec chmod "$PERM" {} \; || return 2
135
+ else
136
+ echo "Adjusting permissions for all files or directories under $BASE_DIR matching $PATTERN to $PERM."
137
+ find "$BASE_DIR" -name "$PATTERN" -exec chmod "$PERM" {} \; || return 2
138
+ fi
139
+ }
@@ -0,0 +1,73 @@
1
+ #!/bin/bash
2
+ #
3
+ # load.sh
4
+ #
5
+ #-------------------------------------------------------------------------------
6
+ # Shared functions
7
+
8
+ #-------------------------------------------------------------------------------
9
+ # Get the directory of the command passed via the first parameter.
10
+ #
11
+ # USAGE:> SCRIPT_DIR=`get_command_location $0`
12
+ #
13
+ function get_command_location()
14
+ {
15
+ local SCRIPT_DIR="$(cd "$(dirname "$([ `readlink "$1"` ] && echo "`readlink "$1"`" || echo "$1")")"; pwd -P)"
16
+
17
+ # Return the final directory found.
18
+ echo "$SCRIPT_DIR"
19
+ return 0
20
+ }
21
+
22
+ #-------------------------------------------------------------------------------
23
+ # Initialization
24
+
25
+ if [ ! -d "$SHELL_LIB_DIR" ]
26
+ then
27
+ SHELL_LIB_DIR=`get_command_location $0`
28
+ fi
29
+
30
+ #-------------------------------------------------------------------------------
31
+
32
+ # Load command utilities. This should always be loaded first.
33
+ COMMON_COMMAND="$SHELL_LIB_DIR/command.sh"
34
+
35
+ if [ -f "$COMMON_COMMAND" ]
36
+ then
37
+ source "$COMMON_COMMAND"
38
+ fi
39
+
40
+ # Load os utilities.
41
+ COMMON_OS="$SHELL_LIB_DIR/os.sh"
42
+
43
+ if [ -f "$COMMON_OS" ]
44
+ then
45
+ source "$COMMON_OS"
46
+ os_info
47
+ fi
48
+
49
+ # Load file system utilities.
50
+ COMMON_FILESYSTEM="$SHELL_LIB_DIR/filesystem.sh"
51
+
52
+ if [ -f "$COMMON_FILESYSTEM" ]
53
+ then
54
+ source "$COMMON_FILESYSTEM"
55
+ fi
56
+
57
+ # Load script utilities.
58
+ COMMON_SCRIPT="$SHELL_LIB_DIR/script.sh"
59
+
60
+ if [ -f "$COMMON_SCRIPT" ]
61
+ then
62
+ source "$COMMON_SCRIPT"
63
+ fi
64
+
65
+ #-------------------------------------------------------------------------------
66
+
67
+ # Load any validators used in parse_option() calls.
68
+ COMMON_VALIDATORS="$SHELL_LIB_DIR/validators.sh"
69
+
70
+ if [ -f "$COMMON_VALIDATORS" ]
71
+ then
72
+ source "$COMMON_VALIDATORS"
73
+ fi
@@ -0,0 +1,67 @@
1
+ #!/bin/bash
2
+ #
3
+ # os.sh
4
+ #
5
+ # Most of this file is currently derived from:
6
+ #
7
+ # https://github.com/coto/server-easy-install/blob/master/lib/core.sh
8
+ #
9
+ #-------------------------------------------------------------------------------
10
+
11
+ function os_info() {
12
+ OS=`lowercase \`uname\``
13
+ KERNEL=`uname -r`
14
+ MACHINE=`uname -m`
15
+
16
+ #---
17
+
18
+ if [ "{$OS}" == "windowsnt" ]
19
+ then
20
+ OS=windows
21
+
22
+ elif [ "{$OS}" == "darwin" ]
23
+ then
24
+ OS=mac
25
+ else
26
+ if [ "${OS}" = "linux" ]
27
+ then
28
+ if [ -f /etc/redhat-release ]
29
+ then
30
+ OS=`cat /etc/redhat-release |sed s/\ release.*//`
31
+ OS_NAME=`cat /etc/redhat-release | sed s/.*\(// | sed s/\)//`
32
+ OS_VERSION=`cat /etc/redhat-release | sed s/.*release\ // | sed s/\ .*//`
33
+
34
+ elif [ -f /etc/SuSE-release ]
35
+ then
36
+ OS=suse
37
+ OS_NAME=`cat /etc/SuSE-release | tr "\n" ' '| sed s/VERSION.*//`
38
+ OS_VERSION=`cat /etc/SuSE-release | tr "\n" ' ' | sed s/.*=\ //`
39
+
40
+ elif [ -f /etc/mandrake-release ]
41
+ then
42
+ OS=mandriva
43
+ OS_NAME=`cat /etc/mandrake-release | sed s/.*\(// | sed s/\)//`
44
+ OS_VERSION=`cat /etc/mandrake-release | sed s/.*release\ // | sed s/\ .*//`
45
+
46
+ elif [ -f /etc/debian_version ]
47
+ then
48
+ DIST=`cat /etc/lsb-release | grep '^DISTRIB_ID' | awk -F= '{ print $2 }'`
49
+ OS_NAME=`cat /etc/lsb-release | grep '^DISTRIB_CODENAME' | awk -F= '{ print $2 }'`
50
+ OS_VERSION=`cat /etc/lsb-release | grep '^DISTRIB_RELEASE' | awk -F= '{ print $2 }'`
51
+ fi
52
+ if [ -f /etc/UnitedLinux-release ]
53
+ then
54
+ DIST="${DIST}[`cat /etc/UnitedLinux-release | tr "\n" ' ' | sed s/VERSION.*//`]"
55
+ fi
56
+ OS=`lowercase "$DIST"`
57
+ fi
58
+ fi
59
+ }
60
+
61
+ #-------------------------------------------------------------------------------
62
+ # Utilities
63
+
64
+ function lowercase() {
65
+ echo "$1" | sed "y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/"
66
+ }
67
+