ConfigLMM 0.1.0

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.
Files changed (104) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +3 -0
  3. data/.yardopts +4 -0
  4. data/CHANGELOG.md +5 -0
  5. data/Examples/Android.mm.yaml +8 -0
  6. data/Examples/Apps/Blog.mm.yaml +7 -0
  7. data/Examples/Apps/Jellyfin.mm.yaml +3 -0
  8. data/Examples/Implemented.mm.yaml +155 -0
  9. data/Examples/Keys.ini +7 -0
  10. data/Examples/Linux.mm.yaml +16 -0
  11. data/Examples/Windows.mm.yaml +11 -0
  12. data/Examples/configlmmAuth.sh +26 -0
  13. data/Plugins/Apps/ArchiSteamFarm/ArchiSteamFarm.conf.erb +38 -0
  14. data/Plugins/Apps/ArchiSteamFarm/ArchiSteamFarm.lmm.rb +19 -0
  15. data/Plugins/Apps/IPFS/IPFS.conf.erb +44 -0
  16. data/Plugins/Apps/IPFS/IPFS.lmm.rb +23 -0
  17. data/Plugins/Apps/InfluxDB/InfluxDB.conf.erb +34 -0
  18. data/Plugins/Apps/InfluxDB/InfluxDB.lmm.rb +19 -0
  19. data/Plugins/Apps/Jackett/Jackett.conf.erb +38 -0
  20. data/Plugins/Apps/Jackett/Jackett.lmm.rb +19 -0
  21. data/Plugins/Apps/Jellyfin/Jellyfin.conf.erb +59 -0
  22. data/Plugins/Apps/Jellyfin/Jellyfin.lmm.rb +23 -0
  23. data/Plugins/Apps/Mastodon/Mastodon.conf.erb +81 -0
  24. data/Plugins/Apps/Mastodon/Mastodon.lmm.rb +23 -0
  25. data/Plugins/Apps/Matrix/Matrix.conf.erb +36 -0
  26. data/Plugins/Apps/Matrix/Matrix.lmm.rb +23 -0
  27. data/Plugins/Apps/Netdata/Netdata.conf.erb +37 -0
  28. data/Plugins/Apps/Netdata/Netdata.lmm.rb +23 -0
  29. data/Plugins/Apps/Nextcloud/Nextcloud.conf.erb +165 -0
  30. data/Plugins/Apps/Nextcloud/Nextcloud.lmm.rb +23 -0
  31. data/Plugins/Apps/Nginx/config-lmm/errors.conf +31 -0
  32. data/Plugins/Apps/Nginx/config-lmm/private.conf +6 -0
  33. data/Plugins/Apps/Nginx/config-lmm/proxy.conf +15 -0
  34. data/Plugins/Apps/Nginx/config-lmm/public.conf +3 -0
  35. data/Plugins/Apps/Nginx/config-lmm/ssl.conf +18 -0
  36. data/Plugins/Apps/Nginx/main.conf +30 -0
  37. data/Plugins/Apps/Nginx/nginx.conf +90 -0
  38. data/Plugins/Apps/Nginx/nginx.lmm.rb +62 -0
  39. data/Plugins/Apps/Nginx/proxy.conf.erb +31 -0
  40. data/Plugins/Apps/Odoo/Odoo.conf.erb +44 -0
  41. data/Plugins/Apps/Odoo/Odoo.lmm.rb +23 -0
  42. data/Plugins/Apps/Pterodactyl/Pterodactyl.conf.erb +50 -0
  43. data/Plugins/Apps/Pterodactyl/Pterodactyl.lmm.rb +30 -0
  44. data/Plugins/Apps/Pterodactyl/Wings.conf.erb +38 -0
  45. data/Plugins/Apps/Sunshine/Sunshine.conf.erb +31 -0
  46. data/Plugins/Apps/Sunshine/Sunshine.lmm.rb +21 -0
  47. data/Plugins/Apps/Vaultwarden/Vaultwarden.conf.erb +48 -0
  48. data/Plugins/Apps/Vaultwarden/Vaultwarden.lmm.rb +25 -0
  49. data/Plugins/Apps/bitmagnet/bitmagnet.conf.erb +35 -0
  50. data/Plugins/Apps/bitmagnet/bitmagnet.lmm.rb +19 -0
  51. data/Plugins/Apps/gollum/config.ru +11 -0
  52. data/Plugins/Apps/gollum/gollum.conf.erb +41 -0
  53. data/Plugins/Apps/gollum/gollum.lmm.rb +52 -0
  54. data/Plugins/OS/Linux.lmm.rb +64 -0
  55. data/Plugins/OS/Routers/Aruba/ArubaInstant.lmm.rb +144 -0
  56. data/Plugins/Platforms/GitHub.lmm.rb +57 -0
  57. data/Plugins/Platforms/GoDaddy/GoDaddy.lmm.rb +83 -0
  58. data/Plugins/Platforms/GoDaddy/zone.txt.erb +13 -0
  59. data/Plugins/Platforms/porkbun.lmm.rb +129 -0
  60. data/Plugins/Platforms/porkbun_spec.rb +110 -0
  61. data/Plugins/Services/DNS/AmberBit.lmm.rb +14 -0
  62. data/Plugins/Services/DNS/ArubaItDNS.lmm.rb +14 -0
  63. data/Plugins/Services/DNS/NICLV.lmm.rb +18 -0
  64. data/Plugins/Services/DNS/PowerDNS.lmm.rb +261 -0
  65. data/Plugins/Services/DNS/tonic.lmm.rb +126 -0
  66. data/README.md +337 -0
  67. data/Rakefile +15 -0
  68. data/UNLICENSE +24 -0
  69. data/bin/configlmm +7 -0
  70. data/bin/console +11 -0
  71. data/bin/setup +8 -0
  72. data/lib/ConfigLMM/Framework/plugins/dns.rb +63 -0
  73. data/lib/ConfigLMM/Framework/plugins/errors.rb +23 -0
  74. data/lib/ConfigLMM/Framework/plugins/nginxApp.rb +55 -0
  75. data/lib/ConfigLMM/Framework/plugins/plugin.rb +167 -0
  76. data/lib/ConfigLMM/Framework/plugins/ssh.rb +37 -0
  77. data/lib/ConfigLMM/Framework/plugins/store.rb +57 -0
  78. data/lib/ConfigLMM/Framework/plugins.rb +5 -0
  79. data/lib/ConfigLMM/Framework/registrator.rb +32 -0
  80. data/lib/ConfigLMM/Framework.rb +9 -0
  81. data/lib/ConfigLMM/LMM/plugins.rb +5 -0
  82. data/lib/ConfigLMM/LMM.rb +8 -0
  83. data/lib/ConfigLMM/cli.rb +161 -0
  84. data/lib/ConfigLMM/command.rb +53 -0
  85. data/lib/ConfigLMM/commands/build.rb +41 -0
  86. data/lib/ConfigLMM/commands/cleanup.rb +30 -0
  87. data/lib/ConfigLMM/commands/configsCommand.rb +167 -0
  88. data/lib/ConfigLMM/commands/deploy.rb +39 -0
  89. data/lib/ConfigLMM/commands/diff.rb +45 -0
  90. data/lib/ConfigLMM/commands/list.rb +15 -0
  91. data/lib/ConfigLMM/commands/refresh.rb +46 -0
  92. data/lib/ConfigLMM/commands/types.rb +35 -0
  93. data/lib/ConfigLMM/commands/validate.rb +49 -0
  94. data/lib/ConfigLMM/context.rb +52 -0
  95. data/lib/ConfigLMM/io/configList.rb +98 -0
  96. data/lib/ConfigLMM/io/path.rb +48 -0
  97. data/lib/ConfigLMM/io/source.rb +47 -0
  98. data/lib/ConfigLMM/io.rb +2 -0
  99. data/lib/ConfigLMM/state.rb +78 -0
  100. data/lib/ConfigLMM/utils/filters.rb +126 -0
  101. data/lib/ConfigLMM/version.rb +5 -0
  102. data/lib/ConfigLMM.rb +6 -0
  103. data/sig/ConfigLMM.rbs +4 -0
  104. metadata +485 -0
@@ -0,0 +1,78 @@
1
+ # encoding: UTF-8
2
+ # frozen_string_literal: true
3
+
4
+ require 'yaml'
5
+
6
+ module ConfigLMM
7
+ class State
8
+
9
+ def initialize(logger, prompt)
10
+ @Logger = logger
11
+ @Prompt = prompt
12
+ @State = nil
13
+ @StateFile = nil
14
+ end
15
+
16
+ def load!(configList, options)
17
+ if options['state']
18
+ @StateFile = options['state']
19
+ else
20
+ @StateFile = self.findStateFile(configList)
21
+ end
22
+ begin
23
+ @State = YAML.safe_load_file(@StateFile, permitted_classes: [Symbol])
24
+ rescue Errno::EISDIR => error
25
+ # TODO
26
+ raise error
27
+ rescue Errno::ENOENT => error
28
+ @Logger.debug(error)
29
+ # Couldn't find state file
30
+ # Maybe this is first run
31
+ # and we might need to create it
32
+ end
33
+ end
34
+
35
+ def create!
36
+ if @State.nil?
37
+ result = @Prompt.yes?('Couldn\'t find state file, create it?') do |q|
38
+ q.default false
39
+ end
40
+ if result
41
+ @State = {}
42
+ else
43
+ raise 'Aborting!'
44
+ end
45
+ end
46
+ end
47
+
48
+ def item(id)
49
+ @State[id] ||= {}
50
+ @State[id]
51
+ end
52
+
53
+ def selectType(type)
54
+ items = {}
55
+ @State.each do |id, item|
56
+ items[id] = item if item[:Type] == type.to_s
57
+ end
58
+ end
59
+
60
+ def save
61
+ File.open(@StateFile, 'w') do |file|
62
+ file.write(YAML.dump(@State))
63
+ end
64
+ end
65
+
66
+ private
67
+
68
+ def findStateFile(configList)
69
+ if configList.count == 1
70
+ configList.to_a.first.parent.to_s + '/.lmm.state.yaml'
71
+ else
72
+ # FIXME TODO
73
+ # Find common ancestor and use that as a path to the state file
74
+ raise 'Unimplemented!'
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,126 @@
1
+ require 'set'
2
+
3
+ module ConfigLMM
4
+ module Utils
5
+
6
+ class Filters
7
+
8
+ def self.parseLocationsOption(filter, logger)
9
+ self.parseFilters(filter.split(';'), logger)
10
+ end
11
+
12
+ def self.parseThingsOption(filter, logger)
13
+ self.parseFilters(filter.split(';'), logger)
14
+ end
15
+
16
+ def self.parseFilters(userFilters, logger)
17
+ filters = {
18
+ mode: :all # no filter
19
+ }
20
+ userFilters.each do |filter|
21
+ next if filter.empty?
22
+ filter = filter.downcase
23
+ colon = filter.index(':')
24
+ # TODO FIXME
25
+ end
26
+ filters
27
+ =begin
28
+ filters = {
29
+ mode: :all,
30
+ includeLocations: Set.new,
31
+ excludeLocations: Set.new,
32
+ }
33
+ warned = false
34
+ userFilters.each do |filter|
35
+ next if filter.empty?
36
+ filter = filter.downcase
37
+ colon = filter.index(':')
38
+ negate = false
39
+
40
+ if colon.nil?
41
+ category = 'tag'
42
+ if filter[0] == '!'
43
+ negate = true
44
+ content = filter[1..]
45
+ else
46
+ content = filter
47
+ end
48
+ else
49
+ category = filter[0, colon]
50
+ if category[0] == '!'
51
+ negate = true
52
+ category = category[1..]
53
+ end
54
+ content = filter[colon + 1..]
55
+ end
56
+
57
+ if content.empty?
58
+ logger.warn('Invalid filter, ignoring!')
59
+ next
60
+ end
61
+ content = Regexp.new(content[1..]) if content[0] == '/'
62
+
63
+ case category
64
+ when 'name'
65
+ filters[negate ? :excludeNames : :includeNames] << content
66
+ filters[:namesMode] = negate ? :exclude : :include if filters[:namesMode] == :all
67
+ when 'ext'
68
+ content = '.' + content if !content.is_a?(Regexp) && content[0] != '.'
69
+ filters[negate ? :excludeExtensions : :includeExtensions] << content
70
+ filters[:namesMode] = negate ? :exclude : :include if filters[:namesMode] == :all
71
+ when 'dir'
72
+ filters[negate ? :excludeDirectories : :includeDirectories] << content
73
+ filters[:namesMode] = negate ? :exclude : :include if filters[:namesMode] == :all
74
+ else
75
+ filters[negate ? :excludeTags : :includeTags] << content
76
+ filters[:tagsMode] = negate ? :exclude : :include if filters[:tagsMode] == :all
77
+ end
78
+ =end
79
+ end
80
+
81
+
82
+ def self.matches?(str, patterns)
83
+ return false if patterns.empty?
84
+ patterns.each do |pattern|
85
+ if pattern.is_a?(Regexp) && pattern.match?(str.downcase) ||
86
+ !pattern.is_a?(Regexp) && str.downcase == pattern
87
+ return true
88
+ end
89
+ end
90
+ false
91
+ end
92
+
93
+ def self.includePath?(path, inputFilters)
94
+ if inputFilters[:mode] == :include
95
+ # TODO FIXME
96
+ raise 'Unimplemented'
97
+ =begin
98
+ shouldInclude = self.matches?(path.extname, inputFilters[:includeExtensions])
99
+ shouldInclude = self.matches?(path.basename, inputFilters[:includeNames]) unless shouldInclude
100
+ shouldInclude = self.matches?(path.dirname.basename, inputFilters[:includeDirectories]) unless shouldInclude
101
+
102
+ shouldInclude = false if shouldInclude && self.matches?(path.extname, inputFilters[:excludeExtensions])
103
+ shouldInclude = false if shouldInclude && self.matches?(path.basename, inputFilters[:excludeNames])
104
+ shouldInclude = false if shouldInclude && self.matches?(path.dirname.basename, inputFilters[:excludeDirectories])
105
+ =end
106
+ elsif inputFilters[:mode] == :exclude
107
+ # TODO FIXME
108
+ raise 'Unimplemented'
109
+ =begin
110
+ shouldInclude = !self.matches?(path.extname, inputFilters[:excludeExtensions])
111
+ shouldInclude = !self.matches?(path.basename, inputFilters[:excludeNames]) if shouldInclude
112
+ shouldInclude = !self.matches?(path.dirname.basename, inputFilters[:excludeDirectories]) if shouldInclude
113
+
114
+ shouldInclude = true if !shouldInclude && self.matches?(path.extname, inputFilters[:includeExtensions])
115
+ shouldInclude = true if !shouldInclude && self.matches?(path.basename, inputFilters[:includeNames])
116
+ shouldInclude = true if !shouldInclude && self.matches?(path.dirname.basename, inputFilters[:includeDirectories])
117
+ =end
118
+ else # :mode == :all
119
+ shouldInclude = true
120
+ end
121
+ shouldInclude
122
+ end
123
+
124
+ end
125
+ end
126
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ConfigLMM
4
+ VERSION = '0.1.0'
5
+ end
data/lib/ConfigLMM.rb ADDED
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'ConfigLMM/version'
4
+ require_relative 'ConfigLMM/utils/filters'
5
+ require_relative 'ConfigLMM/io'
6
+ require_relative 'ConfigLMM/state'
data/sig/ConfigLMM.rbs ADDED
@@ -0,0 +1,4 @@
1
+ module ConfigLMM
2
+ VERSION: String
3
+ # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
+ end
metadata ADDED
@@ -0,0 +1,485 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ConfigLMM
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Dāvis Mosāns
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-07-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: addressable
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bcrypt_pbkdf
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: ed25519
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: faraday-retry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: faraday-multipart
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: fog-powerdns
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: http
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 5.1.1
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 5.1.1
111
+ - !ruby/object:Gem::Dependency
112
+ name: net-ssh
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: nokogiri
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: octokit
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: porkbun
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: public_suffix
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: xdg
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :runtime
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: webrick
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :runtime
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ - !ruby/object:Gem::Dependency
210
+ name: thor
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: '1.0'
216
+ type: :runtime
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '1.0'
223
+ - !ruby/object:Gem::Dependency
224
+ name: tty-command
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - ">="
228
+ - !ruby/object:Gem::Version
229
+ version: '0.10'
230
+ type: :runtime
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ">="
235
+ - !ruby/object:Gem::Version
236
+ version: '0.10'
237
+ - !ruby/object:Gem::Dependency
238
+ name: tty-logger
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - ">="
242
+ - !ruby/object:Gem::Version
243
+ version: '0.6'
244
+ type: :runtime
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - ">="
249
+ - !ruby/object:Gem::Version
250
+ version: '0.6'
251
+ - !ruby/object:Gem::Dependency
252
+ name: tty-option
253
+ requirement: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - ">="
256
+ - !ruby/object:Gem::Version
257
+ version: '0.1'
258
+ type: :runtime
259
+ prerelease: false
260
+ version_requirements: !ruby/object:Gem::Requirement
261
+ requirements:
262
+ - - ">="
263
+ - !ruby/object:Gem::Version
264
+ version: '0.1'
265
+ - !ruby/object:Gem::Dependency
266
+ name: tty-progressbar
267
+ requirement: !ruby/object:Gem::Requirement
268
+ requirements:
269
+ - - ">="
270
+ - !ruby/object:Gem::Version
271
+ version: '0.18'
272
+ type: :runtime
273
+ prerelease: false
274
+ version_requirements: !ruby/object:Gem::Requirement
275
+ requirements:
276
+ - - ">="
277
+ - !ruby/object:Gem::Version
278
+ version: '0.18'
279
+ - !ruby/object:Gem::Dependency
280
+ name: tty-prompt
281
+ requirement: !ruby/object:Gem::Requirement
282
+ requirements:
283
+ - - ">="
284
+ - !ruby/object:Gem::Version
285
+ version: '0.23'
286
+ type: :runtime
287
+ prerelease: false
288
+ version_requirements: !ruby/object:Gem::Requirement
289
+ requirements:
290
+ - - ">="
291
+ - !ruby/object:Gem::Version
292
+ version: '0.23'
293
+ - !ruby/object:Gem::Dependency
294
+ name: tty-spinner
295
+ requirement: !ruby/object:Gem::Requirement
296
+ requirements:
297
+ - - ">="
298
+ - !ruby/object:Gem::Version
299
+ version: '0.9'
300
+ type: :runtime
301
+ prerelease: false
302
+ version_requirements: !ruby/object:Gem::Requirement
303
+ requirements:
304
+ - - ">="
305
+ - !ruby/object:Gem::Version
306
+ version: '0.9'
307
+ - !ruby/object:Gem::Dependency
308
+ name: tty-which
309
+ requirement: !ruby/object:Gem::Requirement
310
+ requirements:
311
+ - - ">="
312
+ - !ruby/object:Gem::Version
313
+ version: '0.4'
314
+ type: :runtime
315
+ prerelease: false
316
+ version_requirements: !ruby/object:Gem::Requirement
317
+ requirements:
318
+ - - ">="
319
+ - !ruby/object:Gem::Version
320
+ version: '0.4'
321
+ - !ruby/object:Gem::Dependency
322
+ name: yard
323
+ requirement: !ruby/object:Gem::Requirement
324
+ requirements:
325
+ - - ">="
326
+ - !ruby/object:Gem::Version
327
+ version: '0'
328
+ type: :development
329
+ prerelease: false
330
+ version_requirements: !ruby/object:Gem::Requirement
331
+ requirements:
332
+ - - ">="
333
+ - !ruby/object:Gem::Version
334
+ version: '0'
335
+ - !ruby/object:Gem::Dependency
336
+ name: simplecov
337
+ requirement: !ruby/object:Gem::Requirement
338
+ requirements:
339
+ - - ">="
340
+ - !ruby/object:Gem::Version
341
+ version: '0'
342
+ type: :development
343
+ prerelease: false
344
+ version_requirements: !ruby/object:Gem::Requirement
345
+ requirements:
346
+ - - ">="
347
+ - !ruby/object:Gem::Version
348
+ version: '0'
349
+ description: ConfigLMM is Configuration Management Manager that can build and deploy
350
+ your configuration to different providers like Puppet, Chef, Terraform and others.
351
+ email:
352
+ - davispuh@gmail.com
353
+ executables:
354
+ - configlmm
355
+ extensions: []
356
+ extra_rdoc_files: []
357
+ files:
358
+ - ".rspec"
359
+ - ".yardopts"
360
+ - CHANGELOG.md
361
+ - Examples/Android.mm.yaml
362
+ - Examples/Apps/Blog.mm.yaml
363
+ - Examples/Apps/Jellyfin.mm.yaml
364
+ - Examples/Implemented.mm.yaml
365
+ - Examples/Keys.ini
366
+ - Examples/Linux.mm.yaml
367
+ - Examples/Windows.mm.yaml
368
+ - Examples/configlmmAuth.sh
369
+ - Plugins/Apps/ArchiSteamFarm/ArchiSteamFarm.conf.erb
370
+ - Plugins/Apps/ArchiSteamFarm/ArchiSteamFarm.lmm.rb
371
+ - Plugins/Apps/IPFS/IPFS.conf.erb
372
+ - Plugins/Apps/IPFS/IPFS.lmm.rb
373
+ - Plugins/Apps/InfluxDB/InfluxDB.conf.erb
374
+ - Plugins/Apps/InfluxDB/InfluxDB.lmm.rb
375
+ - Plugins/Apps/Jackett/Jackett.conf.erb
376
+ - Plugins/Apps/Jackett/Jackett.lmm.rb
377
+ - Plugins/Apps/Jellyfin/Jellyfin.conf.erb
378
+ - Plugins/Apps/Jellyfin/Jellyfin.lmm.rb
379
+ - Plugins/Apps/Mastodon/Mastodon.conf.erb
380
+ - Plugins/Apps/Mastodon/Mastodon.lmm.rb
381
+ - Plugins/Apps/Matrix/Matrix.conf.erb
382
+ - Plugins/Apps/Matrix/Matrix.lmm.rb
383
+ - Plugins/Apps/Netdata/Netdata.conf.erb
384
+ - Plugins/Apps/Netdata/Netdata.lmm.rb
385
+ - Plugins/Apps/Nextcloud/Nextcloud.conf.erb
386
+ - Plugins/Apps/Nextcloud/Nextcloud.lmm.rb
387
+ - Plugins/Apps/Nginx/config-lmm/errors.conf
388
+ - Plugins/Apps/Nginx/config-lmm/private.conf
389
+ - Plugins/Apps/Nginx/config-lmm/proxy.conf
390
+ - Plugins/Apps/Nginx/config-lmm/public.conf
391
+ - Plugins/Apps/Nginx/config-lmm/ssl.conf
392
+ - Plugins/Apps/Nginx/main.conf
393
+ - Plugins/Apps/Nginx/nginx.conf
394
+ - Plugins/Apps/Nginx/nginx.lmm.rb
395
+ - Plugins/Apps/Nginx/proxy.conf.erb
396
+ - Plugins/Apps/Odoo/Odoo.conf.erb
397
+ - Plugins/Apps/Odoo/Odoo.lmm.rb
398
+ - Plugins/Apps/Pterodactyl/Pterodactyl.conf.erb
399
+ - Plugins/Apps/Pterodactyl/Pterodactyl.lmm.rb
400
+ - Plugins/Apps/Pterodactyl/Wings.conf.erb
401
+ - Plugins/Apps/Sunshine/Sunshine.conf.erb
402
+ - Plugins/Apps/Sunshine/Sunshine.lmm.rb
403
+ - Plugins/Apps/Vaultwarden/Vaultwarden.conf.erb
404
+ - Plugins/Apps/Vaultwarden/Vaultwarden.lmm.rb
405
+ - Plugins/Apps/bitmagnet/bitmagnet.conf.erb
406
+ - Plugins/Apps/bitmagnet/bitmagnet.lmm.rb
407
+ - Plugins/Apps/gollum/config.ru
408
+ - Plugins/Apps/gollum/gollum.conf.erb
409
+ - Plugins/Apps/gollum/gollum.lmm.rb
410
+ - Plugins/OS/Linux.lmm.rb
411
+ - Plugins/OS/Routers/Aruba/ArubaInstant.lmm.rb
412
+ - Plugins/Platforms/GitHub.lmm.rb
413
+ - Plugins/Platforms/GoDaddy/GoDaddy.lmm.rb
414
+ - Plugins/Platforms/GoDaddy/zone.txt.erb
415
+ - Plugins/Platforms/porkbun.lmm.rb
416
+ - Plugins/Platforms/porkbun_spec.rb
417
+ - Plugins/Services/DNS/AmberBit.lmm.rb
418
+ - Plugins/Services/DNS/ArubaItDNS.lmm.rb
419
+ - Plugins/Services/DNS/NICLV.lmm.rb
420
+ - Plugins/Services/DNS/PowerDNS.lmm.rb
421
+ - Plugins/Services/DNS/tonic.lmm.rb
422
+ - README.md
423
+ - Rakefile
424
+ - UNLICENSE
425
+ - bin/configlmm
426
+ - bin/console
427
+ - bin/setup
428
+ - lib/ConfigLMM.rb
429
+ - lib/ConfigLMM/Framework.rb
430
+ - lib/ConfigLMM/Framework/plugins.rb
431
+ - lib/ConfigLMM/Framework/plugins/dns.rb
432
+ - lib/ConfigLMM/Framework/plugins/errors.rb
433
+ - lib/ConfigLMM/Framework/plugins/nginxApp.rb
434
+ - lib/ConfigLMM/Framework/plugins/plugin.rb
435
+ - lib/ConfigLMM/Framework/plugins/ssh.rb
436
+ - lib/ConfigLMM/Framework/plugins/store.rb
437
+ - lib/ConfigLMM/Framework/registrator.rb
438
+ - lib/ConfigLMM/LMM.rb
439
+ - lib/ConfigLMM/LMM/plugins.rb
440
+ - lib/ConfigLMM/cli.rb
441
+ - lib/ConfigLMM/command.rb
442
+ - lib/ConfigLMM/commands/build.rb
443
+ - lib/ConfigLMM/commands/cleanup.rb
444
+ - lib/ConfigLMM/commands/configsCommand.rb
445
+ - lib/ConfigLMM/commands/deploy.rb
446
+ - lib/ConfigLMM/commands/diff.rb
447
+ - lib/ConfigLMM/commands/list.rb
448
+ - lib/ConfigLMM/commands/refresh.rb
449
+ - lib/ConfigLMM/commands/types.rb
450
+ - lib/ConfigLMM/commands/validate.rb
451
+ - lib/ConfigLMM/context.rb
452
+ - lib/ConfigLMM/io.rb
453
+ - lib/ConfigLMM/io/configList.rb
454
+ - lib/ConfigLMM/io/path.rb
455
+ - lib/ConfigLMM/io/source.rb
456
+ - lib/ConfigLMM/state.rb
457
+ - lib/ConfigLMM/utils/filters.rb
458
+ - lib/ConfigLMM/version.rb
459
+ - sig/ConfigLMM.rbs
460
+ homepage: https://github.com/davispuh/ConfigLMM
461
+ licenses: []
462
+ metadata:
463
+ homepage_uri: https://github.com/davispuh/ConfigLMM
464
+ source_code_uri: https://github.com/davispuh/ConfigLMM
465
+ changelog_uri: https://github.com/davispuh/ConfigLMM/CHANGELOG.md
466
+ post_install_message:
467
+ rdoc_options: []
468
+ require_paths:
469
+ - lib
470
+ required_ruby_version: !ruby/object:Gem::Requirement
471
+ requirements:
472
+ - - ">="
473
+ - !ruby/object:Gem::Version
474
+ version: 3.0.0
475
+ required_rubygems_version: !ruby/object:Gem::Requirement
476
+ requirements:
477
+ - - ">="
478
+ - !ruby/object:Gem::Version
479
+ version: '0'
480
+ requirements: []
481
+ rubygems_version: 3.5.11
482
+ signing_key:
483
+ specification_version: 4
484
+ summary: Manage configuration for your applications/systems/services/servers
485
+ test_files: []