kstlib 1.1.0__tar.gz → 1.1.1__tar.gz

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 (169) hide show
  1. {kstlib-1.1.0/src/kstlib.egg-info → kstlib-1.1.1}/PKG-INFO +1 -1
  2. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cli/commands/secrets/common.py +43 -0
  3. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cli/commands/secrets/encrypt.py +4 -4
  4. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/meta.py +1 -1
  5. {kstlib-1.1.0 → kstlib-1.1.1/src/kstlib.egg-info}/PKG-INFO +1 -1
  6. {kstlib-1.1.0 → kstlib-1.1.1}/LICENSE.md +0 -0
  7. {kstlib-1.1.0 → kstlib-1.1.1}/MANIFEST.in +0 -0
  8. {kstlib-1.1.0 → kstlib-1.1.1}/README.md +0 -0
  9. {kstlib-1.1.0 → kstlib-1.1.1}/pyproject.toml +0 -0
  10. {kstlib-1.1.0 → kstlib-1.1.1}/setup.cfg +0 -0
  11. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/__init__.py +0 -0
  12. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/__main__.py +0 -0
  13. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/alerts/__init__.py +0 -0
  14. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/alerts/channels/__init__.py +0 -0
  15. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/alerts/channels/base.py +0 -0
  16. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/alerts/channels/email.py +0 -0
  17. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/alerts/channels/slack.py +0 -0
  18. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/alerts/exceptions.py +0 -0
  19. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/alerts/manager.py +0 -0
  20. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/alerts/models.py +0 -0
  21. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/alerts/throttle.py +0 -0
  22. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/auth/__init__.py +0 -0
  23. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/auth/callback.py +0 -0
  24. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/auth/config.py +0 -0
  25. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/auth/errors.py +0 -0
  26. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/auth/models.py +0 -0
  27. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/auth/providers/__init__.py +0 -0
  28. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/auth/providers/base.py +0 -0
  29. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/auth/providers/oauth2.py +0 -0
  30. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/auth/providers/oidc.py +0 -0
  31. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/auth/session.py +0 -0
  32. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/auth/token.py +0 -0
  33. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cache/__init__.py +0 -0
  34. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cache/decorator.py +0 -0
  35. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cache/strategies.py +0 -0
  36. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cli/__init__.py +0 -0
  37. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cli/app.py +0 -0
  38. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cli/commands/__init__.py +0 -0
  39. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cli/commands/auth/__init__.py +0 -0
  40. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cli/commands/auth/common.py +0 -0
  41. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cli/commands/auth/login.py +0 -0
  42. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cli/commands/auth/logout.py +0 -0
  43. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cli/commands/auth/providers.py +0 -0
  44. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cli/commands/auth/status.py +0 -0
  45. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cli/commands/auth/token.py +0 -0
  46. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cli/commands/auth/whoami.py +0 -0
  47. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cli/commands/config.py +0 -0
  48. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cli/commands/ops/__init__.py +0 -0
  49. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cli/commands/ops/attach.py +0 -0
  50. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cli/commands/ops/common.py +0 -0
  51. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cli/commands/ops/list_sessions.py +0 -0
  52. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cli/commands/ops/logs.py +0 -0
  53. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cli/commands/ops/start.py +0 -0
  54. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cli/commands/ops/status.py +0 -0
  55. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cli/commands/ops/stop.py +0 -0
  56. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cli/commands/rapi/__init__.py +0 -0
  57. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cli/commands/rapi/call.py +0 -0
  58. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cli/commands/rapi/list.py +0 -0
  59. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cli/commands/rapi/show.py +0 -0
  60. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cli/commands/secrets/__init__.py +0 -0
  61. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cli/commands/secrets/decrypt.py +0 -0
  62. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cli/commands/secrets/doctor.py +0 -0
  63. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cli/commands/secrets/shred.py +0 -0
  64. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/cli/common.py +0 -0
  65. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/config/__init__.py +0 -0
  66. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/config/exceptions.py +0 -0
  67. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/config/export.py +0 -0
  68. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/config/loader.py +0 -0
  69. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/config/sops.py +0 -0
  70. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/db/__init__.py +0 -0
  71. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/db/aiosqlcipher.py +0 -0
  72. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/db/cipher.py +0 -0
  73. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/db/database.py +0 -0
  74. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/db/exceptions.py +0 -0
  75. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/db/pool.py +0 -0
  76. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/helpers/__init__.py +0 -0
  77. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/helpers/exceptions.py +0 -0
  78. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/helpers/time_trigger.py +0 -0
  79. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/kstlib.conf.yml +0 -0
  80. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/limits.py +0 -0
  81. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/logging/__init__.py +0 -0
  82. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/logging/manager.py +0 -0
  83. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/mail/__init__.py +0 -0
  84. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/mail/builder.py +0 -0
  85. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/mail/exceptions.py +0 -0
  86. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/mail/filesystem.py +0 -0
  87. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/mail/transport.py +0 -0
  88. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/mail/transports/__init__.py +0 -0
  89. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/mail/transports/gmail.py +0 -0
  90. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/mail/transports/resend.py +0 -0
  91. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/mail/transports/smtp.py +0 -0
  92. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/metrics/__init__.py +0 -0
  93. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/metrics/decorators.py +0 -0
  94. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/metrics/exceptions.py +0 -0
  95. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/monitoring/__init__.py +0 -0
  96. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/monitoring/_styles.py +0 -0
  97. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/monitoring/cell.py +0 -0
  98. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/monitoring/config.py +0 -0
  99. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/monitoring/delivery.py +0 -0
  100. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/monitoring/exceptions.py +0 -0
  101. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/monitoring/image.py +0 -0
  102. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/monitoring/kv.py +0 -0
  103. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/monitoring/list.py +0 -0
  104. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/monitoring/metric.py +0 -0
  105. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/monitoring/monitoring.py +0 -0
  106. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/monitoring/renderer.py +0 -0
  107. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/monitoring/service.py +0 -0
  108. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/monitoring/table.py +0 -0
  109. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/monitoring/types.py +0 -0
  110. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/ops/__init__.py +0 -0
  111. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/ops/base.py +0 -0
  112. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/ops/container.py +0 -0
  113. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/ops/exceptions.py +0 -0
  114. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/ops/manager.py +0 -0
  115. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/ops/models.py +0 -0
  116. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/ops/tmux.py +0 -0
  117. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/ops/validators.py +0 -0
  118. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/py.typed +0 -0
  119. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/rapi/__init__.py +0 -0
  120. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/rapi/client.py +0 -0
  121. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/rapi/config.py +0 -0
  122. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/rapi/credentials.py +0 -0
  123. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/rapi/exceptions.py +0 -0
  124. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/resilience/__init__.py +0 -0
  125. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/resilience/circuit_breaker.py +0 -0
  126. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/resilience/exceptions.py +0 -0
  127. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/resilience/heartbeat.py +0 -0
  128. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/resilience/rate_limiter.py +0 -0
  129. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/resilience/shutdown.py +0 -0
  130. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/resilience/watchdog.py +0 -0
  131. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/secrets/__init__.py +0 -0
  132. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/secrets/exceptions.py +0 -0
  133. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/secrets/models.py +0 -0
  134. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/secrets/providers/__init__.py +0 -0
  135. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/secrets/providers/base.py +0 -0
  136. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/secrets/providers/environment.py +0 -0
  137. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/secrets/providers/keyring.py +0 -0
  138. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/secrets/providers/kms.py +0 -0
  139. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/secrets/providers/kwargs.py +0 -0
  140. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/secrets/providers/sops.py +0 -0
  141. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/secrets/resolver.py +0 -0
  142. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/secrets/sensitive.py +0 -0
  143. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/secure/__init__.py +0 -0
  144. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/secure/fs.py +0 -0
  145. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/secure/permissions.py +0 -0
  146. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/ssl.py +0 -0
  147. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/ui/__init__.py +0 -0
  148. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/ui/exceptions.py +0 -0
  149. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/ui/panels.py +0 -0
  150. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/ui/spinner.py +0 -0
  151. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/ui/tables.py +0 -0
  152. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/utils/__init__.py +0 -0
  153. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/utils/dict.py +0 -0
  154. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/utils/formatting.py +0 -0
  155. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/utils/http_trace.py +0 -0
  156. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/utils/lazy.py +0 -0
  157. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/utils/secure_delete.py +0 -0
  158. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/utils/serialization.py +0 -0
  159. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/utils/text.py +0 -0
  160. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/utils/validators.py +0 -0
  161. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/websocket/__init__.py +0 -0
  162. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/websocket/exceptions.py +0 -0
  163. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/websocket/manager.py +0 -0
  164. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib/websocket/models.py +0 -0
  165. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib.egg-info/SOURCES.txt +0 -0
  166. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib.egg-info/dependency_links.txt +0 -0
  167. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib.egg-info/entry_points.txt +0 -0
  168. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib.egg-info/requires.txt +0 -0
  169. {kstlib-1.1.0 → kstlib-1.1.1}/src/kstlib.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kstlib
3
- Version: 1.1.0
3
+ Version: 1.1.1
4
4
  Summary: Config-driven helpers for Python projects (dynamic config, secure secrets, preset logging, and more…)
5
5
  Author-email: Michel TRUONG <michel.truong@gmail.com>
6
6
  Maintainer-email: Michel TRUONG <michel.truong@gmail.com>
@@ -222,6 +222,48 @@ def run_sops_command(binary: str, arguments: list[str]) -> CompletedProcess[str]
222
222
  )
223
223
 
224
224
 
225
+ def find_sops_config(start_path: Path | None = None) -> Path | None:
226
+ """Find .sops.yaml by searching from start_path up to root, then home.
227
+
228
+ This mimics the native sops behavior which searches for configuration
229
+ files starting from the current directory and walking up to the root,
230
+ then falling back to the user home directory.
231
+
232
+ Args:
233
+ start_path: Directory to start searching from. If None, uses cwd.
234
+
235
+ Returns:
236
+ Path to .sops.yaml if found, None otherwise.
237
+ """
238
+ config_name = ".sops.yaml"
239
+
240
+ # Start from provided path or current working directory
241
+ if start_path is not None:
242
+ current = start_path.resolve()
243
+ if current.is_file():
244
+ current = current.parent
245
+ else:
246
+ current = Path.cwd()
247
+
248
+ # Walk up the directory tree
249
+ while True:
250
+ candidate = current / config_name
251
+ if candidate.is_file():
252
+ return candidate
253
+ parent = current.parent
254
+ if parent == current:
255
+ # Reached root
256
+ break
257
+ current = parent
258
+
259
+ # Fallback to home directory
260
+ home_config = Path.home() / config_name
261
+ if home_config.is_file():
262
+ return home_config
263
+
264
+ return None
265
+
266
+
225
267
  def resolve_sops_binary() -> str:
226
268
  """Return the configured sops binary name if set, otherwise the default."""
227
269
  default_binary = "sops"
@@ -418,6 +460,7 @@ __all__ = [
418
460
  "Path",
419
461
  "SecureDeleteCLIOptions",
420
462
  "ShredCommandOptions",
463
+ "find_sops_config",
421
464
  "format_arguments",
422
465
  "resolve_sops_binary",
423
466
  "run_sops_command",
@@ -2,7 +2,6 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from pathlib import Path
6
5
  from typing import TYPE_CHECKING
7
6
 
8
7
  import typer
@@ -31,7 +30,9 @@ from .common import (
31
30
  SHRED_PASSES_OPTION,
32
31
  SHRED_ZERO_LAST_OPTION,
33
32
  EncryptCommandOptions,
33
+ Path,
34
34
  SecureDeleteCLIOptions,
35
+ find_sops_config,
35
36
  format_arguments,
36
37
  resolve_sops_binary,
37
38
  run_sops_command,
@@ -213,9 +214,8 @@ def encrypt(
213
214
  binary = resolve_sops_binary()
214
215
  effective_config = config
215
216
  if effective_config is None:
216
- default_config = Path.home() / ".sops.yaml"
217
- if default_config.exists():
218
- effective_config = default_config
217
+ # Search for .sops.yaml from source file directory up to root, then home
218
+ effective_config = find_sops_config(source)
219
219
 
220
220
  options = EncryptCommandOptions(
221
221
  out=out,
@@ -39,7 +39,7 @@ __logo__ = (
39
39
  )
40
40
 
41
41
  __app_name__ = "kstlib"
42
- __version__ = "1.1.0"
42
+ __version__ = "1.1.1"
43
43
  __description__ = (
44
44
  "Config-driven helpers for Python projects (dynamic config, secure secrets, preset logging, and more…)"
45
45
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kstlib
3
- Version: 1.1.0
3
+ Version: 1.1.1
4
4
  Summary: Config-driven helpers for Python projects (dynamic config, secure secrets, preset logging, and more…)
5
5
  Author-email: Michel TRUONG <michel.truong@gmail.com>
6
6
  Maintainer-email: Michel TRUONG <michel.truong@gmail.com>
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes