sct 1.10.4 → 1.11.3

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: d431beaeb0cf29317c89db4a01ce1e4b739a84e9482b6195c5a262e7237852f7
4
- data.tar.gz: b59d7f44ec721c3818b91bcd652bfbf1ac94202a49731caa18071c7cabca9e7a
3
+ metadata.gz: 83b5089b7b2e78f5a4b94b62278fa9159e60f1e70654eb65921e59f3b2c69d8e
4
+ data.tar.gz: 8967410c1dbbfc370d64b6744f93cc76ac01be25db05967d4830cc515292a0db
5
5
  SHA512:
6
- metadata.gz: a1cca40f38a55f25ff6f531979928b3d6f871f273af5f8015098a98301f19512240ba33c8ab8bc3e7f6611c610827b52e91786e80334fd9310ee366f73cdfe71
7
- data.tar.gz: a6e71317f10ebd0535208e3ae1cafb606faec39d4b2c93880b1750754ff35103472c511fd8eef32c5b35e604d8a3a74d6375f5b9b03dfb21ba1d04de56a3d26f
6
+ metadata.gz: 077e1d0700e0a844cc430bda5ec36016056325a3ec5afa272321ce85da4aaa7dc0a5575011b73fd0973a8a94d80efbde84fc88c193549826c5d0b4e8bd5dbad2
7
+ data.tar.gz: 8599299496eafc2f35e5ca362d10a2caf37883d174a68b8dddaf898cf54164e8830d033607ba7197f0ef8954ee66288f757dc4bc4122817b1e1c646f1450169e
@@ -25,6 +25,8 @@ module Cluster
25
25
  ENV[KEY_CADDYFILE_PATH] = './docker/caddy/Caddyfile-nuxt'
26
26
  end
27
27
 
28
+ dc "down --remove-orphans"
29
+
28
30
  if options.pull
29
31
  dc "pull"
30
32
  end
@@ -35,12 +37,12 @@ module Cluster
35
37
 
36
38
  run "docker container prune -f"
37
39
 
38
- dc "up --detach --remove-orphans --force-recreate --always-recreate-deps"
39
-
40
40
  if options.pull or options.build
41
41
  system "docker image prune -f"
42
42
  end
43
43
 
44
+ dc "up --detach --remove-orphans"
45
+
44
46
  UI.success("\n\e[32m✔️ You can visit your environment at \e[4;36m👉 https://spend-cloud.dev.spend.cloud \e[0m👌\n\n\e[33mFront-end developers should run \e[1mpnpm run dev\e[0;33m within \e[1m/spend-cloud/ui\e[0;33m and work with their dev server.\e[0m\n\e[34mIt proxies to your development API.\e[0m\n")
45
47
  end
46
48
 
@@ -92,7 +92,7 @@ module Henk
92
92
  c.validate options
93
93
  options.dev = $dev
94
94
  options.verbose = $verbose
95
- Henk::Runner.new.henk 'remove', options
95
+ Henk::Runner.new.remove_customer options.domain
96
96
  end
97
97
  end
98
98
 
@@ -4,6 +4,24 @@ module Henk
4
4
  class Runner
5
5
  attr_accessor :options_mapping
6
6
 
7
+ # Tables in spend-cloud-config database that have a client_id column
8
+ # These will be cleaned up when removing a customer
9
+ # This list matches the production Go service deleteClient function
10
+ CONFIG_TABLES_WITH_CLIENT_ID = [
11
+ '00_settings',
12
+ '01_settings',
13
+ '02_settings',
14
+ '03_settings',
15
+ '04_settings',
16
+ '05_settings',
17
+ '06_settings',
18
+ '07_settings',
19
+ '08_settings',
20
+ '06_settings_external_supplier',
21
+ 'translation_settings',
22
+ 'client_module'
23
+ ].freeze
24
+
7
25
  def initialize
8
26
  @options_mapping = {
9
27
  "organization_name" => {
@@ -180,7 +198,9 @@ module Henk
180
198
  begin
181
199
  zip = download_and_unzip dump_url, dir
182
200
 
183
- customer = zip.slice 0, zip.rindex("_")
201
+ # Extract customer name from zip filename (format: customer_timestamp or just customer)
202
+ underscore_index = zip.rindex("_")
203
+ customer = underscore_index ? zip.slice(0, underscore_index) : zip
184
204
 
185
205
  customer_database = customer.gsub "-", "_"
186
206
 
@@ -207,7 +227,7 @@ module Henk
207
227
 
208
228
  run "unzip #{zip_path} -d #{dir}"
209
229
 
210
- zip = File.basename zip_path
230
+ File.basename zip_path, ".zip"
211
231
  end
212
232
 
213
233
  def remove_customer customer
@@ -216,14 +236,60 @@ module Henk
216
236
  if local_customers.include? customer
217
237
  puts "Customer already exists. Removing customer before importing...".yellow
218
238
 
219
- run "sct henk remove --domain #{customer}"
239
+ customer_database = customer.gsub "-", "_"
240
+
241
+ remove_customer_from_config_database customer
242
+
243
+ puts "Dropping database #{customer_database}...".blue
244
+ run_query "DROP DATABASE IF EXISTS `#{customer_database}`"
245
+
246
+ puts "Removing customer from proactive_accounts.ini...".blue
247
+ run "docker exec proactive-config sed -i '/^\\[#{customer}\\]/,/^$/d' /data/proactive_accounts.ini"
248
+
249
+ puts "Removing customer data directory...".blue
250
+ run "docker exec proactive-config rm -rf /data/#{customer}"
220
251
 
221
252
  puts "Removed existing customer".green
222
253
  end
223
254
  end
224
255
 
256
+ def remove_customer_from_config_database customer
257
+ puts "Finding client_id for #{customer}...".blue
258
+ client_id_result = `docker exec mysql-service mysql -u root -sN -e 'SELECT client_id FROM \`spend-cloud-config\`.\`00_settings\` WHERE \`043\` = "#{customer}"'`.strip
259
+
260
+ if !client_id_result.empty?
261
+ client_id = client_id_result.to_i
262
+ puts "Found client_id: #{client_id}".blue
263
+
264
+ puts "Removing customer from #{CONFIG_TABLES_WITH_CLIENT_ID.length} config tables...".blue
265
+ delete_client_data_from_tables client_id
266
+
267
+ puts "Removing customer from client table...".blue
268
+ run_query "DELETE FROM `client` WHERE `id` = #{client_id}", database: "spend-cloud-config"
269
+
270
+ puts "Removed all config database entries".green
271
+ else
272
+ puts "Warning: ".yellow + "Could not find client_id in config database, attempting cleanup with domain name only"
273
+ run_query "DELETE FROM `00_settings` WHERE `043` = \"#{customer}\"", database: "spend-cloud-config"
274
+ end
275
+ end
276
+
277
+ def delete_client_data_from_tables client_id
278
+ CONFIG_TABLES_WITH_CLIENT_ID.each do |table|
279
+ next if table == 'client'
280
+
281
+ puts " Deleting from #{table}...".blue
282
+ run_query "DELETE FROM `#{table}` WHERE `client_id` = #{client_id}", database: "spend-cloud-config"
283
+ end
284
+
285
+ puts " Cleaning up orphaned records...".blue
286
+ run_query "DELETE FROM `01_settings_extra_velden` WHERE `settings_id` NOT IN (SELECT `id` FROM `01_settings`)", database: "spend-cloud-config"
287
+ run_query "DELETE FROM `04_settings_contractgegevens` WHERE `settings_id` NOT IN (SELECT `id` FROM `04_settings`)", database: "spend-cloud-config"
288
+ end
289
+
225
290
  def copy_db_encryption_key customer, dir
226
- run "docker exec --user www-data proactive-config mkdir /data/#{customer}"
291
+ run "docker exec proactive-config mkdir -p /data/#{customer}"
292
+ run "docker exec proactive-config chown www-data:www-data /data/#{customer}"
227
293
  run "docker cp #{dir}/db_encryption.key proactive-config:/data/#{customer}/"
228
294
 
229
295
  puts "Copied db_encryption.key to proactive-config:/data/#{customer}/".green
@@ -1,3 +1,3 @@
1
1
  module Sct
2
- VERSION = "1.10.4"
2
+ VERSION = "1.11.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sct
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.10.4
4
+ version: 1.11.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Reshad Farid
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-06-16 00:00:00.000000000 Z
11
+ date: 2025-10-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colored
@@ -30,42 +30,42 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 4.4.7
33
+ version: '4.6'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 4.4.7
40
+ version: '4.6'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: highline
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 1.7.2
47
+ version: '2.0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 1.7.2
54
+ version: '2.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: terminal-table
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.8'
61
+ version: '3.0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '1.8'
68
+ version: '3.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: excon
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -106,54 +106,42 @@ dependencies:
106
106
  requirements:
107
107
  - - "~>"
108
108
  - !ruby/object:Gem::Version
109
- version: 4.17.0
109
+ version: '4.19'
110
110
  type: :runtime
111
111
  prerelease: false
112
112
  version_requirements: !ruby/object:Gem::Requirement
113
113
  requirements:
114
114
  - - "~>"
115
115
  - !ruby/object:Gem::Version
116
- version: 4.17.0
116
+ version: '4.19'
117
117
  - !ruby/object:Gem::Dependency
118
118
  name: tty-screen
119
119
  requirement: !ruby/object:Gem::Requirement
120
120
  requirements:
121
- - - ">="
122
- - !ruby/object:Gem::Version
123
- version: 0.6.3
124
- - - "<"
121
+ - - "~>"
125
122
  - !ruby/object:Gem::Version
126
- version: 1.0.0
123
+ version: '0.8'
127
124
  type: :runtime
128
125
  prerelease: false
129
126
  version_requirements: !ruby/object:Gem::Requirement
130
127
  requirements:
131
- - - ">="
132
- - !ruby/object:Gem::Version
133
- version: 0.6.3
134
- - - "<"
128
+ - - "~>"
135
129
  - !ruby/object:Gem::Version
136
- version: 1.0.0
130
+ version: '0.8'
137
131
  - !ruby/object:Gem::Dependency
138
132
  name: tty-spinner
139
133
  requirement: !ruby/object:Gem::Requirement
140
134
  requirements:
141
- - - ">="
142
- - !ruby/object:Gem::Version
143
- version: 0.8.0
144
- - - "<"
135
+ - - "~>"
145
136
  - !ruby/object:Gem::Version
146
- version: 1.0.0
137
+ version: '0.9'
147
138
  type: :runtime
148
139
  prerelease: false
149
140
  version_requirements: !ruby/object:Gem::Requirement
150
141
  requirements:
151
- - - ">="
152
- - !ruby/object:Gem::Version
153
- version: 0.8.0
154
- - - "<"
142
+ - - "~>"
155
143
  - !ruby/object:Gem::Version
156
- version: 1.0.0
144
+ version: '0.9'
157
145
  - !ruby/object:Gem::Dependency
158
146
  name: bundler
159
147
  requirement: !ruby/object:Gem::Requirement
@@ -174,28 +162,28 @@ dependencies:
174
162
  requirements:
175
163
  - - "~>"
176
164
  - !ruby/object:Gem::Version
177
- version: '10.0'
165
+ version: '13.0'
178
166
  type: :development
179
167
  prerelease: false
180
168
  version_requirements: !ruby/object:Gem::Requirement
181
169
  requirements:
182
170
  - - "~>"
183
171
  - !ruby/object:Gem::Version
184
- version: '10.0'
172
+ version: '13.0'
185
173
  - !ruby/object:Gem::Dependency
186
174
  name: rspec
187
175
  requirement: !ruby/object:Gem::Requirement
188
176
  requirements:
189
177
  - - "~>"
190
178
  - !ruby/object:Gem::Version
191
- version: '3.0'
179
+ version: '3.12'
192
180
  type: :development
193
181
  prerelease: false
194
182
  version_requirements: !ruby/object:Gem::Requirement
195
183
  requirements:
196
184
  - - "~>"
197
185
  - !ruby/object:Gem::Version
198
- version: '3.0'
186
+ version: '3.12'
199
187
  description: Spend Cloud Tool enables to setup a local development environment for
200
188
  the Spend Cloud.
201
189
  email:
@@ -253,22 +241,22 @@ metadata:
253
241
  post_install_message:
254
242
  rdoc_options: []
255
243
  require_paths:
256
- - sct/lib
244
+ - cluster/lib
257
245
  - henk/lib
246
+ - sct/lib
258
247
  - sct_core/lib
259
- - cluster/lib
260
248
  required_ruby_version: !ruby/object:Gem::Requirement
261
249
  requirements:
262
250
  - - ">="
263
251
  - !ruby/object:Gem::Version
264
- version: 2.0.0
252
+ version: 2.7.0
265
253
  required_rubygems_version: !ruby/object:Gem::Requirement
266
254
  requirements:
267
255
  - - ">="
268
256
  - !ruby/object:Gem::Version
269
257
  version: '0'
270
258
  requirements: []
271
- rubygems_version: 3.0.3
259
+ rubygems_version: 3.5.22
272
260
  signing_key:
273
261
  specification_version: 4
274
262
  summary: Spend Cloud Tool.