2016-08-14 02:11:52 +03:00
// Copyright 2016 The Gogs Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package cmd
import (
"fmt"
2016-08-30 14:57:58 +03:00
"github.com/urfave/cli"
2016-08-14 02:11:52 +03:00
2016-11-03 15:29:56 +03:00
"github.com/go-gitea/gitea/models"
"github.com/go-gitea/gitea/modules/setting"
2016-08-14 02:11:52 +03:00
)
var (
CmdAdmin = cli . Command {
Name : "admin" ,
Usage : "Preform admin operations on command line" ,
Description : ` Allow using internal logic of Gogs without hacking into the source code
to make automatic initialization process more smoothly ` ,
Subcommands : [ ] cli . Command {
subcmdCreateUser ,
} ,
}
subcmdCreateUser = cli . Command {
Name : "create-user" ,
Usage : "Create a new user in database" ,
Action : runCreateUser ,
Flags : [ ] cli . Flag {
stringFlag ( "name" , "" , "Username" ) ,
stringFlag ( "password" , "" , "User password" ) ,
stringFlag ( "email" , "" , "User email address" ) ,
boolFlag ( "admin" , "User is an admin" ) ,
stringFlag ( "config, c" , "custom/conf/app.ini" , "Custom configuration file path" ) ,
} ,
}
)
func runCreateUser ( c * cli . Context ) error {
if ! c . IsSet ( "name" ) {
return fmt . Errorf ( "Username is not specified" )
} else if ! c . IsSet ( "password" ) {
return fmt . Errorf ( "Password is not specified" )
} else if ! c . IsSet ( "email" ) {
return fmt . Errorf ( "Email is not specified" )
}
if c . IsSet ( "config" ) {
setting . CustomConf = c . String ( "config" )
}
setting . NewContext ( )
models . LoadConfigs ( )
models . SetEngine ( )
if err := models . CreateUser ( & models . User {
Name : c . String ( "name" ) ,
Email : c . String ( "email" ) ,
Passwd : c . String ( "password" ) ,
IsActive : true ,
IsAdmin : c . Bool ( "admin" ) ,
} ) ; err != nil {
return fmt . Errorf ( "CreateUser: %v" , err )
}
fmt . Printf ( "New user '%s' has been successfully created!\n" , c . String ( "name" ) )
return nil
}