[MM-53454] Add export file settings + slash command for public link (#23915)
Co-authored-by: Mattermost Build <build@mattermost.com>
Этот коммит содержится в:
@@ -146,5 +146,6 @@ type Client interface {
|
||||
ListExports(ctx context.Context) ([]string, *model.Response, error)
|
||||
DeleteExport(ctx context.Context, name string) (*model.Response, error)
|
||||
DownloadExport(ctx context.Context, name string, wr io.Writer, offset int64) (int64, *model.Response, error)
|
||||
GeneratePresignedURL(ctx context.Context, name string) (*model.PresignURLResponse, *model.Response, error)
|
||||
ResetSamlAuthDataToEmail(ctx context.Context, includeDeleted bool, dryRun bool, userIDs []string) (int64, *model.Response, error)
|
||||
}
|
||||
|
||||
@@ -40,6 +40,13 @@ var ExportDownloadCmd = &cobra.Command{
|
||||
RunE: withClient(exportDownloadCmdF),
|
||||
}
|
||||
|
||||
var ExportGeneratePresignedURLCmd = &cobra.Command{
|
||||
Use: "generate-presigned-url [exportname]",
|
||||
Short: "Generate a presigned url for an export file. This is helpful when an export is big and might have trouble downloading from the Mattermost server.",
|
||||
Args: cobra.ExactArgs(1),
|
||||
RunE: withClient(exportGeneratePresignedURLCmdF),
|
||||
}
|
||||
|
||||
var ExportDeleteCmd = &cobra.Command{
|
||||
Use: "delete [exportname]",
|
||||
Aliases: []string{"rm"},
|
||||
@@ -115,6 +122,7 @@ func init() {
|
||||
ExportListCmd,
|
||||
ExportDeleteCmd,
|
||||
ExportDownloadCmd,
|
||||
ExportGeneratePresignedURLCmd,
|
||||
ExportJobCmd,
|
||||
)
|
||||
RootCmd.AddCommand(ExportCmd)
|
||||
@@ -171,6 +179,22 @@ func exportDeleteCmdF(c client.Client, command *cobra.Command, args []string) er
|
||||
return nil
|
||||
}
|
||||
|
||||
func exportGeneratePresignedURLCmdF(c client.Client, command *cobra.Command, args []string) error {
|
||||
name := args[0]
|
||||
|
||||
presignedURL, _, err := c.GeneratePresignedURL(context.TODO(), name)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to generate export link: %w", err)
|
||||
}
|
||||
|
||||
printer.PrintT("Export link: {{.Link}}\nExpiration: {{.Expiration}}", map[string]interface{}{
|
||||
"Link": presignedURL.URL,
|
||||
"Expiration": presignedURL.Expiration.String(),
|
||||
})
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func exportDownloadCmdF(c client.Client, command *cobra.Command, args []string) error {
|
||||
var path string
|
||||
name := args[0]
|
||||
|
||||
@@ -40,6 +40,7 @@ SEE ALSO
|
||||
* `mmctl export create <mmctl_export_create.rst>`_ - Create export file
|
||||
* `mmctl export delete <mmctl_export_delete.rst>`_ - Delete export file
|
||||
* `mmctl export download <mmctl_export_download.rst>`_ - Download export files
|
||||
* `mmctl export generate-presigned-url <mmctl_export_generate-presigned-url.rst>`_ - Generate a presigned url for an export file. This is helpful when an export is big and might have trouble downloading from the Mattermost server.
|
||||
* `mmctl export job <mmctl_export_job.rst>`_ - List, show and cancel export jobs
|
||||
* `mmctl export list <mmctl_export_list.rst>`_ - List export files
|
||||
|
||||
|
||||
44
server/cmd/mmctl/docs/mmctl_export_generate-presigned-url.rst
Обычный файл
44
server/cmd/mmctl/docs/mmctl_export_generate-presigned-url.rst
Обычный файл
@@ -0,0 +1,44 @@
|
||||
.. _mmctl_export_generate-presigned-url:
|
||||
|
||||
mmctl export generate-presigned-url
|
||||
-----------------------------------
|
||||
|
||||
Generate a presigned url for an export file. This is helpful when an export is big and might have trouble downloading from the Mattermost server.
|
||||
|
||||
Synopsis
|
||||
~~~~~~~~
|
||||
|
||||
|
||||
Generate a presigned url for an export file. This is helpful when an export is big and might have trouble downloading from the Mattermost server.
|
||||
|
||||
::
|
||||
|
||||
mmctl export generate-presigned-url [exportname] [flags]
|
||||
|
||||
Options
|
||||
~~~~~~~
|
||||
|
||||
::
|
||||
|
||||
-h, --help help for generate-presigned-url
|
||||
|
||||
Options inherited from parent commands
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
::
|
||||
|
||||
--config string path to the configuration file (default "$XDG_CONFIG_HOME/mmctl/config")
|
||||
--disable-pager disables paged output
|
||||
--insecure-sha1-intermediate allows to use insecure TLS protocols, such as SHA-1
|
||||
--insecure-tls-version allows to use TLS versions 1.0 and 1.1
|
||||
--json the output format will be in json format
|
||||
--local allows communicating with the server through a unix socket
|
||||
--quiet prevent mmctl to generate output for the commands
|
||||
--strict will only run commands if the mmctl version matches the server one
|
||||
--suppress-warnings disables printing warning messages
|
||||
|
||||
SEE ALSO
|
||||
~~~~~~~~
|
||||
|
||||
* `mmctl export <mmctl_export.rst>`_ - Management of exports
|
||||
|
||||
@@ -525,6 +525,22 @@ func (mr *MockClientMockRecorder) EnablePlugin(arg0, arg1 interface{}) *gomock.C
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "EnablePlugin", reflect.TypeOf((*MockClient)(nil).EnablePlugin), arg0, arg1)
|
||||
}
|
||||
|
||||
// GeneratePresignedURL mocks base method.
|
||||
func (m *MockClient) GeneratePresignedURL(arg0 context.Context, arg1 string) (*model.PresignURLResponse, *model.Response, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "GeneratePresignedURL", arg0, arg1)
|
||||
ret0, _ := ret[0].(*model.PresignURLResponse)
|
||||
ret1, _ := ret[1].(*model.Response)
|
||||
ret2, _ := ret[2].(error)
|
||||
return ret0, ret1, ret2
|
||||
}
|
||||
|
||||
// GeneratePresignedURL indicates an expected call of GeneratePresignedURL.
|
||||
func (mr *MockClientMockRecorder) GeneratePresignedURL(arg0, arg1 interface{}) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GeneratePresignedURL", reflect.TypeOf((*MockClient)(nil).GeneratePresignedURL), arg0, arg1)
|
||||
}
|
||||
|
||||
// GetAllTeams mocks base method.
|
||||
func (m *MockClient) GetAllTeams(arg0 context.Context, arg1 string, arg2, arg3 int) ([]*model.Team, *model.Response, error) {
|
||||
m.ctrl.T.Helper()
|
||||
|
||||
Ссылка в новой задаче
Block a user