in groups/reconcile.go [127:200]
func main() {
configFilePath := flag.String("config", defaultConfigFile, "the config file in yaml format")
confirmChanges := flag.Bool("confirm", false, "false by default means that we do not push anything to google groups")
printConfig := flag.Bool("print", false, "print the existing group information")
flag.Usage = Usage
flag.Parse()
if *printConfig {
log.Printf("print: %v -- disabling confirm, will print existing group information", *confirmChanges)
*confirmChanges = false
}
if !*confirmChanges {
log.Printf("confirm: %v -- dry-run mode, changes will not be pushed", *confirmChanges)
}
err := config.Load(*configFilePath, *confirmChanges)
if err != nil {
log.Fatal(err)
}
log.Printf("config: BotID: %v", config.BotID)
log.Printf("config: SecretVersion: %v", config.SecretVersion)
log.Printf("config: GroupsPath: %v", config.GroupsPath)
log.Printf("config: RestrictionsPath: %v", config.RestrictionsPath)
log.Printf("config: ConfirmChanges: %v", config.ConfirmChanges)
err = restrictionsConfig.Load(config.RestrictionsPath)
if err != nil {
log.Fatal(err)
}
err = groupsConfig.Load(config.GroupsPath, &restrictionsConfig)
if err != nil {
log.Fatal(err)
}
serviceAccountKey, err := accessSecretVersion(config.SecretVersion)
if err != nil {
log.Fatalf("Unable to access secret-version %s, %v", config.SecretVersion, err)
}
credential, err := google.JWTConfigFromJSON(serviceAccountKey, admin.AdminDirectoryUserReadonlyScope,
admin.AdminDirectoryGroupScope,
admin.AdminDirectoryGroupMemberScope,
groupssettings.AppsGroupsSettingsScope)
if err != nil {
log.Fatalf("Unable to authenticate using key in secret-version %s, %v", config.SecretVersion, err)
}
credential.Subject = config.BotID
ctx := context.Background()
client := credential.Client(ctx)
clientOption := option.WithHTTPClient(client)
r, err := NewReconciler(ctx, clientOption)
if err != nil {
log.Fatal(err)
}
if *printConfig {
err = r.printGroupMembersAndSettings()
if err != nil {
log.Fatal(err)
}
return
}
log.Println(" ======================= Updates =======================")
err = r.ReconcileGroups(groupsConfig.Groups)
if err != nil {
log.Fatal(err)
}
}