ref_arch_setup 0.0.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Boltdir/Puppetfile +2 -0
- data/CONTRIBUTING.md +27 -6
- data/README.md +169 -5
- data/bin/ref_arch_setup +171 -22
- data/fixtures/pe.conf +119 -0
- data/fixtures/puppet-enterprise-2019.0-rc1-7-gd82666f-el-7-x86_64.tar +0 -0
- data/lib/ref_arch_setup.rb +8 -2
- data/lib/ref_arch_setup/bolt_helper.rb +263 -0
- data/lib/ref_arch_setup/cli.rb +76 -7
- data/lib/ref_arch_setup/download_helper.rb +399 -0
- data/lib/ref_arch_setup/install.rb +425 -14
- data/lib/ref_arch_setup/version.rb +1 -1
- data/modules/ref_arch_setup/tasks/download_pe_tarball.json +13 -0
- data/modules/ref_arch_setup/tasks/download_pe_tarball.sh +48 -0
- data/modules/ref_arch_setup/tasks/generate_pe_conf.json +10 -0
- data/modules/ref_arch_setup/tasks/generate_pe_conf.rb +128 -0
- data/modules/ref_arch_setup/tasks/install_pe.json +14 -0
- data/modules/ref_arch_setup/tasks/install_pe.sh +132 -0
- metadata +59 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 867ecc198ad41daa38002f36364b3a9af7f561c6
|
4
|
+
data.tar.gz: f759732639ee8e271c2b0e062cd27ca8e2523ef0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fc62ba4ba3beb0532c26cf0ad9b1ac577cb80cb157dc1d607c222b9069598b8730348f5bd2f5738f158cea6da57414c6e8f9caff41ea7fd2724f4095766c5875
|
7
|
+
data.tar.gz: 9bc508c713595af8e2174aed3f176ba565c8b1d5bfe2e615db7e6850218c60b418da099d8341b24406d4d544eaafbff95401ceca9f87e16cebae69271d039027
|
data/Boltdir/Puppetfile
ADDED
data/CONTRIBUTING.md
CHANGED
@@ -1,14 +1,35 @@
|
|
1
1
|
# How To Contribute To RefArchSetup
|
2
2
|
|
3
3
|
## Getting Started
|
4
|
-
|
5
|
-
* Create a [Jira](http://tickets.puppetlabs.com) account.
|
6
4
|
* Make sure you have a [GitHub](https://github.com) account.
|
7
|
-
*
|
5
|
+
* Clone the [ref_arch_setup](https://github.com/puppetlabs/ref_arch_setup) repository on GitHub.
|
6
|
+
* RefArchSetup uses [gem_of](https://github.com/puppetlabs/gem_of) for some development gem dependencies and rake tasks.
|
7
|
+
* Clone the repository and include the `gem_of` submodule:
|
8
|
+
```
|
9
|
+
$ ~/> git clone --recurse-submodules https://github.com/puppetlabs/ref_arch_setup.git
|
10
|
+
```
|
11
|
+
* If you've already cloned the repository you'll need to initialize and update the `gem_of` submodule:
|
12
|
+
```
|
13
|
+
git submodule init
|
14
|
+
git submodule update
|
15
|
+
```
|
16
|
+
|
17
|
+
* Navigate to the ref_arch_setup directory:
|
18
|
+
```
|
19
|
+
$ ~/> cd ref_arch_setup
|
20
|
+
```
|
21
|
+
* Install the required gems:
|
22
|
+
```
|
23
|
+
$ ~/ref_arch_setup> bundle install
|
24
|
+
```
|
25
|
+
|
26
|
+
## Filing Tickets With Jira
|
27
|
+
|
28
|
+
* Create a [Jira](http://tickets.puppetlabs.com) account if you don't already have one.
|
29
|
+
* Submit a ticket for your issue, assuming one does not already exist:
|
30
|
+
* File a ticket in the [SLV project](https://tickets.puppetlabs.com/projects/SLV/).
|
8
31
|
* Clearly describe the issue including steps to reproduce when it is a bug.
|
9
|
-
|
10
|
-
* Clone the [ref_arch_setup](https://github.com/puppetlabs/ref_arch_setup) repository on GitHub.
|
11
|
-
|
32
|
+
|
12
33
|
## Making Changes
|
13
34
|
|
14
35
|
### GitHub
|
data/README.md
CHANGED
@@ -1,23 +1,188 @@
|
|
1
1
|
# RefArchSetup
|
2
2
|
|
3
3
|
## Overview
|
4
|
+
RefArchSetup is a Ruby gem designed to help install the various Puppet Reference Architectures.
|
5
|
+
It currently supports the Standard Reference Architecture.
|
4
6
|
|
5
|
-
|
7
|
+
# Prerequisites
|
8
|
+
## Ruby
|
9
|
+
RefArchSetup uses [Puppet Bolt](https://puppet.com/products/puppet-bolt) as a gem which requires a minimum Ruby version of 2.3.
|
10
|
+
|
11
|
+
## Root Access
|
12
|
+
RefArchSetup executes Bolt commands as the root user using the `--run-as root` option to ensure a successful PE installation.
|
13
|
+
See the [Bolt Options](#bolt-options) section for more information.
|
14
|
+
|
15
|
+
## Supported Platforms
|
16
|
+
RefArchSetup supports the following platforms:
|
17
|
+
|
18
|
+
| OS | Arch |
|
19
|
+
|:---- |:---- |
|
20
|
+
| EL (RHEL, CentOS, Scientific Linux, Oracle Linux) 6 | x86_64 |
|
21
|
+
| EL (RHEL, CentOS, Scientific Linux, Oracle Linux) 7 | x86_64 |
|
22
|
+
| SLES 12 | x86_64 |
|
23
|
+
| Ubuntu 16.04 | amd64 |
|
24
|
+
| Ubuntu 18.04 | amd64 |
|
25
|
+
|
26
|
+
## Supported PE Versions
|
27
|
+
RefArchSetup supports PE versions greater than 2018.1.0.
|
28
|
+
|
29
|
+
## Supported Reference Architectures
|
30
|
+
RefArchSetup currently supports the Standard Architecture.
|
6
31
|
|
7
32
|
# Installation
|
33
|
+
RefArchSetup can be installed via [RubyGems](https://rubygems.org/gems/ref_arch_setup) or by building the gem locally.
|
8
34
|
|
35
|
+
## Install via RubyGems
|
36
|
+
The easiest way to install RefArchSetup is via [RubyGems](https://rubygems.org/gems/ref_arch_setup):
|
37
|
+
```
|
9
38
|
$ gem install ref_arch_setup
|
39
|
+
```
|
40
|
+
|
41
|
+
## Build the gem locally
|
42
|
+
To build the gem locally:
|
43
|
+
* Clone the RefArchSetup repository and install the dependencies by following the steps in the [Getting Started](CONTRIBUTING.md) section in [CONTRIBUTING.md](CONTRIBUTING.md).
|
44
|
+
* From your local copy of the repository, build the gem using the provided rake task:
|
45
|
+
```
|
46
|
+
$ ~/ref_arch_setup> bundle exec rake gem:build
|
47
|
+
```
|
48
|
+
* The gem will be built to the pkg directory; install the gem by either specifying the path to the RAS gem provided in the output from the previous step:
|
49
|
+
```
|
50
|
+
$ ~/ref_arch_setup> gem install pkg/ref_arch_setup-0.0.x
|
51
|
+
```
|
52
|
+
or navigate to the pkg directory first, in which case specifying the version is not required:
|
53
|
+
```
|
54
|
+
$ ~/ref_arch_setup> cd pkg && gem install ref_arch_setup
|
55
|
+
```
|
10
56
|
|
11
57
|
# Usage
|
58
|
+
## Help
|
59
|
+
RefArchSetup provides help on the command line. Run the `ref_arch_setup` command with the ` -h` option to display the available commands and options:
|
60
|
+
```
|
61
|
+
$ ref_arch_setup -h
|
62
|
+
Usage: ref_arch_setup <command> [subcommand] [options]
|
63
|
+
|
64
|
+
Available Commands:
|
65
|
+
|
66
|
+
install - Install a bootstrapped PE on target host
|
67
|
+
install generate-pe-conf - Generates a pe.conf for the install
|
68
|
+
install bootstrap - Installs a bare PE on the target host
|
69
|
+
install pe-infra-agent-install - Installs agents on all PE
|
70
|
+
infrastructure nodes
|
71
|
+
install configure - Configures PE infrastructure nodes to
|
72
|
+
reference architecture settings
|
73
|
+
|
74
|
+
Available Options:
|
75
|
+
|
76
|
+
-h, --help Prints this help
|
77
|
+
-v, --version Show current version of ref_arch_setup
|
78
|
+
|
79
|
+
```
|
12
80
|
|
13
|
-
|
81
|
+
Run the `ref_arch_setup install` sub-command with the ` -h` option to display the available sub-commands and options:
|
82
|
+
```
|
83
|
+
$ ref_arch_setup install -h
|
84
|
+
Usage: ref_arch_setup install [options]
|
14
85
|
|
15
|
-
|
86
|
+
Runs the install subcommands in the following order:
|
87
|
+
generate-pe-conf (unless --pe-conf is provided)
|
88
|
+
bootstrap
|
89
|
+
pe-infra-agent-install (noop for "Standard" ref arch)
|
90
|
+
configure
|
91
|
+
|
92
|
+
Available Options:
|
93
|
+
Either --console-password or --pe-conf required
|
94
|
+
--user <username> SSH username for bolt ssh to target host
|
95
|
+
--password <password> SSH password for bolt ssh to target host
|
96
|
+
--private-key <path> Path to SSH private key file for bolt
|
97
|
+
ssh to target host
|
98
|
+
--sudo-password <password> Root user password for privilege escalation
|
99
|
+
--console-password <password> Password for the PE console
|
100
|
+
--primary-master <hostname> Hostname of primary master
|
101
|
+
--pe-tarball <path|URL> Path or URL to PE tarball
|
102
|
+
--pe-version <version> PE version to get tarball for
|
103
|
+
--pe-conf <path> Path to pe.conf file
|
104
|
+
```
|
105
|
+
|
106
|
+
## Install
|
107
|
+
Install PE on the desired primary master using the install command. For example:
|
108
|
+
```
|
109
|
+
$ ref_arch_setup install --primary-master=localhost --pe-version=latest --pe-conf=/path/to/pe.conf
|
110
|
+
```
|
111
|
+
### Subcommands
|
112
|
+
RefArchSetup is currently in development and as such not all subcommands are currently available.
|
113
|
+
Currently only the `bootstrap` subcommand is implemented; other subcommands run in a noop mode.
|
114
|
+
|
115
|
+
#### generate-pe-conf
|
116
|
+
This subcommand has not been implemented.
|
117
|
+
|
118
|
+
#### bootstrap
|
119
|
+
This subcommand runs the bootstrap portion of the install which includes the following steps:
|
120
|
+
* Download the PE tarball or verify a local tarball if specified
|
121
|
+
* Extract the tarball
|
122
|
+
* Run the PE installer
|
123
|
+
* Run the Puppet agent until no changes are reported
|
124
|
+
|
125
|
+
#### pe-infra-agent-install
|
126
|
+
This subcommand has not been implemented.
|
127
|
+
|
128
|
+
#### configure
|
129
|
+
This subcommand has not been implemented.
|
130
|
+
|
131
|
+
### Options
|
132
|
+
|
133
|
+
#### --primary-master
|
134
|
+
RefArchSetup can perform the PE installation with a local or remote primary master.
|
135
|
+
|
136
|
+
##### Specifying a local primary master
|
137
|
+
To perform the PE installation on the same host where RefArchSetup is run, specify `--primary-master=localhost`.
|
16
138
|
|
139
|
+
##### Specifying a remote primary master
|
140
|
+
To perform the PE installation on a remote host, specify `--primary-master=my.remote.master`.
|
141
|
+
If a remote host is specified it must be accessible to Bolt; see the [Bolt Options](#bolt-options) section for more information.
|
142
|
+
|
143
|
+
#### --pe-tarball
|
144
|
+
Specifying a PE tarball is optional, but if the option is specified it will override the `--pe-version` option.
|
145
|
+
|
146
|
+
##### Specifying a tarball URL
|
147
|
+
To install PE using a tarball URL, specify `--pe-tarball=https://my.host.tarball.tar.gz`.
|
148
|
+
|
149
|
+
##### Specifying a tarball path
|
150
|
+
To install PE using a tarball on a local or remote filesystem, specify `--pe-tarball=/path/to/tarball.tar.gz`.
|
151
|
+
|
152
|
+
#### --pe-version
|
153
|
+
RefArchSetup can install a specific version of PE or the latest version.
|
154
|
+
See the [Puppet Enterprise Version History](https://puppet.com/misc/version-history) for a comprehensive list of PE versions.
|
155
|
+
|
156
|
+
##### Install a specific version
|
157
|
+
To install a specific version of PE, specify the version number: `--pe-version=2018.1.4`.
|
158
|
+
|
159
|
+
##### Install the latest version
|
160
|
+
To install the latest version, specify `--pe-version=latest`.
|
161
|
+
|
162
|
+
#### --pe-conf
|
163
|
+
PE installation requires a valid pe.conf file. At a minimum the "console_admin_password" option must be specified.
|
164
|
+
RefArchSetup provides a default [pe.conf](fixtures/pe.conf) file. Specify the path to the pe.conf file: `--pe-conf=/path/to/pe.conf`
|
165
|
+
|
166
|
+
## Bolt Options
|
167
|
+
|
168
|
+
### --sudo-password
|
169
|
+
RefArchSetup executes Bolt commands as the root user using the `--run-as` option.
|
170
|
+
If RefArchSetup is run as a user other than root the sudo password must be specified: `--sudo-password=mysudopassword`
|
171
|
+
|
172
|
+
### --user
|
173
|
+
To execute Bolt commands via ssh with a user other than the user running RefArchSetup, specify `--user=my.ssh.user`.
|
174
|
+
Bolt can authenticate using a password or a private key file.
|
175
|
+
|
176
|
+
### --password
|
177
|
+
To authenticate using a password, specify `--password=mypassword`.
|
178
|
+
|
179
|
+
### --private-key
|
180
|
+
To authenticate using a private key, specify `--private-key=/path/to/my_key.rsa`.
|
181
|
+
|
182
|
+
# License
|
17
183
|
See [LICENSE](LICENSE) file.
|
18
184
|
|
19
185
|
# Support & Issues
|
20
|
-
|
21
186
|
Please log tickets and issues in the
|
22
187
|
[SLV project](https://tickets.puppetlabs.com/projects/SLV/).
|
23
188
|
|
@@ -25,6 +190,5 @@ For additional information on filing tickets, please check out our
|
|
25
190
|
[CONTRIBUTOR doc](CONTRIBUTING.md).
|
26
191
|
|
27
192
|
# Maintainers
|
28
|
-
|
29
193
|
For information on project maintainers, please check out our
|
30
194
|
[MAINTAINERS doc](MAINTAINERS.md).
|
data/bin/ref_arch_setup
CHANGED
@@ -5,20 +5,27 @@ require "rubygems" unless defined?(Gem)
|
|
5
5
|
require "ref_arch_setup"
|
6
6
|
require "optparse"
|
7
7
|
|
8
|
-
available_commands = [
|
9
|
-
"install"
|
10
|
-
]
|
8
|
+
available_commands = %w[install]
|
11
9
|
|
12
|
-
|
10
|
+
available_subcommands = %w[generate-pe-conf bootstrap pe-infra-agent-install configure]
|
11
|
+
|
12
|
+
@options = {}
|
13
|
+
@bolt_options = {}
|
13
14
|
# options["some_option"] = "some value" #to set a default value
|
14
15
|
|
15
16
|
global = OptionParser.new do |opt|
|
16
17
|
opt.banner = <<-BANNER
|
17
|
-
Usage: ref_arch_setup
|
18
|
+
Usage: ref_arch_setup <command> [subcommand] [options]
|
18
19
|
|
19
20
|
Available Commands:
|
20
21
|
|
21
|
-
install
|
22
|
+
install - Install a bootstrapped PE on target host
|
23
|
+
install generate-pe-conf - Generates a pe.conf for the install
|
24
|
+
install bootstrap - Installs a bare PE on the target host
|
25
|
+
install pe-infra-agent-install - Installs agents on all PE
|
26
|
+
infrastructure nodes
|
27
|
+
install configure - Configures PE infrastructure nodes to
|
28
|
+
reference architecture settings
|
22
29
|
|
23
30
|
Available Options:
|
24
31
|
|
@@ -27,29 +34,161 @@ BANNER
|
|
27
34
|
puts opt
|
28
35
|
exit
|
29
36
|
end
|
30
|
-
opt.on("-v", "--version", "Show
|
37
|
+
opt.on("-v", "--version", "Show current version of ref_arch_setup") do
|
31
38
|
puts RefArchSetup::Version::STRING
|
32
39
|
exit 0
|
33
40
|
end
|
34
41
|
end
|
35
42
|
|
36
|
-
|
43
|
+
def install_bolt_opts(opt)
|
44
|
+
opt.on("--user <username>", "SSH username for bolt ssh to target host") do |value|
|
45
|
+
@bolt_options["user"] = value
|
46
|
+
end
|
47
|
+
opt.on("--password <password>", "SSH password for bolt ssh to target host") do |value|
|
48
|
+
@bolt_options["password"] = value
|
49
|
+
end
|
50
|
+
opt.on("--private-key <path>", "Path to SSH private key file for bolt", \
|
51
|
+
"ssh to target host") do |value|
|
52
|
+
@bolt_options["private-key"] = value
|
53
|
+
end
|
54
|
+
opt.on("--sudo-password <password>", "Root user password for privilege escalation") do |value|
|
55
|
+
@bolt_options["sudo-password"] = value
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def install_generate_opts(opt)
|
60
|
+
opt.on("--primary-master <hostname>", "Hostname of primary master") do |value|
|
61
|
+
@options["primary_master"] = value
|
62
|
+
end
|
63
|
+
opt.on("--pe-version <version>", "PE version for base pe.conf file") do |value|
|
64
|
+
@options["pe_version"] = value
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def install_bootstrap(opt)
|
69
|
+
# TODO: remove primary master once we implement getting the host from the pe.conf
|
70
|
+
opt.on("--primary-master <hostname>", "Hostname of primary master") do |value|
|
71
|
+
@options["primary_master"] = value
|
72
|
+
end
|
73
|
+
opt.on("--pe-tarball <path|URL>", "Path or URL to PE tarball") do |value|
|
74
|
+
@options["pe_tarball"] = value
|
75
|
+
end
|
76
|
+
opt.on("--pe-version <version>", "PE version to get tarball for") do |value|
|
77
|
+
@options["pe_version"] = value
|
78
|
+
end
|
79
|
+
opt.on("--pe-conf <path>", "Path to pe.conf file") do |value|
|
80
|
+
@options["pe_conf"] = value
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def install_pe_infra_agent_install(opt)
|
85
|
+
opt.on("--pe-conf <path>", "Path to pe.conf file") do |value|
|
86
|
+
@options["pe_conf"] = value
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def install_configure(opt)
|
91
|
+
opt.on("--pe-conf <path>", "Path to pe.conf file") do |value|
|
92
|
+
@options["pe_conf"] = value
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def install_opts(opt)
|
97
|
+
install_bolt_opts(opt)
|
98
|
+
# This one is here because it is required for generate-pe-conf but not necessarily install
|
99
|
+
opt.on("--console-password <password>", "Password for the PE console") do |value|
|
100
|
+
@options["console_password"] = value
|
101
|
+
end
|
102
|
+
install_generate_opts(opt)
|
103
|
+
install_bootstrap(opt)
|
104
|
+
install_pe_infra_agent_install(opt)
|
105
|
+
install_configure(opt)
|
106
|
+
end
|
107
|
+
|
108
|
+
commands = {
|
37
109
|
"install" => OptionParser.new do |opt|
|
38
|
-
opt.
|
39
|
-
opt.
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
110
|
+
opt.set_summary_width(35)
|
111
|
+
opt.banner = <<-BANNER
|
112
|
+
Usage: ref_arch_setup install [options]
|
113
|
+
|
114
|
+
Runs the install subcommands in the following order:
|
115
|
+
generate-pe-conf (unless --pe-conf is provided)
|
116
|
+
bootstrap
|
117
|
+
pe-infra-agent-install (noop for "Standard" ref arch)
|
118
|
+
configure
|
119
|
+
|
120
|
+
Available Options:
|
121
|
+
Either --console-password or --pe-conf required
|
122
|
+
BANNER
|
123
|
+
install_opts(opt)
|
124
|
+
end
|
125
|
+
}
|
126
|
+
|
127
|
+
subcommands = {
|
128
|
+
"generate-pe-conf" => OptionParser.new do |opt|
|
129
|
+
opt.set_summary_width(35)
|
130
|
+
opt.banner = <<-BANNER
|
131
|
+
Usage: ref_arch_setup install generate-pe-conf [options]
|
132
|
+
|
133
|
+
Generates a pe.conf file for the install.
|
134
|
+
Uses localhost for primary master by default.
|
135
|
+
Uses latest production release for version by default.
|
136
|
+
Places the file in /tmp/ref_arch_setup/pe.conf
|
137
|
+
|
138
|
+
Available Options:
|
139
|
+
BANNER
|
140
|
+
# This one is here because it is required for generate-pe-conf but not necessarily install
|
141
|
+
opt.on("--console-password <password>", "REQUIRED: Password for the PE console") do |value|
|
142
|
+
@options["console_password"] = value
|
47
143
|
end
|
144
|
+
install_generate_opts(opt)
|
145
|
+
install_bolt_opts(opt)
|
146
|
+
end,
|
147
|
+
"bootstrap" => OptionParser.new do |opt|
|
148
|
+
opt.set_summary_width(35)
|
149
|
+
opt.banner = <<-BANNER
|
150
|
+
Usage: ref_arch_setup install bootstrap [options]
|
151
|
+
|
152
|
+
Does a bootstrap install of PE on the primary master
|
153
|
+
Uses pe.conf from /tmp/ref_arch_setup/pe.conf by default.
|
154
|
+
|
155
|
+
Available Options:
|
156
|
+
BANNER
|
157
|
+
install_bootstrap(opt)
|
158
|
+
install_bolt_opts(opt)
|
159
|
+
end,
|
160
|
+
"pe-infra-agent-install" => OptionParser.new do |opt|
|
161
|
+
opt.set_summary_width(35)
|
162
|
+
opt.banner = <<-BANNER
|
163
|
+
Usage: ref_arch_setup install pe-infra-agent-install [options]
|
164
|
+
|
165
|
+
Installs puppet agents on all PE infrastructure nodes other than
|
166
|
+
the primary master
|
167
|
+
Uses pe.conf from the primary master by default.
|
168
|
+
|
169
|
+
Available Options:
|
170
|
+
BANNER
|
171
|
+
install_pe_infra_agent_install(opt)
|
172
|
+
install_bolt_opts(opt)
|
173
|
+
end,
|
174
|
+
"configure" => OptionParser.new do |opt|
|
175
|
+
opt.set_summary_width(35)
|
176
|
+
opt.banner = <<-BANNER
|
177
|
+
Usage: ref_arch_setup install configure [options]
|
178
|
+
|
179
|
+
Configures all PE infrastructure nodes, including initial performance tuning
|
180
|
+
Uses pe.conf from from the primary master by default.
|
181
|
+
|
182
|
+
Available Options:
|
183
|
+
BANNER
|
184
|
+
install_configure(opt)
|
185
|
+
install_bolt_opts(opt)
|
48
186
|
end
|
49
187
|
}
|
50
188
|
|
51
189
|
global.order!(ARGV)
|
52
190
|
command_string = ARGV[0]
|
191
|
+
subcommand_string = ARGV[1]
|
53
192
|
|
54
193
|
if command_string.nil?
|
55
194
|
puts global.help
|
@@ -57,13 +196,23 @@ if command_string.nil?
|
|
57
196
|
end
|
58
197
|
|
59
198
|
unless available_commands.include?(command_string)
|
60
|
-
puts "# ERROR, #{
|
199
|
+
puts "# ERROR, #{command_string} is not an available command"
|
61
200
|
puts
|
62
201
|
puts global.help
|
63
202
|
exit 1
|
64
203
|
end
|
65
204
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
cli.
|
205
|
+
cli = RefArchSetup::CLI.new(@options, @bolt_options)
|
206
|
+
if subcommand_string !~ /^[a-zA-Z]/
|
207
|
+
commands[command_string].parse!
|
208
|
+
exit cli.run(command_string)
|
209
|
+
else
|
210
|
+
unless available_subcommands.include?(subcommand_string)
|
211
|
+
puts "# ERROR, #{subcommand_string} is not an available subcommand of #{command_string}"
|
212
|
+
puts
|
213
|
+
puts global.help
|
214
|
+
exit 1
|
215
|
+
end
|
216
|
+
subcommands[subcommand_string].parse!
|
217
|
+
exit cli.run(command_string, subcommand_string)
|
218
|
+
end
|