func publish(c *cli.Context) error { if c.String("env-file") != "" { _ = godotenv.Load(c.String("env-file")) } logrus.Debugf("finding coverage files that match %s", c.String("pattern")) matches, err := zglob.Glob(c.String("pattern")) if err != nil { return err } var profiles []*cover.Profile for _, match := range matches { ok, reader := coverage.FromFile(match) if !ok { continue } logrus.Debugf("found coverage file %s", match) parsed, rerr := reader.ReadFile(match) if rerr != nil { return err } for _, p := range parsed { profiles = addProfile(profiles, p) } } // create the coverage payload that gets sent to the // coverage reporting server. report := profileToReport(profiles) build := client.Build{ Number: c.Int("build.number"), Event: c.String("build.event"), Commit: c.String("commit.sha"), Branch: c.String("commit.branch"), Ref: c.String("commit.ref"), Message: c.String("commit.message"), Author: c.String("commit.author.name"), Avatar: c.String("commit.author.avatar"), Link: c.String("build.link"), Timestamp: time.Now().UTC().Unix(), } // get the base directory base := c.String("trim.prefix") if len(base) == 0 { base, err = os.Getwd() if err != nil { return err } logrus.Debug("Using current working directory") } logrus.Debugf("Base directory is %s", base) findFileReferences(report, base) var ( repo = c.String("repo.fullname") server = c.String("server") secret = c.String("token") cert = c.String("cert") ) cli := newClient(server, cert, "") token, err := cli.Token(secret) if err != nil { return err } cli = newClient(server, cert, token.Access) // check and see if the repository exists. if not, activate if _, err := cli.Repo(repo); err != nil { if _, err := cli.Activate(repo); err != nil { return err } } resp, err := cli.Submit(repo, &build, report) if err != nil { return err } switch { case resp.Changed > 0: fmt.Printf("Code coverage increased %.1f%% to %.1f%%\n", resp.Changed, resp.Coverage) case resp.Changed < 0: fmt.Printf("Code coverage dropped %.1f%% to %.1f%%\n", resp.Changed, resp.Coverage) default: fmt.Printf("Code coverage unchanged, %.1f%%\n", resp.Coverage) } if c.Float64("threshold") < resp.Coverage && c.Float64("threshold") != 0 { return fmt.Errorf("Failing build. Coverage threshold may not fall below %.1f%%\n", c.Float64("threshold")) } if resp.Changed < 0 && c.Bool("increase") { return fmt.Errorf("Failing build. Coverage may not decrease") } return nil }
func cmdTripEdit(c *cli.Context) error { // Get loggers printUserMsg, printError := getLoggers() // Check obligatory flags if c.String("file") == NotSetStringValue { printError.Fatalln(errMissingFileFlag) } id := c.Int("id") if id == NotSetIntValue { printError.Fatalln(errMissingIdFlag) } // Open data file f := gsqlitehandler.New(c.String("file"), dataFileProperties) if err := f.Open(); err != nil { printError.Fatalln(err) } defer f.Close() // Edit trip sqlUpdateTrip := fmt.Sprintf("BEGIN TRANSACTION;") tCategory := c.String("category") if tCategory != NotSetStringValue { tCategoryId, err := tripCategoryIDForName(f.Handler, tCategory) if err != nil { printError.Fatalln(err) } sqlUpdateTrip = sqlUpdateTrip + fmt.Sprintf("UPDATE trips SET trip_category_id=%d WHERE id=%d;", tCategoryId, id) } tBicycle := c.String("bicycle") if tBicycle != NotSetStringValue { tBicycleId, err := bicycleIDForName(f.Handler, tBicycle) if err != nil { printError.Fatalln(err) } sqlUpdateTrip = sqlUpdateTrip + fmt.Sprintf("UPDATE trips SET bicycle_id=%d WHERE id=%d;", tBicycleId, id) } tDate := c.String("date") if tDate != NotSetStringValue { sqlUpdateTrip = sqlUpdateTrip + fmt.Sprintf("UPDATE trips SET date='%s' WHERE id=%d;", tDate, id) } tTitle := c.String("title") if tTitle != NotSetStringValue { sqlUpdateTrip = sqlUpdateTrip + fmt.Sprintf("UPDATE trips SET title='%s' WHERE id=%d;", tTitle, id) } tDistance := c.Float64("distance") if tDistance != NotSetFloatValue { sqlUpdateTrip = sqlUpdateTrip + fmt.Sprintf("UPDATE trips SET distance=%f WHERE id=%f;", tDistance, id) } tDuration := c.String("duration") if tDuration != NotSetStringValue { durationValue, err := time.ParseDuration(tDuration) if err != nil { printError.Fatalln(errWrongDurationFormat) } sqlUpdateTrip = sqlUpdateTrip + fmt.Sprintf("UPDATE trips SET duration='%s' WHERE id=%d;", durationValue.String(), id) } tDescription := c.String("description") if tDescription != NotSetStringValue { sqlUpdateTrip = sqlUpdateTrip + fmt.Sprintf("UPDATE trips SET description='%s' WHERE id=%d;", tDescription, id) } tHrMax := c.Int("hrmax") if tHrMax != NotSetIntValue { sqlUpdateTrip = sqlUpdateTrip + fmt.Sprintf("UPDATE trips SET hr_max=%d WHERE id=%d;", tHrMax, id) } tHrAvg := c.Int("hravg") if tHrAvg != NotSetIntValue { sqlUpdateTrip = sqlUpdateTrip + fmt.Sprintf("UPDATE trips SET hr_avg=%d WHERE id=%d;", tHrAvg, id) } tSpeedMax := c.Float64("speed_max") if tSpeedMax != NotSetFloatValue { sqlUpdateTrip = sqlUpdateTrip + fmt.Sprintf("UPDATE trips SET speed_max=%f WHERE id=%d;", tSpeedMax, id) } tDriveways := c.Float64("driveways") if tDriveways != NotSetFloatValue { sqlUpdateTrip = sqlUpdateTrip + fmt.Sprintf("UPDATE trips SET driveways=%f WHERE id=%d;", tDriveways, id) } tCalories := c.Int("calories") if tCalories != NotSetIntValue { sqlUpdateTrip = sqlUpdateTrip + fmt.Sprintf("UPDATE trips SET calories=%d WHERE id=%d;", tCalories, id) } tTemperature := c.Float64("temperature") if tTemperature != NotSetFloatValue { sqlUpdateTrip = sqlUpdateTrip + fmt.Sprintf("UPDATE trips SET calories=%f WHERE id=%d;", tTemperature, id) } sqlUpdateTrip = sqlUpdateTrip + fmt.Sprintf("COMMIT;") r, err := f.Handler.Exec(sqlUpdateTrip) if err != nil { printError.Fatalln(errWritingToFile) } if i, _ := r.RowsAffected(); i == 0 { printError.Fatalln(errNoBicycleWithID) } // Show summary printUserMsg.Printf("changed trip details\n") return nil }
func cmdBicycleEdit(c *cli.Context) error { // Get loggers printUserMsg, printError := getLoggers() // Check obligatory flags if c.String("file") == NotSetStringValue { printError.Fatalln(errMissingFileFlag) } id := c.Int("id") if id == NotSetIntValue { printError.Fatalln(errMissingIdFlag) } // Open data file f := gsqlitehandler.New(c.String("file"), dataFileProperties) if err := f.Open(); err != nil { printError.Fatalln(err) } defer f.Close() // Edit bicycle sqlUpdateBicycle := fmt.Sprintf("BEGIN TRANSACTION;") bType := c.String("type") if bType != NotSetStringValue { bTypeId, err := bicycleTypeIDForName(f.Handler, bType) if err != nil { printError.Fatalln(err) } sqlUpdateBicycle = sqlUpdateBicycle + fmt.Sprintf("UPDATE bicycles SET bicycle_type_id=%d WHERE id=%d;", bTypeId, id) } bStatus := c.String("status") if bStatus != NotSetStringValue { bStatusId, err := bicycleStatusNoForName(bStatus) if err != nil { printError.Fatalln(err) } sqlUpdateBicycle = sqlUpdateBicycle + fmt.Sprintf("UPDATE bicycles SET status=%d WHERE id=%d;", bStatusId, id) } bName := c.String("bicycle") if bName != NotSetStringValue { sqlUpdateBicycle = sqlUpdateBicycle + fmt.Sprintf("UPDATE bicycles SET name='%s' WHERE id=%d;", bName, id) } bManufacturer := c.String("manufacturer") if bManufacturer != NotSetStringValue { sqlUpdateBicycle = sqlUpdateBicycle + fmt.Sprintf("UPDATE bicycles SET producer='%s' WHERE id=%d;", bManufacturer, id) } bModel := c.String("model") if bModel != NotSetStringValue { sqlUpdateBicycle = sqlUpdateBicycle + fmt.Sprintf("UPDATE bicycles SET model='%s' WHERE id=%d;", bModel, id) } bYear := c.Int("year") if bYear != NotSetIntValue { sqlUpdateBicycle = sqlUpdateBicycle + fmt.Sprintf("UPDATE bicycles SET production_year=%d WHERE id=%d;", bYear, id) } bBought := c.String("bought") if bBought != NotSetStringValue { sqlUpdateBicycle = sqlUpdateBicycle + fmt.Sprintf("UPDATE bicycles SET buying_date='%s' WHERE id=%d;", bBought, id) } bDesc := c.String("description") if bDesc != NotSetStringValue { sqlUpdateBicycle = sqlUpdateBicycle + fmt.Sprintf("UPDATE bicycles SET description='%s' WHERE id=%d;", bDesc, id) } bSize := c.String("size") if bSize != NotSetStringValue { sqlUpdateBicycle = sqlUpdateBicycle + fmt.Sprintf("UPDATE bicycles SET size='%s' WHERE id=%d;", bSize, id) } bWeight := c.Float64("weight") if bWeight != NotSetFloatValue { sqlUpdateBicycle = sqlUpdateBicycle + fmt.Sprintf("UPDATE bicycles SET weight=%f WHERE id=%d;", bWeight, id) } bIDist := c.Float64("init_distance") if bIDist != NotSetFloatValue { sqlUpdateBicycle = sqlUpdateBicycle + fmt.Sprintf("UPDATE bicycles SET initial_distance=%f WHERE id=%d;", bIDist, id) } bSeries := c.String("series") if bSeries != NotSetStringValue { sqlUpdateBicycle = sqlUpdateBicycle + fmt.Sprintf("UPDATE bicycles SET series_no='%s' WHERE id=%d;", bSeries, id) } sqlUpdateBicycle = sqlUpdateBicycle + fmt.Sprintf("COMMIT;") r, err := f.Handler.Exec(sqlUpdateBicycle) if err != nil { printError.Fatalln(errWritingToFile) } if i, _ := r.RowsAffected(); i == 0 { printError.Fatalln(errNoBicycleWithID) } // Show summary printUserMsg.Printf("changed bicycle details\n") return nil }
func cmdTripAdd(c *cli.Context) error { // Get loggers printUserMsg, printError := getLoggers() // Check obligatory flags (file, title, bicycle, trip category, distance) if c.String("file") == NotSetStringValue { printError.Fatalln(errMissingFileFlag) } tDate := c.String("date") if tDate == NotSetStringValue { tDate = time.Now().Format("2006-01-02") } tTitle := c.String("title") if tTitle == NotSetStringValue { printError.Fatalln(errMissingTitleFlag) } tBicycle := c.String("bicycle") if tBicycle == NotSetStringValue { printError.Fatalln(errMissingBicycleFlag) } tCategory := c.String("category") if tCategory == NotSetStringValue { printError.Fatalln(errMissingCategoryFlag) } tDistance := c.Float64("distance") if tDistance == NotSetFloatValue { printError.Fatalln(errMissingDistanceFlag) } // Open data file f := gsqlitehandler.New(c.String("file"), dataFileProperties) if err := f.Open(); err != nil { printError.Fatalln(err) } defer f.Close() // Add new trip tBicycleId, err := bicycleIDForName(f.Handler, tBicycle) if err != nil { printError.Fatalln(err) } tCategoryId, err := tripCategoryIDForName(f.Handler, tCategory) if err != nil { printError.Fatalln(err) } sqlAddTrip := fmt.Sprintf("BEGIN TRANSACTION;") sqlAddTrip = sqlAddTrip + fmt.Sprintf("INSERT INTO trips (id, bicycle_id, date,title, trip_category_id, distance) VALUES (NULL, %d, '%s', '%s', %d, %f);", tBicycleId, tDate, tTitle, tCategoryId, tDistance) tDuration := c.String("duration") if tDuration != NotSetStringValue { durationValue, err := time.ParseDuration(tDuration) if err != nil { printError.Fatalln(errWrongDurationFormat) } sqlAddTrip = sqlAddTrip + fmt.Sprintf("UPDATE trips SET duration='%s' WHERE id=last_insert_rowid();", durationValue.String()) } tDescription := c.String("description") if tDescription != NotSetStringValue { sqlAddTrip = sqlAddTrip + fmt.Sprintf("UPDATE trips SET description='%s' WHERE id=last_insert_rowid();", tDescription) } tHRMax := c.Int("hrmax") if tHRMax != NotSetIntValue { sqlAddTrip = sqlAddTrip + fmt.Sprintf("UPDATE trips SET hr_max=%d WHERE id=last_insert_rowid();", tHRMax) } tHRAvg := c.Int("hravg") if tHRAvg != NotSetIntValue { sqlAddTrip = sqlAddTrip + fmt.Sprintf("UPDATE trips SET hr_avg=%d WHERE id=last_insert_rowid();", tHRAvg) } tSpeedMax := c.Float64("speed_max") if tSpeedMax != NotSetFloatValue { sqlAddTrip = sqlAddTrip + fmt.Sprintf("UPDATE trips SET speed_max=%f WHERE id=last_insert_rowid();", tSpeedMax) } tDriveways := c.Float64("driveways") if tDriveways != NotSetFloatValue { sqlAddTrip = sqlAddTrip + fmt.Sprintf("UPDATE trips SET driveways=%f WHERE id=last_insert_rowid();", tDriveways) } tCalories := c.Int("calories") if tCalories != NotSetIntValue { sqlAddTrip = sqlAddTrip + fmt.Sprintf("UPDATE trips SET calories=%d WHERE id=last_insert_rowid();", tCalories) } tTemperature := c.Float64("temperature") if tTemperature != NotSetFloatValue { sqlAddTrip = sqlAddTrip + fmt.Sprintf("UPDATE trips SET temperature=%f WHERE id=last_insert_rowid();", tTemperature) } sqlAddTrip = sqlAddTrip + fmt.Sprintf("COMMIT;") if _, err = f.Handler.Exec(sqlAddTrip); err != nil { printError.Fatalln(errWritingToFile) } // Show summary printUserMsg.Printf("added new trip: '%s'\n", tTitle) return nil }
func cmdBicycleAdd(c *cli.Context) error { // Get loggers printUserMsg, printError := getLoggers() // Check obligatory flags (file, bicycle, bicycle type) if c.String("file") == NotSetStringValue { printError.Fatalln(errMissingFileFlag) } bName := c.String("bicycle") if bName == NotSetStringValue { printError.Fatalln(errMissingBicycleFlag) } bType := c.String("type") if bType == NotSetStringValue { printError.Fatalln(errMissingTypeFlag) } // Open data file f := gsqlitehandler.New(c.String("file"), dataFileProperties) if err := f.Open(); err != nil { printError.Fatalln(err) } defer f.Close() // Add new bicycle bTypeId, err := bicycleTypeIDForName(f.Handler, bType) if err != nil { printError.Fatalln(err) } sqlAddBicycle := fmt.Sprintf("BEGIN TRANSACTION;INSERT INTO bicycles (id, name, bicycle_type_id) VALUES (NULL, '%s', %d);", bName, bTypeId) bManufacturer := c.String("manufacturer") if bManufacturer != NotSetStringValue { sqlAddBicycle = sqlAddBicycle + fmt.Sprintf("UPDATE bicycles SET producer='%s' WHERE id=last_insert_rowid();", bManufacturer) } bModel := c.String("model") if bModel != NotSetStringValue { sqlAddBicycle = sqlAddBicycle + fmt.Sprintf("UPDATE bicycles SET model='%s' WHERE id=last_insert_rowid();", bModel) } bYear := c.Int("year") if bYear != NotSetIntValue { sqlAddBicycle = sqlAddBicycle + fmt.Sprintf("UPDATE bicycles SET production_year=%d WHERE id=last_insert_rowid();", bYear) } bBought := c.String("bought") if bBought != NotSetStringValue { sqlAddBicycle = sqlAddBicycle + fmt.Sprintf("UPDATE bicycles SET buying_date='%s' WHERE id=last_insert_rowid();", bBought) } bDesc := c.String("description") if bDesc != NotSetStringValue { sqlAddBicycle = sqlAddBicycle + fmt.Sprintf("UPDATE bicycles SET description='%s' WHERE id=last_insert_rowid();", bDesc) } bStatus := c.String("status") if bStatus == NotSetStringValue { sqlAddBicycle = sqlAddBicycle + fmt.Sprintf("UPDATE bicycles SET status=%d WHERE id=last_insert_rowid();", bicycleStatuses["owned"]) } else { bStatusID, err := bicycleStatusNoForName(bStatus) if err != nil { printError.Fatalln(err) } sqlAddBicycle = sqlAddBicycle + fmt.Sprintf("UPDATE bicycles SET status=%d WHERE id=last_insert_rowid();", bStatusID) } bSize := c.String("size") if bSize != NotSetStringValue { sqlAddBicycle = sqlAddBicycle + fmt.Sprintf("UPDATE bicycles SET size='%s' WHERE id=last_insert_rowid();", bSize) } bWeight := c.Float64("weight") if bWeight != NotSetFloatValue { sqlAddBicycle = sqlAddBicycle + fmt.Sprintf("UPDATE bicycles SET weight=%f WHERE id=last_insert_rowid();", bWeight) } bIDist := c.Float64("init_distance") if bIDist != NotSetFloatValue { sqlAddBicycle = sqlAddBicycle + fmt.Sprintf("UPDATE bicycles SET initial_distance=%f WHERE id=last_insert_rowid();", bIDist) } bSeries := c.String("series") if bSeries != NotSetStringValue { sqlAddBicycle = sqlAddBicycle + fmt.Sprintf("UPDATE bicycles SET series_no='%s' WHERE id=last_insert_rowid();", bSeries) } sqlAddBicycle = sqlAddBicycle + fmt.Sprintf("COMMIT;") if _, err = f.Handler.Exec(sqlAddBicycle); err != nil { printError.Fatalln(errWritingToFile) } // Show summary printUserMsg.Printf("added new bicycle: %s\n", bName) return nil }