machine_configure 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1ccd8db9cf4911d7c39b8a1a60e2aef90f38798437bcb1e6f463c9977fcc369f
4
- data.tar.gz: 073d2219e21ec95877111f79cc430da279dd1fb8551e94f82f072d3478fc8d6e
3
+ metadata.gz: 06ef93f9530db48a7db44d49b441113df4f1e067a07a60a73b13fcf1325523aa
4
+ data.tar.gz: b618dabc8e2d8fbef51b19d399658fa89850feed80578cdad3315a2e6cbf56a2
5
5
  SHA512:
6
- metadata.gz: 6a9ef77ddcef9d115d2e796fe0493a4f1623ac65adb5e46dac1f7f138a23bc5c8b24e66060c682041b11414d3aea6236d8eff298b89b66332dbf5ec5dc82fc9a
7
- data.tar.gz: 3ea90114839e8c543de8ee78678a0e97d8e8e3384cdc5970ea636a1ad90888775b52c8d46a588b791c48cd4214374c48657e0af51d0b885cf0abd0ce1335af3c
6
+ metadata.gz: 242859e7737e8e29983c379d72f5bdbed420f5d26f086397c823f118d98da51df9c4402cd29203ba111c38f8f33a5c98432fc5db2e74a6e652903e2d71ecd9c5
7
+ data.tar.gz: e4fe37d37a2e72b9a24ec17d7c72ebf18a4cec9cf6146c591bf3fb41bb04180bd8efa09630e1aca81d0c54b96583671a87b14caf67526d62667abb6dac8b8ceb
data/Gemfile CHANGED
@@ -2,6 +2,4 @@ source 'https://rubygems.org'
2
2
 
3
3
  git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
4
4
 
5
- gem 'argument_parser', git: 'https://github.com/Noah2610/ArgumentParser'
6
-
7
5
  gemspec
data/Gemfile.lock CHANGED
@@ -1,13 +1,7 @@
1
- GIT
2
- remote: https://github.com/Noah2610/ArgumentParser
3
- revision: 3ac5b0083fd42ae8740d1d22d988f56c74a29470
4
- specs:
5
- argument_parser (1.0.0)
6
-
7
1
  PATH
8
2
  remote: .
9
3
  specs:
10
- machine_configure (0.0.1)
4
+ machine_configure (0.0.2)
11
5
  rubyzip (~> 1.2)
12
6
 
13
7
  GEM
@@ -22,7 +16,6 @@ PLATFORMS
22
16
  ruby
23
17
 
24
18
  DEPENDENCIES
25
- argument_parser!
26
19
  bundler (~> 1.16)
27
20
  machine_configure!
28
21
  minitest (~> 5.0)
@@ -0,0 +1,112 @@
1
+ ####################################################
2
+ ## Simple command-line arguments / options parser ##
3
+ ## https://github.com/Noah2610/ArgumentParser ##
4
+ ####################################################
5
+
6
+ class ArgumentParser
7
+ def self.get_arguments valid_args = {}
8
+ return nil if (valid_args.nil? || valid_args.empty?)
9
+
10
+ ret = {
11
+ options: {},
12
+ keywords: {}
13
+ }
14
+
15
+ set_opt_val_of = nil
16
+ set_kw_val_of = nil
17
+ cur_kw_chain = nil
18
+ read_user_inputs = false
19
+ ## Loop through all command-line arguments
20
+ ARGV.each do |argument|
21
+
22
+ ## Check valid SINGLE options
23
+ if (argument =~ /\A-[\w\d]+\z/)
24
+ ## Get all options of argument
25
+ cur_opts = argument.sub(/\A-/,"").split("")
26
+ valid_args[:single].each do |id, val|
27
+ ## Loop through every command-line option of current argument
28
+ # ex.: -abc -> a,b,c
29
+ cur_opts.each do |opt|
30
+ if (val.first.include? opt)
31
+ ## Check if option takes value
32
+ if (val.last)
33
+ ret[:options][id] = nil
34
+ set_opt_val_of = id
35
+ else
36
+ ret[:options][id] = true
37
+ end
38
+ end
39
+ end
40
+ end
41
+
42
+ ## Check valid DOUBLE options
43
+ elsif (argument =~ /\A--[\w\d\-]+\z/)
44
+ cur_opt = argument.sub(/\A--/,"")
45
+ valid_args[:double].each do |id, val|
46
+ if (val.first.include? cur_opt)
47
+ ## Check if option takes value
48
+ if (val.last)
49
+ ret[:options][id] = nil
50
+ set_opt_val_of = id
51
+ else
52
+ ret[:options][id] = true
53
+ end
54
+ end
55
+ end
56
+
57
+ ## Check valid KEYWORDS or values
58
+ elsif !(argument =~ /\A-{1,2}/)
59
+ ## Set value of previously found option
60
+ if (set_opt_val_of)
61
+ ret[:options][set_opt_val_of] = argument
62
+ set_opt_val_of = nil
63
+ next
64
+ elsif (set_kw_val_of)
65
+ ret[:keywords][set_kw_val_of] << argument
66
+ set_kw_val_of = nil
67
+ next
68
+ end
69
+
70
+ ## Check if in kw-chain or for valid keyword
71
+ if (cur_kw_chain.nil?)
72
+ valid_args[:keywords].each do |id, val|
73
+ if ([:INPUT, :INPUTS].include?(val.first) || val.first.include?(argument))
74
+ ret[:keywords][id] = [argument]
75
+ cur_kw_chain = id
76
+ break
77
+ end
78
+ end
79
+ else
80
+ ## Check if argument is valid for next kw in kw-chain
81
+ kw_chain_index = ret[:keywords][cur_kw_chain].size
82
+ ## Read unlimited custom user input
83
+ if (read_user_inputs)
84
+ ret[:keywords][cur_kw_chain] << argument
85
+ next
86
+ else
87
+ ## If not unlimited custom user input and argument's length has exceeded
88
+ ## keyword-chain's possible length, then skip
89
+ next if (kw_chain_index >= valid_args[:keywords][cur_kw_chain].size)
90
+ end
91
+ if (valid_args[:keywords][cur_kw_chain][kw_chain_index] == :INPUT)
92
+ ## Custom user input (single)
93
+ ret[:keywords][cur_kw_chain] << argument
94
+
95
+ elsif (valid_args[:keywords][cur_kw_chain][kw_chain_index] == :INPUTS)
96
+ ## Custom user input (unlimited)
97
+ ret[:keywords][cur_kw_chain] << argument
98
+ read_user_inputs = true
99
+
100
+ else
101
+ if (valid_args[:keywords][cur_kw_chain][kw_chain_index].include? argument)
102
+ ret[:keywords][cur_kw_chain] << argument
103
+ end
104
+ end
105
+ end
106
+ end
107
+
108
+ end # end arguments loop
109
+
110
+ return ret
111
+ end
112
+ end
@@ -1,5 +1,4 @@
1
1
  require 'bundler/setup'
2
- require 'argument_parser'
3
2
  require 'fileutils'
4
3
  require 'pathname'
5
4
  require 'zip'
@@ -43,6 +42,7 @@ module MachineConfigure
43
42
  DM_BACKUP_CERTS_PATH = DM_BACKUP_PATH.join('certs')
44
43
 
45
44
  require DIR[:src].join 'meta'
45
+ require DIR[:root].join 'argument_parser'
46
46
  require DIR[:helpers].join 'shared'
47
47
  require DIR[:helpers].join 'message'
48
48
  require DIR[:src].join 'validator'
@@ -1,4 +1,4 @@
1
1
  module MachineConfigure
2
2
  GEM_NAME = 'machine_configure'
3
- VERSION = '0.0.1'
3
+ VERSION = '0.0.2'
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: machine_configure
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Noah Rosenzweig
@@ -102,6 +102,7 @@ files:
102
102
  - bin/rdoc
103
103
  - bin/setup
104
104
  - exe/maccon
105
+ - lib/argument_parser.rb
105
106
  - lib/machine_configure.rb
106
107
  - lib/machine_configure/cli.rb
107
108
  - lib/machine_configure/cli_constants.rb