package main import ( "flag" "log" "os" "path" "path/filepath" "strconv" "time" ) var ( TeamsDir string skipInitialSync bool ) func main() { flag.StringVar(&TeamsDir, "teams", "./TEAMS", "Base directory where save teams JSON files") //var debugINotify = flag.Bool("debuginotify", false, "Show skipped inotofy events") flag.BoolVar(&skipInitialSync, "skipinitialsync", skipInitialSync, "Skip the initial synchronization") //watcher := flag.Bool("watch", false, "Enable daemon mode by watching the directory") tspath := flag.String("timestamp-file", "./REMOTE/timestamp", "Path to the file storing the last timestamp") exercicespath := flag.String("exercices-file", "./REMOTE/exercices-bindings.json", "Path to the file containing the ID bindings") coeff := flag.Float64("global-coeff", 10.0, "Coefficient to use to multiply all scores before passing them to the other platform") flag.Parse() api := AirbusAPI{ BaseURL: "https://portal.european-cybercup.lan/api/v1", } if v, exists := os.LookupEnv("AIRBUS_BASEURL"); exists { api.BaseURL = v } if v, exists := os.LookupEnv("AIRBUS_TOKEN"); exists { api.Token = v } if v, exists := os.LookupEnv("AIRBUS_SESSIONID"); exists { var err error api.SessionID, err = strconv.ParseInt(v, 10, 64) if err != nil { log.Fatal("AIRBUS_SESSIONID is invalid: ", err.Error()) } } log.SetPrefix("[challenge-sync-airbus] ") TeamsDir = path.Clean(TeamsDir) // Load the timestamp ts, err := loadTS(*tspath) if err != nil { log.Fatal("Unable to open timestamp file: ", err.Error()) } // Load exercices bindings exbindings, err := ReadExercicesBindings(*exercicespath) if err != nil { log.Fatal("Unable to open exercices bindings file: ", err.Error()) } // Load teams.json teamsbindings, err := getTeams(filepath.Join(TeamsDir, "teams.json")) if err != nil { log.Fatal("Unable to open teams bindings file: ", err.Error()) } w := Walker{ LastSync: *ts, Exercices: exbindings, Teams: teamsbindings, API: api, Coeff: *coeff, } // Iterate over teams scores err = filepath.WalkDir(TeamsDir, w.WalkScore) if err != nil { log.Printf("Something goes wrong during walking") } // Update timestamp for the next time w.LastSync = time.Now() err = saveTS(*tspath, &w.LastSync) if err != nil { log.Fatal("Unable to save timestamp file: ", err.Error()) } }