package main

import (
	"flag"
	"fmt"
	"os"
	"strconv"
)

var anonymousTokens tokenSet

type tokenSet []string

func (ts *tokenSet) Set(s string) error {
	v, err := strconv.ParseBool(s)
	if v && len(*ts) == 0 {
		*ts = append(*ts, os.Getenv("ARVADOS_API_TOKEN"))
	} else if !v {
		*ts = (*ts)[:0]
	}
	return err
}

func (ts *tokenSet) String() string {
	return fmt.Sprintf("%v", len(*ts) > 0)
}

func (ts *tokenSet) IsBoolFlag() bool {
	return true
}

func init() {
	flag.Var(&anonymousTokens, "allow-anonymous",
		"Serve public data to anonymous clients. Try the token supplied in the ARVADOS_API_TOKEN environment variable when none of the tokens provided in an HTTP request succeed in reading the desired collection.")
}