package main

import (
	"strconv"
)

type optionalBoolFlag struct {
	Exists bool
	Value  bool
}

func (flag *optionalBoolFlag) String() string {
	return strconv.FormatBool(flag.Value)
}

func (flag *optionalBoolFlag) Set(s string) error {
	v, err := strconv.ParseBool(s)
	if err != nil {
		return err
	}
	flag.Exists = true
	flag.Value = v
	return nil
}

func (flag *optionalBoolFlag) IsBoolFlag() bool {
	return true
}