Add Slack Import functionality to CLI. (#4080)

* Add Slack Import functionality to CLI.

* Remove pointless line.
Этот коммит содержится в:
George Goldberg
2016-09-23 15:22:28 +01:00
коммит произвёл Christopher Speller
родитель 2ca0e8f9a0
Коммит 90f113dcda

Просмотреть файл

@@ -63,6 +63,7 @@ var flagCmdResetDatabase bool
var flagCmdRunLdapSync bool var flagCmdRunLdapSync bool
var flagCmdMigrateAccounts bool var flagCmdMigrateAccounts bool
var flagCmdActivateUser bool var flagCmdActivateUser bool
var flagCmdSlackImport bool
var flagUsername string var flagUsername string
var flagCmdUploadLicense bool var flagCmdUploadLicense bool
var flagConfigFile string var flagConfigFile string
@@ -81,6 +82,7 @@ var flagChannelType string
var flagChannelHeader string var flagChannelHeader string
var flagChannelPurpose string var flagChannelPurpose string
var flagUserSetInactive bool var flagUserSetInactive bool
var flagImportArchive string
func doLoadConfig(filename string) (err string) { func doLoadConfig(filename string) (err string) {
defer func() { defer func() {
@@ -349,6 +351,7 @@ func parseCmds() {
flag.StringVar(&flagChannelType, "channel_type", "O", "") flag.StringVar(&flagChannelType, "channel_type", "O", "")
flag.StringVar(&flagChannelHeader, "channel_header", "", "") flag.StringVar(&flagChannelHeader, "channel_header", "", "")
flag.StringVar(&flagChannelPurpose, "channel_purpose", "", "") flag.StringVar(&flagChannelPurpose, "channel_purpose", "", "")
flag.StringVar(&flagImportArchive, "import_archive", "", "")
flag.BoolVar(&flagCmdUpdateDb30, "upgrade_db_30", false, "") flag.BoolVar(&flagCmdUpdateDb30, "upgrade_db_30", false, "")
flag.BoolVar(&flagCmdCreateTeam, "create_team", false, "") flag.BoolVar(&flagCmdCreateTeam, "create_team", false, "")
@@ -375,6 +378,7 @@ func parseCmds() {
flag.BoolVar(&flagCmdMigrateAccounts, "migrate_accounts", false, "") flag.BoolVar(&flagCmdMigrateAccounts, "migrate_accounts", false, "")
flag.BoolVar(&flagCmdUploadLicense, "upload_license", false, "") flag.BoolVar(&flagCmdUploadLicense, "upload_license", false, "")
flag.BoolVar(&flagCmdActivateUser, "activate_user", false, "") flag.BoolVar(&flagCmdActivateUser, "activate_user", false, "")
flag.BoolVar(&flagCmdSlackImport, "slack_import", false, "")
flag.BoolVar(&flagUserSetInactive, "inactive", false, "") flag.BoolVar(&flagUserSetInactive, "inactive", false, "")
flag.Parse() flag.Parse()
@@ -402,7 +406,8 @@ func parseCmds() {
flagCmdRunLdapSync || flagCmdRunLdapSync ||
flagCmdMigrateAccounts || flagCmdMigrateAccounts ||
flagCmdUploadLicense || flagCmdUploadLicense ||
flagCmdActivateUser) flagCmdActivateUser ||
flagCmdSlackImport)
} }
func runCmds() { func runCmds() {
@@ -429,6 +434,7 @@ func runCmds() {
cmdRunLdapSync() cmdRunLdapSync()
cmdRunMigrateAccounts() cmdRunMigrateAccounts()
cmdActivateUser() cmdActivateUser()
cmdSlackImport()
} }
type TeamForUpgrade struct { 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) { func flushLogAndExit(code int) {
l4g.Close() l4g.Close()
time.Sleep(time.Second) time.Sleep(time.Second)
@@ -1424,6 +1471,9 @@ FLAGS:
"system_admin" - Represents a system "system_admin" - Represents a system
admin who has access to all teams admin who has access to all teams
and configuration settings. and configuration settings.
-import_archive="export.zip" The path to the archive to import used in other commands
COMMANDS: COMMANDS:
-activate_user Set a user as active or inactive. It requies -activate_user Set a user as active or inactive. It requies
the -email flag. the -email flag.
@@ -1538,12 +1588,18 @@ COMMANDS:
Example: Example:
platform -upload_license -license="/path/to/license/example.mattermost-license" 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. -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: Example:
platform -migrate_accounts -from_auth email -to_auth ldap -match_field username 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 -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/ http://www.mattermost.org/upgrading-to-mattermost-3-0/