ConfigLMM 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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: []