nvoi 0.1.8 → 0.2.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 (110) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -5
  3. data/Gemfile.lock +17 -8
  4. data/Rakefile +1 -1
  5. data/lib/nvoi/cli/config/command.rb +46 -41
  6. data/lib/nvoi/cli/credentials/edit/command.rb +20 -20
  7. data/lib/nvoi/cli/credentials/show/command.rb +1 -1
  8. data/lib/nvoi/cli/db/command.rb +10 -10
  9. data/lib/nvoi/cli/delete/command.rb +2 -2
  10. data/lib/nvoi/cli/deploy/command.rb +2 -2
  11. data/lib/nvoi/cli/deploy/steps/configure_tunnel.rb +2 -2
  12. data/lib/nvoi/cli/deploy/steps/provision_server.rb +1 -1
  13. data/lib/nvoi/cli/deploy/steps/provision_volume.rb +1 -1
  14. data/lib/nvoi/cli/exec/command.rb +3 -3
  15. data/lib/nvoi/cli/logs/command.rb +2 -2
  16. data/lib/nvoi/cli/onboard/command.rb +176 -622
  17. data/lib/nvoi/cli/onboard/steps/app.rb +108 -0
  18. data/lib/nvoi/cli/onboard/steps/app_name.rb +26 -0
  19. data/lib/nvoi/cli/onboard/steps/compute.rb +139 -0
  20. data/lib/nvoi/cli/onboard/steps/database.rb +97 -0
  21. data/lib/nvoi/cli/onboard/steps/domain.rb +48 -0
  22. data/lib/nvoi/cli/onboard/steps/env.rb +67 -0
  23. data/lib/nvoi/cli/onboard/ui.rb +84 -0
  24. data/lib/nvoi/cli/unlock/command.rb +2 -2
  25. data/lib/nvoi/cli.rb +0 -32
  26. data/lib/nvoi/configuration/app_service.rb +54 -0
  27. data/lib/nvoi/configuration/application.rb +44 -0
  28. data/lib/nvoi/configuration/builder.rb +417 -0
  29. data/lib/nvoi/configuration/database.rb +56 -0
  30. data/lib/nvoi/configuration/deploy.rb +15 -0
  31. data/lib/nvoi/{objects/service_spec.rb → configuration/deployment.rb} +4 -3
  32. data/lib/nvoi/{objects/config_override.rb → configuration/override.rb} +4 -4
  33. data/lib/nvoi/configuration/providers.rb +78 -0
  34. data/lib/nvoi/configuration/result.rb +43 -0
  35. data/lib/nvoi/configuration/root.rb +234 -0
  36. data/lib/nvoi/configuration/server.rb +39 -0
  37. data/lib/nvoi/configuration/service.rb +62 -0
  38. data/lib/nvoi/external/cloud/aws.rb +12 -12
  39. data/lib/nvoi/external/cloud/hetzner.rb +7 -7
  40. data/lib/nvoi/external/cloud/scaleway.rb +7 -7
  41. data/lib/nvoi/external/cloud/types.rb +42 -0
  42. data/lib/nvoi/external/database/mysql.rb +1 -1
  43. data/lib/nvoi/external/database/postgres.rb +1 -1
  44. data/lib/nvoi/external/database/provider.rb +1 -1
  45. data/lib/nvoi/external/database/sqlite.rb +1 -1
  46. data/lib/nvoi/external/database/types.rb +55 -0
  47. data/lib/nvoi/external/dns/cloudflare.rb +6 -6
  48. data/lib/nvoi/external/dns/types.rb +24 -0
  49. data/lib/nvoi/utils/config_loader.rb +12 -12
  50. data/lib/nvoi/utils/credential_store.rb +4 -4
  51. data/lib/nvoi/utils/env_resolver.rb +3 -3
  52. data/lib/nvoi/utils/namer.rb +2 -2
  53. data/lib/nvoi/utils/presence.rb +23 -0
  54. data/lib/nvoi/version.rb +1 -1
  55. data/lib/nvoi.rb +2 -17
  56. metadata +95 -58
  57. data/.claude/todo/refactor/00-overview.md +0 -171
  58. data/.claude/todo/refactor/01-objects.md +0 -96
  59. data/.claude/todo/refactor/02-utils.md +0 -143
  60. data/.claude/todo/refactor/03-external-cloud.md +0 -164
  61. data/.claude/todo/refactor/04-external-dns.md +0 -104
  62. data/.claude/todo/refactor/05-external.md +0 -133
  63. data/.claude/todo/refactor/06-cli.md +0 -123
  64. data/.claude/todo/refactor/07-cli-deploy-command.md +0 -177
  65. data/.claude/todo/refactor/08-cli-deploy-steps.md +0 -201
  66. data/.claude/todo/refactor/09-cli-delete-command.md +0 -169
  67. data/.claude/todo/refactor/10-cli-exec-command.md +0 -157
  68. data/.claude/todo/refactor/11-cli-credentials-command.md +0 -190
  69. data/.claude/todo/refactor/12-cli-db-command.md +0 -128
  70. data/.claude/todo/refactor/_target.md +0 -79
  71. data/.claude/todo/refactor-execution/00-entrypoint.md +0 -49
  72. data/.claude/todo/refactor-execution/01-objects.md +0 -42
  73. data/.claude/todo/refactor-execution/02-utils.md +0 -41
  74. data/.claude/todo/refactor-execution/03-external-cloud.md +0 -38
  75. data/.claude/todo/refactor-execution/04-external-dns.md +0 -35
  76. data/.claude/todo/refactor-execution/05-external-other.md +0 -46
  77. data/.claude/todo/refactor-execution/06-cli-deploy.md +0 -45
  78. data/.claude/todo/refactor-execution/07-cli-delete.md +0 -43
  79. data/.claude/todo/refactor-execution/08-cli-exec.md +0 -30
  80. data/.claude/todo/refactor-execution/09-cli-credentials.md +0 -34
  81. data/.claude/todo/refactor-execution/10-cli-db.md +0 -31
  82. data/.claude/todo/refactor-execution/11-cli-router.md +0 -44
  83. data/.claude/todo/refactor-execution/12-cleanup.md +0 -120
  84. data/.claude/todo/refactor-execution/_monitoring-strategy.md +0 -126
  85. data/.claude/todo/scaleway.impl.md +0 -644
  86. data/.claude/todo/scaleway.reference.md +0 -520
  87. data/.claude/todos/buckets.md +0 -41
  88. data/.claude/todos.md +0 -550
  89. data/ingest +0 -0
  90. data/lib/nvoi/config_api/actions/app.rb +0 -53
  91. data/lib/nvoi/config_api/actions/compute_provider.rb +0 -55
  92. data/lib/nvoi/config_api/actions/database.rb +0 -70
  93. data/lib/nvoi/config_api/actions/domain_provider.rb +0 -40
  94. data/lib/nvoi/config_api/actions/env.rb +0 -32
  95. data/lib/nvoi/config_api/actions/init.rb +0 -67
  96. data/lib/nvoi/config_api/actions/secret.rb +0 -32
  97. data/lib/nvoi/config_api/actions/server.rb +0 -66
  98. data/lib/nvoi/config_api/actions/service.rb +0 -52
  99. data/lib/nvoi/config_api/actions/volume.rb +0 -40
  100. data/lib/nvoi/config_api/base.rb +0 -38
  101. data/lib/nvoi/config_api/result.rb +0 -26
  102. data/lib/nvoi/config_api.rb +0 -93
  103. data/lib/nvoi/objects/configuration.rb +0 -483
  104. data/lib/nvoi/objects/database.rb +0 -56
  105. data/lib/nvoi/objects/dns.rb +0 -14
  106. data/lib/nvoi/objects/firewall.rb +0 -11
  107. data/lib/nvoi/objects/network.rb +0 -11
  108. data/lib/nvoi/objects/server.rb +0 -14
  109. data/lib/nvoi/objects/tunnel.rb +0 -14
  110. data/lib/nvoi/objects/volume.rb +0 -17
@@ -1,126 +0,0 @@
1
- # Monitoring Strategy
2
-
3
- ## Per-Step Validation
4
-
5
- ### After Every Step
6
-
7
- ```bash
8
- bundle exec rake test # Must pass
9
- ruby -c lib/nvoi.rb # Syntax check
10
- ```
11
-
12
- ---
13
-
14
- ## Step-Specific Assertions
15
-
16
- ### 01-objects
17
- - [ ] `Objects::Server.new(id: "1", name: "x", status: "running", public_ipv4: "1.2.3.4")` works
18
- - [ ] All Structs accessible under `Nvoi::Objects::`
19
- - [ ] Old Struct definitions removed from source files
20
- - [ ] All references updated to `Objects::`
21
- - [ ] `grep -r "Providers::Server" lib/` returns nothing
22
-
23
- ### 02-utils
24
- - [ ] `Utils::Logger.new` works
25
- - [ ] `Utils::Namer.new(config).hostname("app", "example.com")` returns `"app.example.com"`
26
- - [ ] `Utils::ConfigLoader.new.load(path)` returns config
27
- - [ ] `Utils::Crypto` encrypts/decrypts
28
- - [ ] Old files deleted: `logger.rb`, `constants.rb`, `errors.rb`, `config/naming.rb`, etc.
29
- - [ ] `grep -r "Config::ResourceNamer" lib/` returns nothing
30
-
31
- ### 03-external-cloud
32
- - [ ] `External::Cloud.for(config)` returns correct provider
33
- - [ ] `External::Cloud::Hetzner.new(token)` instantiates
34
- - [ ] Provider methods work: `find_server`, `create_server`, etc.
35
- - [ ] `providers/` directory deleted
36
- - [ ] `grep -r "Providers::Hetzner" lib/` returns nothing
37
-
38
- ### 04-external-dns
39
- - [ ] `External::DNS::Cloudflare.new(token, account_id)` instantiates
40
- - [ ] `setup_tunnel` method exists and callable
41
- - [ ] `cloudflare/` directory deleted
42
- - [ ] `grep -r "Cloudflare::Client" lib/` returns nothing
43
-
44
- ### 05-external-other
45
- - [ ] `External::SSH.new(ip, key)` instantiates
46
- - [ ] `External::Kubectl.new(ssh)` instantiates
47
- - [ ] `External::Containerd.new(ssh)` instantiates
48
- - [ ] `External::Database.provider_for("postgres")` returns provider
49
- - [ ] `remote/` directory deleted
50
- - [ ] `k8s/` directory deleted
51
- - [ ] `database/` directory deleted
52
- - [ ] `grep -r "Remote::SSHExecutor" lib/` returns nothing
53
-
54
- ### 06-cli-deploy
55
- - [ ] `CLI::Deploy::Command.new(options).run` callable
56
- - [ ] All steps in `cli/deploy/steps/` load without error
57
- - [ ] Step order matches original flow
58
- - [ ] `service/deploy.rb` deleted
59
- - [ ] `steps/` directory deleted
60
- - [ ] `deployer/` directory deleted
61
- - [ ] `grep -r "Service::DeployService" lib/` returns nothing
62
-
63
- ### 07-cli-delete
64
- - [ ] `CLI::Delete::Command.new(options).run` callable
65
- - [ ] Teardown order preserved (detach → delete servers → delete volumes → etc.)
66
- - [ ] `service/delete.rb` deleted
67
- - [ ] `grep -r "Service::DeleteService" lib/` returns nothing
68
-
69
- ### 08-cli-exec
70
- - [ ] `CLI::Exec::Command.new(options).run(["ls"])` callable
71
- - [ ] `--all` flag works
72
- - [ ] `-i` interactive works
73
- - [ ] `service/exec.rb` deleted
74
-
75
- ### 09-cli-credentials
76
- - [ ] `CLI::Credentials::Edit::Command.new(options).run` callable
77
- - [ ] `CLI::Credentials::Show::Command.new(options).run` callable
78
- - [ ] `credentials/` directory deleted
79
-
80
- ### 10-cli-db
81
- - [ ] `CLI::Db::Command.new(options).branch_create` callable
82
- - [ ] `branch_list`, `branch_restore`, `branch_download` callable
83
- - [ ] `service/db.rb` deleted
84
-
85
- ### 11-cli-router
86
- - [ ] `nvoi deploy --help` works
87
- - [ ] `nvoi delete --help` works
88
- - [ ] `nvoi exec --help` works
89
- - [ ] `nvoi credentials --help` works
90
- - [ ] `nvoi db --help` works
91
- - [ ] `cli.rb` is < 100 lines
92
- - [ ] `service/` directory deleted (should be empty by now)
93
-
94
- ### 12-cleanup
95
- - [ ] No empty directories remain
96
- - [ ] `tree lib/nvoi -L 2` matches expected structure
97
- - [ ] Full test suite passes
98
- - [ ] No orphan requires in `lib/nvoi.rb`
99
-
100
- ---
101
-
102
- ## Integration Smoke Test (End)
103
-
104
- ```bash
105
- # Dry run (no actual cloud calls)
106
- nvoi deploy --help
107
- nvoi delete --help
108
- nvoi exec --help
109
- nvoi credentials show --help
110
- nvoi db branch --help
111
- ```
112
-
113
- If all help commands work → routing is correct.
114
-
115
- ---
116
-
117
- ## Rollback
118
-
119
- If any step fails:
120
- ```bash
121
- git checkout HEAD~1 -- .
122
- # or
123
- git reset --hard HEAD~1
124
- ```
125
-
126
- Single commit = single rollback.