@mittwald/cli 1.0.0-alpha.21 → 1.0.0-alpha.22

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 (154) hide show
  1. package/README.md +111 -149
  2. package/dist/esm/Translator.js +2 -1
  3. package/dist/esm/commands/app/copy.js +1 -1
  4. package/dist/esm/commands/app/{install → create}/node.d.ts +3 -2
  5. package/dist/esm/commands/app/create/node.js +13 -0
  6. package/dist/esm/commands/app/{install → create}/php.d.ts +3 -2
  7. package/dist/esm/commands/app/create/php.js +13 -0
  8. package/dist/esm/commands/app/dependency/update.js +2 -2
  9. package/dist/esm/commands/app/dependency/versions.js +1 -1
  10. package/dist/esm/commands/app/list.js +6 -1
  11. package/dist/esm/commands/app/ssh.d.ts +11 -0
  12. package/dist/esm/commands/app/ssh.js +46 -0
  13. package/dist/esm/commands/app/uninstall.js +1 -1
  14. package/dist/esm/commands/app/versions.js +1 -1
  15. package/dist/esm/commands/conversation/close.js +1 -1
  16. package/dist/esm/commands/conversation/create.js +1 -1
  17. package/dist/esm/commands/conversation/reply.js +1 -1
  18. package/dist/esm/commands/conversation/show.js +2 -2
  19. package/dist/esm/commands/conversation/show2.js +1 -3
  20. package/dist/esm/commands/database/mysql/charsets.js +1 -3
  21. package/dist/esm/commands/database/mysql/create.js +3 -3
  22. package/dist/esm/commands/database/mysql/delete.js +1 -1
  23. package/dist/esm/commands/database/mysql/get.js +1 -1
  24. package/dist/esm/commands/database/mysql/list.js +1 -1
  25. package/dist/esm/commands/database/mysql/phpmyadmin.js +2 -2
  26. package/dist/esm/commands/database/mysql/user/get.js +1 -1
  27. package/dist/esm/commands/database/mysql/user/list.js +1 -3
  28. package/dist/esm/commands/database/redis/create.js +2 -2
  29. package/dist/esm/commands/database/redis/get.js +1 -1
  30. package/dist/esm/commands/database/redis/list.js +1 -1
  31. package/dist/esm/commands/domain/list.js +1 -3
  32. package/dist/esm/commands/domain/ownership/list.js +1 -1
  33. package/dist/esm/commands/domain/virtualhost/create.js +2 -2
  34. package/dist/esm/commands/domain/virtualhost/delete.js +1 -1
  35. package/dist/esm/commands/domain/virtualhost/get.js +4 -4
  36. package/dist/esm/commands/domain/virtualhost/list.js +1 -1
  37. package/dist/esm/commands/mail/address/create.js +1 -1
  38. package/dist/esm/commands/mail/address/delete.js +1 -1
  39. package/dist/esm/commands/mail/address/list.js +1 -3
  40. package/dist/esm/commands/org/delete.js +1 -1
  41. package/dist/esm/commands/org/get.js +2 -2
  42. package/dist/esm/commands/org/invite/list-own.js +1 -1
  43. package/dist/esm/commands/org/invite/list.js +1 -1
  44. package/dist/esm/commands/org/invite/revoke.js +2 -2
  45. package/dist/esm/commands/org/invite.js +1 -1
  46. package/dist/esm/commands/org/list.js +1 -3
  47. package/dist/esm/commands/org/membership/list-own.js +2 -4
  48. package/dist/esm/commands/org/membership/list.d.ts +1 -0
  49. package/dist/esm/commands/org/membership/list.js +2 -2
  50. package/dist/esm/commands/org/membership/revoke.js +3 -3
  51. package/dist/esm/commands/project/backup/create.js +2 -2
  52. package/dist/esm/commands/project/backup/delete.js +1 -1
  53. package/dist/esm/commands/project/backup/download.js +3 -3
  54. package/dist/esm/commands/project/backup/list.js +1 -1
  55. package/dist/esm/commands/project/backupschedule/list.js +1 -1
  56. package/dist/esm/commands/project/create.js +2 -2
  57. package/dist/esm/commands/project/cronjob/execution/get.js +1 -1
  58. package/dist/esm/commands/project/cronjob/execution/list.js +1 -3
  59. package/dist/esm/commands/project/cronjob/execution/logs.js +4 -3
  60. package/dist/esm/commands/project/cronjob/list.js +1 -3
  61. package/dist/esm/commands/project/delete.js +1 -1
  62. package/dist/esm/commands/project/filesystem/usage.js +2 -2
  63. package/dist/esm/commands/project/get.js +4 -4
  64. package/dist/esm/commands/project/membership/list.js +1 -1
  65. package/dist/esm/commands/project/ssh.js +1 -1
  66. package/dist/esm/commands/user/api-token/revoke.js +1 -1
  67. package/dist/esm/commands/user/ssh-key/delete.js +1 -1
  68. package/dist/esm/generated/conversation/getCategory.js +1 -1
  69. package/dist/esm/generated/conversation/getConversation.js +1 -1
  70. package/dist/esm/generated/conversation/listCategories.js +1 -3
  71. package/dist/esm/generated/conversation/listConversations.js +1 -3
  72. package/dist/esm/generated/conversation/listMessagesByConversation.js +1 -3
  73. package/dist/esm/generated/cronjob/getCronjob.js +1 -1
  74. package/dist/esm/generated/cronjob/getExecution.js +1 -1
  75. package/dist/esm/generated/domain/dnsZoneGetSpecific.js +1 -1
  76. package/dist/esm/generated/domain/dnsZonesForProject.js +1 -1
  77. package/dist/esm/generated/domain/getDomain.js +1 -1
  78. package/dist/esm/generated/domain/getHandleFields.js +1 -1
  79. package/dist/esm/generated/domain/getSpecificDomainOwnership.js +1 -1
  80. package/dist/esm/generated/file/getFile.js +1 -1
  81. package/dist/esm/generated/file/getFileMeta.js +1 -1
  82. package/dist/esm/generated/file/getFileTokenRules.js +1 -1
  83. package/dist/esm/generated/file/getFileTypeRules.js +1 -1
  84. package/dist/esm/generated/mail/deliveryboxGetSpecific.js +1 -1
  85. package/dist/esm/generated/mail/deliveryboxList.js +1 -3
  86. package/dist/esm/generated/mail/mailaddressGetSpecific.js +1 -1
  87. package/dist/esm/generated/mail/mailaddressList.js +1 -3
  88. package/dist/esm/generated/mail/projectsettingGetSpecific.js +1 -1
  89. package/dist/esm/generated/notification/newsletterGetInfo.js +1 -1
  90. package/dist/esm/generated/notification/scountUnreadNotifications.js +1 -1
  91. package/dist/esm/generated/notification/slistNotifications.js +1 -3
  92. package/dist/esm/generated/project/getProject.js +1 -1
  93. package/dist/esm/generated/project/getProjectInvite.js +1 -1
  94. package/dist/esm/generated/project/getProjectMembership.js +1 -1
  95. package/dist/esm/generated/project/getSelfMembershipForProject.js +1 -1
  96. package/dist/esm/generated/project/getServer.js +1 -1
  97. package/dist/esm/generated/project/listInvitesForProject.js +1 -3
  98. package/dist/esm/generated/project/listMembershipsForProject.js +1 -3
  99. package/dist/esm/generated/project/listProjectInvites.js +1 -3
  100. package/dist/esm/generated/project/listProjectMemberships.js +1 -3
  101. package/dist/esm/generated/project/listProjects.js +1 -3
  102. package/dist/esm/generated/project/listServers.js +1 -3
  103. package/dist/esm/generated/sshsftpUser/sftpUserGetSftpUser.js +1 -1
  104. package/dist/esm/generated/sshsftpUser/sftpUserListSftpUsers.js +1 -3
  105. package/dist/esm/generated/sshsftpUser/sshUserGetSshUser.js +1 -1
  106. package/dist/esm/generated/sshsftpUser/sshUserListSshUsers.js +1 -3
  107. package/dist/esm/generated/user/getApiToken.js +1 -1
  108. package/dist/esm/generated/user/getPersonalizedSettings.js +1 -1
  109. package/dist/esm/generated/user/getSession.js +1 -1
  110. package/dist/esm/generated/user/getSshKey.js +1 -1
  111. package/dist/esm/generated/user/getUser.js +1 -1
  112. package/dist/esm/generated/user/listApiTokens.js +1 -3
  113. package/dist/esm/generated/user/listFeedback.js +1 -3
  114. package/dist/esm/generated/user/listSessions.js +1 -3
  115. package/dist/esm/generated/user/listSshKeys.js +1 -3
  116. package/dist/esm/lib/app/Installer.d.ts +1 -1
  117. package/dist/esm/lib/app/Installer.js +2 -2
  118. package/dist/esm/lib/app/hooks.js +7 -8
  119. package/dist/esm/lib/app/install.js +1 -1
  120. package/dist/esm/lib/app/uuid.js +2 -1
  121. package/dist/esm/lib/app/versions.js +2 -6
  122. package/dist/esm/lib/app/wait.js +1 -1
  123. package/dist/esm/lib/database/common.js +1 -1
  124. package/dist/esm/lib/database/mysql/connect.js +2 -2
  125. package/dist/esm/lib/database/mysql/flags.js +1 -1
  126. package/dist/esm/lib/database/redis/connect.js +1 -1
  127. package/dist/esm/lib/database/redis/flags.js +1 -1
  128. package/dist/esm/lib/project/hooks.js +1 -1
  129. package/dist/esm/lib/project/ingress.js +1 -1
  130. package/dist/esm/lib/project/shortId.js +1 -1
  131. package/dist/esm/lib/projectbackup/hooks.js +2 -2
  132. package/dist/esm/rendering/lib/getTerminalWidth.d.ts +1 -1
  133. package/dist/esm/rendering/lib/getTerminalWidth.js +1 -1
  134. package/dist/esm/rendering/react/RenderBaseCommand.js +5 -1
  135. package/dist/esm/rendering/react/components/AppInstallation/AppInstallationDetails.js +5 -2
  136. package/dist/esm/rendering/react/components/Conversation/ConversationMeta.js +1 -3
  137. package/dist/esm/rendering/react/components/Table/model/Column.d.ts +1 -1
  138. package/dist/esm/rendering/react/components/Table/model/Column.js +5 -2
  139. package/dist/esm/rendering/react/components/Table/model/ColumnOptions.js +1 -1
  140. package/dist/esm/rendering/react/hooks/useIncreaseInkStdoutColumns.d.ts +1 -0
  141. package/dist/esm/rendering/react/hooks/useIncreaseInkStdoutColumns.js +9 -0
  142. package/dist/esm/rendering/react/hooks/useMyUserProfile.js +1 -3
  143. package/dist/esm/rendering/react/measure/MeasureContextProvider.js +6 -2
  144. package/package.json +5 -7
  145. package/dist/esm/commands/app/install/node.js +0 -13
  146. package/dist/esm/commands/app/install/php.js +0 -13
  147. package/dist/esm/commands/domain/tld/get.d.ts +0 -3
  148. package/dist/esm/commands/domain/tld/get.js +0 -6
  149. package/dist/esm/commands/domain/tld/list.d.ts +0 -9
  150. package/dist/esm/commands/domain/tld/list.js +0 -6
  151. package/dist/esm/generated/domain/getToplevelDomain.d.ts +0 -16
  152. package/dist/esm/generated/domain/getToplevelDomain.js +0 -25
  153. package/dist/esm/generated/domain/listToplevelDomains.d.ts +0 -13
  154. package/dist/esm/generated/domain/listToplevelDomains.js +0 -17
package/README.md CHANGED
@@ -80,6 +80,8 @@ USAGE
80
80
 
81
81
  <!-- commands -->
82
82
  * [`mw app copy INSTALLATION-ID`](#mw-app-copy-installation-id)
83
+ * [`mw app create node`](#mw-app-create-node)
84
+ * [`mw app create php`](#mw-app-create-php)
83
85
  * [`mw app dependency list`](#mw-app-dependency-list)
84
86
  * [`mw app dependency update INSTALLATION-ID`](#mw-app-dependency-update-installation-id)
85
87
  * [`mw app dependency versions SYSTEMSOFTWARE`](#mw-app-dependency-versions-systemsoftware)
@@ -87,13 +89,12 @@ USAGE
87
89
  * [`mw app install contao`](#mw-app-install-contao)
88
90
  * [`mw app install joomla`](#mw-app-install-joomla)
89
91
  * [`mw app install matomo`](#mw-app-install-matomo)
90
- * [`mw app install node`](#mw-app-install-node)
91
- * [`mw app install php`](#mw-app-install-php)
92
92
  * [`mw app install shopware5`](#mw-app-install-shopware5)
93
93
  * [`mw app install shopware6`](#mw-app-install-shopware6)
94
94
  * [`mw app install typo3`](#mw-app-install-typo3)
95
95
  * [`mw app install wordpress`](#mw-app-install-wordpress)
96
96
  * [`mw app list`](#mw-app-list)
97
+ * [`mw app ssh INSTALLATION-ID`](#mw-app-ssh-installation-id)
97
98
  * [`mw app uninstall INSTALLATION-ID`](#mw-app-uninstall-installation-id)
98
99
  * [`mw app versions [APP]`](#mw-app-versions-app)
99
100
  * [`mw context get`](#mw-context-get)
@@ -129,8 +130,6 @@ USAGE
129
130
  * [`mw domain list`](#mw-domain-list)
130
131
  * [`mw domain ownership get DOMAINOWNERSHIPID`](#mw-domain-ownership-get-domainownershipid)
131
132
  * [`mw domain ownership list`](#mw-domain-ownership-list)
132
- * [`mw domain tld get TLD`](#mw-domain-tld-get-tld)
133
- * [`mw domain tld list`](#mw-domain-tld-list)
134
133
  * [`mw domain virtualhost create`](#mw-domain-virtualhost-create)
135
134
  * [`mw domain virtualhost delete VIRTUAL-HOST-ID`](#mw-domain-virtualhost-delete-virtual-host-id)
136
135
  * [`mw domain virtualhost get INGRESS-ID`](#mw-domain-virtualhost-get-ingress-id)
@@ -222,6 +221,82 @@ FLAG DESCRIPTIONS
222
221
  scripts), you can use this flag to easily get the IDs of created resources for further processing.
223
222
  ```
224
223
 
224
+ ## `mw app create node`
225
+
226
+ Creates new custom Node.js installation.
227
+
228
+ ```
229
+ USAGE
230
+ $ mw app create node [-p <value>] [-q] [--site-title <value>] [-w] [--json]
231
+
232
+ FLAGS
233
+ -p, --project-id=<value> ID or short ID of a project; this flag is optional if a default project is set in the
234
+ context
235
+ -q, --quiet suppress process output and only display a machine-readable summary.
236
+ -w, --wait Wait for your custom Node.js to be ready.
237
+ --json
238
+ --site-title=<value> Site Title for your custom Node.js installation.
239
+
240
+ DESCRIPTION
241
+ Creates new custom Node.js installation.
242
+
243
+ FLAG DESCRIPTIONS
244
+ -p, --project-id=<value> ID or short ID of a project; this flag is optional if a default project is set in the context
245
+
246
+ May contain a short ID or a full ID of a project; you can also use the "mw context set --project-id=<VALUE>" command
247
+ to persistently set a default project for all commands that accept this flag.
248
+
249
+ -q, --quiet suppress process output and only display a machine-readable summary.
250
+
251
+ This flag controls if you want to see the process output or only a summary. When using mw non-interactively (e.g. in
252
+ scripts), you can use this flag to easily get the IDs of created resources for further processing.
253
+
254
+ --site-title=<value> Site Title for your custom Node.js installation.
255
+
256
+ Site Title which will be displayed in the Tab and at the top of the Frontend of your custom Node.js installation.
257
+ It is also the Title shown in the App-Overview in the mStudio.
258
+ If none is given the Software Name and the given Project will be used. The Title can be changed after the
259
+ installation is finished
260
+ ```
261
+
262
+ ## `mw app create php`
263
+
264
+ Creates new custom PHP installation.
265
+
266
+ ```
267
+ USAGE
268
+ $ mw app create php [-p <value>] [-q] [--site-title <value>] [-w] [--json]
269
+
270
+ FLAGS
271
+ -p, --project-id=<value> ID or short ID of a project; this flag is optional if a default project is set in the
272
+ context
273
+ -q, --quiet suppress process output and only display a machine-readable summary.
274
+ -w, --wait Wait for your custom PHP to be ready.
275
+ --json
276
+ --site-title=<value> Site Title for your custom PHP installation.
277
+
278
+ DESCRIPTION
279
+ Creates new custom PHP installation.
280
+
281
+ FLAG DESCRIPTIONS
282
+ -p, --project-id=<value> ID or short ID of a project; this flag is optional if a default project is set in the context
283
+
284
+ May contain a short ID or a full ID of a project; you can also use the "mw context set --project-id=<VALUE>" command
285
+ to persistently set a default project for all commands that accept this flag.
286
+
287
+ -q, --quiet suppress process output and only display a machine-readable summary.
288
+
289
+ This flag controls if you want to see the process output or only a summary. When using mw non-interactively (e.g. in
290
+ scripts), you can use this flag to easily get the IDs of created resources for further processing.
291
+
292
+ --site-title=<value> Site Title for your custom PHP installation.
293
+
294
+ Site Title which will be displayed in the Tab and at the top of the Frontend of your custom PHP installation.
295
+ It is also the Title shown in the App-Overview in the mStudio.
296
+ If none is given the Software Name and the given Project will be used. The Title can be changed after the
297
+ installation is finished
298
+ ```
299
+
225
300
  ## `mw app dependency list`
226
301
 
227
302
  Get all available dependencies
@@ -330,7 +405,7 @@ DESCRIPTION
330
405
 
331
406
  ## `mw app install contao`
332
407
 
333
- Creates new Contao Installation.
408
+ Creates new Contao installation.
334
409
 
335
410
  ```
336
411
  USAGE
@@ -354,7 +429,7 @@ FLAGS
354
429
  --version=<value> (required) [default: latest] Version of Contao to be installed.
355
430
 
356
431
  DESCRIPTION
357
- Creates new Contao Installation.
432
+ Creates new Contao installation.
358
433
 
359
434
  FLAG DESCRIPTIONS
360
435
  -p, --project-id=<value> ID or short ID of a project; this flag is optional if a default project is set in the context
@@ -420,7 +495,7 @@ FLAG DESCRIPTIONS
420
495
 
421
496
  ## `mw app install joomla`
422
497
 
423
- Creates new Joomla! Installation.
498
+ Creates new Joomla! installation.
424
499
 
425
500
  ```
426
501
  USAGE
@@ -444,7 +519,7 @@ FLAGS
444
519
  --version=<value> (required) [default: latest] Version of Joomla! to be installed.
445
520
 
446
521
  DESCRIPTION
447
- Creates new Joomla! Installation.
522
+ Creates new Joomla! installation.
448
523
 
449
524
  FLAG DESCRIPTIONS
450
525
  -p, --project-id=<value> ID or short ID of a project; this flag is optional if a default project is set in the context
@@ -510,7 +585,7 @@ FLAG DESCRIPTIONS
510
585
 
511
586
  ## `mw app install matomo`
512
587
 
513
- Creates new Matomo Installation.
588
+ Creates new Matomo installation.
514
589
 
515
590
  ```
516
591
  USAGE
@@ -531,7 +606,7 @@ FLAGS
531
606
  --version=<value> (required) [default: latest] Version of Matomo to be installed.
532
607
 
533
608
  DESCRIPTION
534
- Creates new Matomo Installation.
609
+ Creates new Matomo installation.
535
610
 
536
611
  FLAG DESCRIPTIONS
537
612
  -p, --project-id=<value> ID or short ID of a project; this flag is optional if a default project is set in the context
@@ -583,97 +658,9 @@ FLAG DESCRIPTIONS
583
658
  If none is given the Matomo will be installed in the latest available version.
584
659
  ```
585
660
 
586
- ## `mw app install node`
587
-
588
- Creates new Node.js Project Installation.
589
-
590
- ```
591
- USAGE
592
- $ mw app install node --version <value> [-p <value>] [-q] [--site-title <value>] [-w] [--json]
593
-
594
- FLAGS
595
- -p, --project-id=<value> ID or short ID of a project; this flag is optional if a default project is set in the
596
- context
597
- -q, --quiet suppress process output and only display a machine-readable summary.
598
- -w, --wait Wait for your Node.js Project to be ready.
599
- --json
600
- --site-title=<value> Site Title for your Node.js Project installation.
601
- --version=<value> (required) [default: latest] Version of Node.js Project to be installed.
602
-
603
- DESCRIPTION
604
- Creates new Node.js Project Installation.
605
-
606
- FLAG DESCRIPTIONS
607
- -p, --project-id=<value> ID or short ID of a project; this flag is optional if a default project is set in the context
608
-
609
- May contain a short ID or a full ID of a project; you can also use the "mw context set --project-id=<VALUE>" command
610
- to persistently set a default project for all commands that accept this flag.
611
-
612
- -q, --quiet suppress process output and only display a machine-readable summary.
613
-
614
- This flag controls if you want to see the process output or only a summary. When using mw non-interactively (e.g. in
615
- scripts), you can use this flag to easily get the IDs of created resources for further processing.
616
-
617
- --site-title=<value> Site Title for your Node.js Project installation.
618
-
619
- Site Title which will be displayed in the Tab and at the top of the Frontend of your Node.js Project installation.
620
- It is also the Title shown in the App-Overview in the mStudio.
621
- If none is given the Software Name and the given Project will be used. The Title can be changed after the
622
- installation is finished
623
-
624
- --version=<value> Version of Node.js Project to be installed.
625
-
626
- Specify the Version in which your Node.js Project will be installed.
627
- If none is given the Node.js Project will be installed in the latest available version.
628
- ```
629
-
630
- ## `mw app install php`
631
-
632
- Creates new PHP Project Installation.
633
-
634
- ```
635
- USAGE
636
- $ mw app install php --version <value> [-p <value>] [-q] [--site-title <value>] [-w] [--json]
637
-
638
- FLAGS
639
- -p, --project-id=<value> ID or short ID of a project; this flag is optional if a default project is set in the
640
- context
641
- -q, --quiet suppress process output and only display a machine-readable summary.
642
- -w, --wait Wait for your PHP Project to be ready.
643
- --json
644
- --site-title=<value> Site Title for your PHP Project installation.
645
- --version=<value> (required) [default: latest] Version of PHP Project to be installed.
646
-
647
- DESCRIPTION
648
- Creates new PHP Project Installation.
649
-
650
- FLAG DESCRIPTIONS
651
- -p, --project-id=<value> ID or short ID of a project; this flag is optional if a default project is set in the context
652
-
653
- May contain a short ID or a full ID of a project; you can also use the "mw context set --project-id=<VALUE>" command
654
- to persistently set a default project for all commands that accept this flag.
655
-
656
- -q, --quiet suppress process output and only display a machine-readable summary.
657
-
658
- This flag controls if you want to see the process output or only a summary. When using mw non-interactively (e.g. in
659
- scripts), you can use this flag to easily get the IDs of created resources for further processing.
660
-
661
- --site-title=<value> Site Title for your PHP Project installation.
662
-
663
- Site Title which will be displayed in the Tab and at the top of the Frontend of your PHP Project installation.
664
- It is also the Title shown in the App-Overview in the mStudio.
665
- If none is given the Software Name and the given Project will be used. The Title can be changed after the
666
- installation is finished
667
-
668
- --version=<value> Version of PHP Project to be installed.
669
-
670
- Specify the Version in which your PHP Project will be installed.
671
- If none is given the PHP Project will be installed in the latest available version.
672
- ```
673
-
674
661
  ## `mw app install shopware5`
675
662
 
676
- Creates new Shopware 5 Installation.
663
+ Creates new Shopware 5 installation.
677
664
 
678
665
  ```
679
666
  USAGE
@@ -701,7 +688,7 @@ FLAGS
701
688
  --version=<value> (required) [default: latest] Version of Shopware 5 to be installed.
702
689
 
703
690
  DESCRIPTION
704
- Creates new Shopware 5 Installation.
691
+ Creates new Shopware 5 installation.
705
692
 
706
693
  FLAG DESCRIPTIONS
707
694
  -p, --project-id=<value> ID or short ID of a project; this flag is optional if a default project is set in the context
@@ -787,7 +774,7 @@ FLAG DESCRIPTIONS
787
774
 
788
775
  ## `mw app install shopware6`
789
776
 
790
- Creates new Shopware 6 Installation.
777
+ Creates new Shopware 6 installation.
791
778
 
792
779
  ```
793
780
  USAGE
@@ -815,7 +802,7 @@ FLAGS
815
802
  --version=<value> (required) [default: latest] Version of Shopware 6 to be installed.
816
803
 
817
804
  DESCRIPTION
818
- Creates new Shopware 6 Installation.
805
+ Creates new Shopware 6 installation.
819
806
 
820
807
  FLAG DESCRIPTIONS
821
808
  -p, --project-id=<value> ID or short ID of a project; this flag is optional if a default project is set in the context
@@ -901,7 +888,7 @@ FLAG DESCRIPTIONS
901
888
 
902
889
  ## `mw app install typo3`
903
890
 
904
- Creates new TYPO3 Installation.
891
+ Creates new TYPO3 installation.
905
892
 
906
893
  ```
907
894
  USAGE
@@ -924,7 +911,7 @@ FLAGS
924
911
  --version=<value> (required) [default: latest] Version of TYPO3 to be installed.
925
912
 
926
913
  DESCRIPTION
927
- Creates new TYPO3 Installation.
914
+ Creates new TYPO3 installation.
928
915
 
929
916
  FLAG DESCRIPTIONS
930
917
  -p, --project-id=<value> ID or short ID of a project; this flag is optional if a default project is set in the context
@@ -986,7 +973,7 @@ FLAG DESCRIPTIONS
986
973
 
987
974
  ## `mw app install wordpress`
988
975
 
989
- Creates new WordPress Installation.
976
+ Creates new WordPress installation.
990
977
 
991
978
  ```
992
979
  USAGE
@@ -1008,7 +995,7 @@ FLAGS
1008
995
  --version=<value> (required) [default: latest] Version of WordPress to be installed.
1009
996
 
1010
997
  DESCRIPTION
1011
- Creates new WordPress Installation.
998
+ Creates new WordPress installation.
1012
999
 
1013
1000
  FLAG DESCRIPTIONS
1014
1001
  -p, --project-id=<value> ID or short ID of a project; this flag is optional if a default project is set in the context
@@ -1093,6 +1080,24 @@ FLAG DESCRIPTIONS
1093
1080
  to persistently set a default project for all commands that accept this flag.
1094
1081
  ```
1095
1082
 
1083
+ ## `mw app ssh INSTALLATION-ID`
1084
+
1085
+ Connect to an app via SSH
1086
+
1087
+ ```
1088
+ USAGE
1089
+ $ mw app ssh INSTALLATION-ID [--cd]
1090
+
1091
+ ARGUMENTS
1092
+ INSTALLATION-ID ID of the app installation to get
1093
+
1094
+ FLAGS
1095
+ --[no-]cd change to installation path after connecting
1096
+
1097
+ DESCRIPTION
1098
+ Connect to an app via SSH
1099
+ ```
1100
+
1096
1101
  ## `mw app uninstall INSTALLATION-ID`
1097
1102
 
1098
1103
  Uninstall an app
@@ -1918,49 +1923,6 @@ FLAG DESCRIPTIONS
1918
1923
  to persistently set a default project for all commands that accept this flag.
1919
1924
  ```
1920
1925
 
1921
- ## `mw domain tld get TLD`
1922
-
1923
- Get a toplevel domain.
1924
-
1925
- ```
1926
- USAGE
1927
- $ mw domain tld get TLD [-o json|yaml | | ]
1928
-
1929
- ARGUMENTS
1930
- TLD undefined
1931
-
1932
- FLAGS
1933
- -o, --output=<option> output in a more machine friendly format
1934
- <options: json|yaml>
1935
-
1936
- DESCRIPTION
1937
- Get a toplevel domain.
1938
- ```
1939
-
1940
- ## `mw domain tld list`
1941
-
1942
- List all supported toplevel domains.
1943
-
1944
- ```
1945
- USAGE
1946
- $ mw domain tld list [--columns <value> | -x] [--sort <value>] [--filter <value>] [--output csv|json|yaml | |
1947
- [--csv | --no-truncate]] [--no-header | ]
1948
-
1949
- FLAGS
1950
- -x, --extended show extra columns
1951
- --columns=<value> only show provided columns (comma-separated)
1952
- --csv output is csv format [alias: --output=csv]
1953
- --filter=<value> filter property by partial string matching, ex: name=foo
1954
- --no-header hide table header from output
1955
- --no-truncate do not truncate output to fit screen
1956
- --output=<option> output in a more machine friendly format
1957
- <options: csv|json|yaml>
1958
- --sort=<value> property to sort by (prepend '-' for descending)
1959
-
1960
- DESCRIPTION
1961
- List all supported toplevel domains.
1962
- ```
1963
-
1964
1926
  ## `mw domain virtualhost create`
1965
1927
 
1966
1928
  Create a new ingress
@@ -66,7 +66,8 @@ export async function getAppVersionFromUuid(apiClient, appId, appVersionId) {
66
66
  throw new Error("Given UUID not valid.");
67
67
  }
68
68
  const appVersion = await apiClient.app.getAppversion({
69
- pathParameters: { appId: appId, appVersionId: appVersionId },
69
+ appId: appId,
70
+ appVersionId: appVersionId,
70
71
  });
71
72
  assertStatus(appVersion, 200);
72
73
  return appVersion.data;
@@ -21,7 +21,7 @@ export class Copy extends ExecRenderBaseCommand {
21
21
  const p = makeProcessRenderer(this.flags, "Copying app installation");
22
22
  const result = await p.runStep("requesting app copy", async () => {
23
23
  const r = await this.apiClient.app.requestAppinstallationCopy({
24
- pathParameters: { id },
24
+ id,
25
25
  data: {
26
26
  description,
27
27
  },
@@ -1,9 +1,10 @@
1
1
  import { ExecRenderBaseCommand } from "../../../rendering/react/ExecRenderBaseCommand.js";
2
2
  import React from "react";
3
- import { AppInstallationResult } from "../../../lib/app/Installer.js";
3
+ import { AppInstallationResult, AppInstaller } from "../../../lib/app/Installer.js";
4
+ export declare const nodeInstaller: AppInstaller<"site-title" | "wait">;
4
5
  export default class InstallNode extends ExecRenderBaseCommand<typeof InstallNode, AppInstallationResult> {
5
6
  static description: string;
6
- static flags: import("@oclif/core/lib/interfaces/parser.js").FlagInput<import("../../../lib/app/flags.js").RelevantFlags<readonly ("version" | "site-title" | "wait")[]>>;
7
+ static flags: import("@oclif/core/lib/interfaces/parser.js").FlagInput<import("../../../lib/app/flags.js").RelevantFlags<readonly ("site-title" | "wait")[]>>;
7
8
  protected exec(): Promise<{
8
9
  appInstallationId: string;
9
10
  }>;
@@ -0,0 +1,13 @@
1
+ import { ExecRenderBaseCommand } from "../../../rendering/react/ExecRenderBaseCommand.js";
2
+ import { AppInstaller, } from "../../../lib/app/Installer.js";
3
+ export const nodeInstaller = new AppInstaller("3e7f920b-a711-4d2f-9871-661e1b41a2f0", "custom Node.js", ["site-title", "wait"]);
4
+ export default class InstallNode extends ExecRenderBaseCommand {
5
+ static description = nodeInstaller.description;
6
+ static flags = nodeInstaller.flags;
7
+ async exec() {
8
+ return nodeInstaller.exec(this.apiClient, this.args, this.flags, this.config);
9
+ }
10
+ render(result) {
11
+ return nodeInstaller.render(result, this.flags);
12
+ }
13
+ }
@@ -1,9 +1,10 @@
1
1
  import { ExecRenderBaseCommand } from "../../../rendering/react/ExecRenderBaseCommand.js";
2
2
  import React from "react";
3
- import { AppInstallationResult } from "../../../lib/app/Installer.js";
3
+ import { AppInstallationResult, AppInstaller } from "../../../lib/app/Installer.js";
4
+ export declare const phpInstaller: AppInstaller<"site-title" | "wait">;
4
5
  export default class InstallPhp extends ExecRenderBaseCommand<typeof InstallPhp, AppInstallationResult> {
5
6
  static description: string;
6
- static flags: import("@oclif/core/lib/interfaces/parser.js").FlagInput<import("../../../lib/app/flags.js").RelevantFlags<readonly ("version" | "site-title" | "wait")[]>>;
7
+ static flags: import("@oclif/core/lib/interfaces/parser.js").FlagInput<import("../../../lib/app/flags.js").RelevantFlags<readonly ("site-title" | "wait")[]>>;
7
8
  protected exec(): Promise<{
8
9
  appInstallationId: string;
9
10
  }>;
@@ -0,0 +1,13 @@
1
+ import { ExecRenderBaseCommand } from "../../../rendering/react/ExecRenderBaseCommand.js";
2
+ import { AppInstaller, } from "../../../lib/app/Installer.js";
3
+ export const phpInstaller = new AppInstaller("34220303-cb87-4592-8a95-2eb20a97b2ac", "custom PHP", ["site-title", "wait"]);
4
+ export default class InstallPhp extends ExecRenderBaseCommand {
5
+ static description = phpInstaller.description;
6
+ static flags = phpInstaller.flags;
7
+ async exec() {
8
+ return phpInstaller.exec(this.apiClient, this.args, this.flags, this.config);
9
+ }
10
+ render(result) {
11
+ return phpInstaller.render(result, this.flags);
12
+ }
13
+ }
@@ -75,7 +75,7 @@ export default class Update extends ExecRenderBaseCommand {
75
75
  }
76
76
  await process.runStep("updating app dependencies", async () => {
77
77
  const r = await this.apiClient.app.patchAppinstallation({
78
- pathParameters: { appInstallationId },
78
+ appInstallationId,
79
79
  data: {
80
80
  systemSoftware: versionsToUpdate,
81
81
  },
@@ -87,7 +87,7 @@ export default class Update extends ExecRenderBaseCommand {
87
87
  async getVersions(p, systemSoftware) {
88
88
  const versions = await p.runStep(`fetching versions for ${systemSoftware.name}`, async () => {
89
89
  const r = await this.apiClient.app.listSystemsoftwareversions({
90
- pathParameters: { systemSoftwareId: systemSoftware.id },
90
+ systemSoftwareId: systemSoftware.id,
91
91
  });
92
92
  assertStatus(r, 200);
93
93
  return r.data;
@@ -22,7 +22,7 @@ export class Versions extends ListBaseCommand {
22
22
  throw new Error(`system software ${systemSoftwareName} not found`);
23
23
  }
24
24
  return await this.apiClient.app.listSystemsoftwareversions({
25
- pathParameters: { systemSoftwareId: systemSoftware.id },
25
+ systemSoftwareId: systemSoftware.id,
26
26
  });
27
27
  }
28
28
  mapData(data) {
@@ -2,6 +2,8 @@ import { assertStatus } from "@mittwald/api-client-commons";
2
2
  import { getAppFromUuid, getAppVersionFromUuid } from "../../Translator.js";
3
3
  import { projectFlags, withProjectId } from "../../lib/project/flags.js";
4
4
  import { ListBaseCommand } from "../../ListBaseCommand.js";
5
+ import { phpInstaller } from "./create/php.js";
6
+ import { nodeInstaller } from "./create/node.js";
5
7
  export default class List extends ListBaseCommand {
6
8
  static description = "List installed apps in a project.";
7
9
  static flags = {
@@ -11,7 +13,7 @@ export default class List extends ListBaseCommand {
11
13
  async getData() {
12
14
  const projectId = await withProjectId(this.apiClient, List, this.flags, this.args, this.config);
13
15
  const apps = await this.apiClient.app.listAppinstallations({
14
- pathParameters: { projectId },
16
+ projectId,
15
17
  });
16
18
  assertStatus(apps, 200);
17
19
  return apps;
@@ -43,6 +45,9 @@ export default class List extends ListBaseCommand {
43
45
  appVersion: {
44
46
  header: "Version",
45
47
  get: (i) => {
48
+ if ([phpInstaller.appId, nodeInstaller.appId].includes(i.appId)) {
49
+ return "n/a";
50
+ }
46
51
  if (i.appVersionCurrent?.id === i.appVersionDesired.id) {
47
52
  return i.appVersionDesired.externalVersion;
48
53
  }
@@ -0,0 +1,11 @@
1
+ import { BaseCommand } from "../../BaseCommand.js";
2
+ export default class Ssh extends BaseCommand {
3
+ static description: string;
4
+ static args: {
5
+ "installation-id": import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
6
+ };
7
+ static flags: {
8
+ cd: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
9
+ };
10
+ run(): Promise<void>;
11
+ }
@@ -0,0 +1,46 @@
1
+ import { BaseCommand } from "../../BaseCommand.js";
2
+ import { assertStatus } from "@mittwald/api-client-commons";
3
+ import * as child_process from "child_process";
4
+ import { appInstallationFlags } from "../../lib/app/flags.js";
5
+ import { Flags } from "@oclif/core";
6
+ import * as path from "path";
7
+ export default class Ssh extends BaseCommand {
8
+ static description = "Connect to an app via SSH";
9
+ static args = { ...appInstallationFlags };
10
+ static flags = {
11
+ cd: Flags.boolean({
12
+ summary: "change to installation path after connecting",
13
+ default: true,
14
+ allowNo: true,
15
+ }),
16
+ };
17
+ async run() {
18
+ const { args, flags } = await this.parse(Ssh);
19
+ const id = args["installation-id"];
20
+ const appInstallationResponse = await this.apiClient.app.getAppinstallation({
21
+ appInstallationId: id,
22
+ });
23
+ assertStatus(appInstallationResponse, 200);
24
+ if (appInstallationResponse.data.projectId === undefined) {
25
+ throw new Error("Project ID of app must not be undefined");
26
+ }
27
+ const projectResponse = await this.apiClient.project.getProject({
28
+ id: appInstallationResponse.data.projectId,
29
+ });
30
+ assertStatus(projectResponse, 200);
31
+ const userResponse = await this.apiClient.user.getOwnAccount();
32
+ assertStatus(userResponse, 200);
33
+ const sshHost = `ssh.${projectResponse.data.clusterID}.${projectResponse.data.clusterDomain}`;
34
+ const sshUser = `${userResponse.data.email}@app-${appInstallationResponse.data.id}`;
35
+ this.log("connecting to %o as %o", sshHost, sshUser);
36
+ let cmd = "exec bash -l";
37
+ if (flags.cd) {
38
+ const absoluteInstallPath = path.join(projectResponse.data.directories["Web"], appInstallationResponse.data.installationPath);
39
+ cmd = flags.cd ? `cd ${absoluteInstallPath} && exec bash -l` : "bash -l";
40
+ this.log("changing to %o; use --no-cd to disable this behaviour", absoluteInstallPath);
41
+ }
42
+ child_process.spawnSync("/usr/bin/ssh", ["-t", "-l", sshUser, sshHost, cmd], {
43
+ stdio: "inherit",
44
+ });
45
+ }
46
+ }
@@ -13,7 +13,7 @@ export default class Uninstall extends DeleteBaseCommand {
13
13
  async deleteResource() {
14
14
  const appInstallationId = this.args["installation-id"];
15
15
  const response = await this.apiClient.app.uninstallAppinstallation({
16
- pathParameters: { appInstallationId },
16
+ appInstallationId,
17
17
  });
18
18
  assertStatus(response, 204);
19
19
  }
@@ -43,7 +43,7 @@ export default class AppVersions extends BaseCommand {
43
43
  }
44
44
  async outputVersionsForAppUuid(apiClient, appUuid) {
45
45
  const versions = await apiClient.app.listAppversions({
46
- pathParameters: { appId: appUuid },
46
+ appId: appUuid,
47
47
  });
48
48
  assertStatus(versions, 200);
49
49
  for (const version of versions.data) {
@@ -15,7 +15,7 @@ export default class Close extends BaseCommand {
15
15
  const conversationId = await normalizeConversationIdToUuid(this.apiClient, args.id);
16
16
  ux.action.start(`closing conversation ${conversationId}`);
17
17
  const response = await this.apiClient.conversation.setConversationStatus({
18
- pathParameters: { conversationId },
18
+ conversationId,
19
19
  data: { status: "closed" },
20
20
  });
21
21
  assertStatus(response, 200);
@@ -41,7 +41,7 @@ export default class Create extends BaseCommand {
41
41
  const conversationId = conversationResponse.data.conversationId;
42
42
  ux.action.start(`saving message for ${conversationId}`);
43
43
  const response = await this.apiClient.conversation.createMessage({
44
- pathParameters: { conversationId },
44
+ conversationId,
45
45
  data: { messageContent },
46
46
  });
47
47
  assertStatus(response, 201);
@@ -21,7 +21,7 @@ export default class Reply extends BaseCommand {
21
21
  const messageContent = await retrieveMessage(flags);
22
22
  ux.action.start(`replying to ${conversationId}`);
23
23
  const response = await this.apiClient.conversation.createMessage({
24
- pathParameters: { conversationId },
24
+ conversationId,
25
25
  data: { messageContent },
26
26
  });
27
27
  assertStatus(response, 201);
@@ -20,10 +20,10 @@ export default class Show extends BaseCommand {
20
20
  const conversationId = await normalizeConversationIdToUuid(this.apiClient, args.id);
21
21
  const [conversationResponse, messagesResponse] = await Promise.all([
22
22
  this.apiClient.conversation.getConversation({
23
- pathParameters: { conversationId },
23
+ conversationId,
24
24
  }),
25
25
  this.apiClient.conversation.listMessagesByConversation({
26
- pathParameters: { conversationId },
26
+ conversationId,
27
27
  }),
28
28
  ]);
29
29
  assertStatus(conversationResponse, 200);
@@ -26,9 +26,7 @@ export default class Show extends RenderBaseCommand {
26
26
  const usePromiseOptions = usePromiseSetup.getSetup(this.flags);
27
27
  const response = usePromise(apiClient.conversation.listMessagesByConversation, [
28
28
  {
29
- pathParameters: {
30
- conversationId,
31
- },
29
+ conversationId,
32
30
  },
33
31
  ], {
34
32
  loaderId: "listMessagesByConversation",