From 90f113dcda43a6455e431029a87e35ab8c537a73 Mon Sep 17 00:00:00 2001 From: George Goldberg Date: Fri, 23 Sep 2016 15:22:28 +0100 Subject: Add Slack Import functionality to CLI. (#4080) * Add Slack Import functionality to CLI. * Remove pointless line. --- mattermost.go | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 58 insertions(+), 2 deletions(-) (limited to 'mattermost.go') diff --git a/mattermost.go b/mattermost.go index 2f277140a..85dfb0891 100644 --- a/mattermost.go +++ b/mattermost.go @@ -63,6 +63,7 @@ var flagCmdResetDatabase bool var flagCmdRunLdapSync bool var flagCmdMigrateAccounts bool var flagCmdActivateUser bool +var flagCmdSlackImport bool var flagUsername string var flagCmdUploadLicense bool var flagConfigFile string @@ -81,6 +82,7 @@ var flagChannelType string var flagChannelHeader string var flagChannelPurpose string var flagUserSetInactive bool +var flagImportArchive string func doLoadConfig(filename string) (err string) { defer func() { @@ -349,6 +351,7 @@ func parseCmds() { flag.StringVar(&flagChannelType, "channel_type", "O", "") flag.StringVar(&flagChannelHeader, "channel_header", "", "") flag.StringVar(&flagChannelPurpose, "channel_purpose", "", "") + flag.StringVar(&flagImportArchive, "import_archive", "", "") flag.BoolVar(&flagCmdUpdateDb30, "upgrade_db_30", false, "") flag.BoolVar(&flagCmdCreateTeam, "create_team", false, "") @@ -375,6 +378,7 @@ func parseCmds() { flag.BoolVar(&flagCmdMigrateAccounts, "migrate_accounts", false, "") flag.BoolVar(&flagCmdUploadLicense, "upload_license", false, "") flag.BoolVar(&flagCmdActivateUser, "activate_user", false, "") + flag.BoolVar(&flagCmdSlackImport, "slack_import", false, "") flag.BoolVar(&flagUserSetInactive, "inactive", false, "") flag.Parse() @@ -402,7 +406,8 @@ func parseCmds() { flagCmdRunLdapSync || flagCmdMigrateAccounts || flagCmdUploadLicense || - flagCmdActivateUser) + flagCmdActivateUser || + flagCmdSlackImport) } func runCmds() { @@ -429,6 +434,7 @@ func runCmds() { cmdRunLdapSync() cmdRunMigrateAccounts() cmdActivateUser() + cmdSlackImport() } type TeamForUpgrade struct { @@ -1370,6 +1376,47 @@ func cmdActivateUser() { } } +func cmdSlackImport() { + if flagCmdSlackImport { + if len(flagTeamName) == 0 { + fmt.Fprintln(os.Stderr, "flag needs an argument: -team_name") + flag.Usage() + os.Exit(1) + } + + if len(flagImportArchive) == 0 { + fmt.Fprintln(os.Stderr, "flag needs an argument: -import_archive") + flag.Usage() + os.Exit(1) + } + + var team *model.Team + if result := <-api.Srv.Store.Team().GetByName(flagTeamName); result.Err != nil { + l4g.Error("%v", result.Err) + flushLogAndExit(1) + } else { + team = result.Data.(*model.Team) + } + + fileReader, err := os.Open(flagImportArchive) + if err != nil { + l4g.Error("%v", err) + flushLogAndExit(1) + } + defer fileReader.Close() + + fileInfo, err := fileReader.Stat() + if err != nil { + l4g.Error("%v", err) + flushLogAndExit(1) + } + + fmt.Fprintln(os.Stdout, "Running Slack Import. This may take a long time for large teams or teams with many messages.") + + api.SlackImport(fileReader, fileInfo.Size(), team.Id) + } +} + func flushLogAndExit(code int) { l4g.Close() time.Sleep(time.Second) @@ -1424,6 +1471,9 @@ FLAGS: "system_admin" - Represents a system admin who has access to all teams and configuration settings. + + -import_archive="export.zip" The path to the archive to import used in other commands + COMMANDS: -activate_user Set a user as active or inactive. It requies the -email flag. @@ -1538,12 +1588,18 @@ COMMANDS: Example: platform -upload_license -license="/path/to/license/example.mattermost-license" - + -migrate_accounts Migrates accounts from one authentication provider to anouther. Requires -from_auth -to_auth and -match_field flags. Supported options for -from_auth: email, gitlab, saml. Supported options for -to_auth ldap. Supported options for -match_field email, username. Will display any accounts that are not migrated succesfully. Example: platform -migrate_accounts -from_auth email -to_auth ldap -match_field username + -slack_import Imports a Slack team export zip file. It requires the -team_name + and -import_archive flags. + + Example: + platform -slack_import -team_name="name" -import_archive="/path/to/slack_export.zip" + -upgrade_db_30 Upgrades the database from a version 2.x schema to version 3 see http://www.mattermost.org/upgrading-to-mattermost-3-0/ -- cgit v1.2.3-1-g7c22