func main() { var db *membersys.MembershipDB var agreement *membersys.MembershipAgreement var config membersys.MemberCreatorConfig var wm *membersys.WelcomeMail var config_contents []byte var config_path string var lookup_key string var help bool var err error flag.BoolVar(&help, "help", false, "Display help") flag.StringVar(&config_path, "config", "", "Path to the member creator configuration file") flag.StringVar(&lookup_key, "key", "", "Key of the user record to look up") flag.Parse() if help || config_path == "" { flag.Usage() os.Exit(1) } config_contents, err = ioutil.ReadFile(config_path) if err != nil { log.Fatal("Unable to read ", config_path, ": ", err) } err = proto.Unmarshal(config_contents, &config) if err != nil { err = proto.UnmarshalText(string(config_contents), &config) } if err != nil { log.Fatal("Error parsing ", config_path, ": ", err) } db, err = membersys.NewMembershipDB( config.DatabaseConfig.GetDatabaseServer(), config.DatabaseConfig.GetDatabaseName(), time.Duration(config.DatabaseConfig.GetDatabaseTimeout())*time.Millisecond) if err != nil { log.Fatal("Unable to connect to the cassandra DB ", config.DatabaseConfig.GetDatabaseServer(), " at ", config.DatabaseConfig.GetDatabaseName(), ": ", err) } wm, err = membersys.NewWelcomeMail(config.GetWelcomeMailConfig()) if err != nil { log.Fatal("Error setting up mailer: ", err) } agreement, err = db.GetMemberDetail(lookup_key) if err != nil { log.Fatal("Error fetching member ", lookup_key, ": ", err) } err = wm.SendMail(agreement.GetMemberData()) if err != nil { log.Fatal("Error sending mail to ", agreement.GetMemberData().GetEmail(), ": ", err) } }