-
Notifications
You must be signed in to change notification settings - Fork 0
/
mkacc.go
39 lines (37 loc) · 789 Bytes
/
mkacc.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package rs
import (
"flag"
"fmt"
)
// Mkacc creates an account.
func Mkacc(cmd *Cmd) error {
flags := flag.NewFlagSet("mkacc", flag.ContinueOnError)
uid := flags.Int("uid", -1, "optional uid of the new account")
gid := flags.Int("gid", -1, "optional gid of the new account")
flags.SetOutput(cmd.Out)
if err := flags.Parse(cmd.Args); err != nil {
if err == flag.ErrHelp {
return nil
}
return err
}
Name := flags.Arg(0)
if Name == "" {
return fmt.Errorf("missing account name")
}
if *uid == -1 {
*uid = cmd.Sys.NextUID()
}
if *gid == -1 {
*gid = cmd.Sys.NextGID()
}
if *uid < 2 {
return fmt.Errorf("invalid uid")
}
if *gid < 2 {
return fmt.Errorf("invalid gid")
}
acc := NewAccount(Name, *uid)
acc.Groups[0] = *gid
return cmd.Sys.AddAccount(acc)
}