#!/usr/bin/env python

import argparse

from w1 import Manager
from w1 import Family

parser = argparse.ArgumentParser()

parser.add_argument(
    "--name",
    action="append",
    default=[],
    help="Filter by name, can be used many time"
)
parser.add_argument(
    "--as-integer",
    action="store_true",
    default=False,
    help="Return value as integer"
)
parser.add_argument(
    "--only-value",
    action="store_true",
    default=False,
    help="Just value, no name"
)
parser.add_argument(
    "--unit",
    choices=["celsius", "kelvin", "fahrenheit"],
    default="celsius",
    help="Temperature unit"
)

args = parser.parse_args()

precision = "0" if args.as_integer else "2"

if args.only_value:
    fmt = "{1:." + precision + "f}"
else:
    fmt = "{0:<16} {1:6." + precision + "f}"

names = args.name if args.name else None

manager = Manager()
for slave in manager.slaves(family=Family.THERM, names=names):
    print(
        fmt.format(
            slave.name,
            getattr(slave, args.unit)
        )
    )
