package main

import (
	"context"
	"flag"
	"fmt"
	"time"

	"go.skia.org/infra/go/common"
	"go.skia.org/infra/go/periodic"
	"go.skia.org/infra/go/sklog"
	"golang.org/x/oauth2/google"
)

const (
	// Template used for creating unique IDs for instances of triggers.
	TRIGGER_TS = "2006-01-02"
)

var (
	local   = flag.Bool("local", false, "Running locally if true. As opposed to in production.")
	project = flag.String("project", "", "GCE project in which to publish the pub/sub message.")
	trigger = flag.String("trigger", "", "Name of periodic trigger.")
)

func main() {
	common.Init()
	defer common.Defer()
	ts, err := google.DefaultTokenSource(context.Background(), periodic.AUTH_SCOPE)
	if err != nil {
		sklog.Fatal(err)
	}
	// TODO(borenet): This ID is not necessarily unique; if the cron job is
	// significantly delayed, we might end up sending the same message twice
	// with different dates. It also doesn't allow for periods smaller than
	// 24 hours.
	id := fmt.Sprintf("%s-%s", *trigger, time.Now().UTC().Format(TRIGGER_TS))
	if err := periodic.Trigger(context.Background(), *trigger, id, ts); err != nil {
		sklog.Fatal(err)
	}
}
