def main(cmdline=None): # Parse the command line arguments parser = argparse.ArgumentParser(prog='initdb',description="Initialize the database for the thermostat backend.") parser.add_argument('-c','--config',help='Configuration file path',default='thermostat.conf',dest='configfile',metavar='filename') parser.add_argument('-y','--yes',action='store_true',help='Answer "yes" to all prompts') if cmdline is None: args = parser.parse_args() else: args = parser.parse_args(cmdline) # Get the config file name from command line defaultfile = 'thermostat.conf.defaults' config = Config(args.configfile,defaultfile) # Create engine and bind session cxn = config.option('connection') echo = config.option('debug/echosql',Config.BOOL) engine = create_engine(cxn,echo=echo) # Check which tables are already there mdtables = [x for x in Base.metadata.tables] enginetables = engine.table_names() existing,new = [],[] for t in mdtables: if t in enginetables: existing.append(t) else: new.append(t) # Confirm table creations confirmstring = 'Tables in engine: {0}\nTables to create: {1}\n' print(confirmstring.format(','.join(existing),','.join(new))) if len(new) > 0: # Boolean short-circuit: only prompts if not args['yes'] if args.yes==True or input('Continue? [y/n] ').lower() == 'y': Base.metadata.create_all(engine) print('Done.') else: print('Abort.') else: print('No tables to create.') return 0
def main(cmdline=None): """Main entry point.""" # Set up command line parser parser = argparse.ArgumentParser( prog='manage-sensors', description='Manage the sensors in the database') parser.add_argument('-c', '--config', help='Configuration file path', default='thermostat.conf', dest='configfile', metavar='filename') parser.add_argument('-y', '--yes', action='store_true', help='Answer "yes" to all prompts') main_subparsers = parser.add_subparsers() parser_list = main_subparsers.add_parser( 'list', description='List all sensors organized by group', help='List all sensors organized by group') parser_list.set_defaults(func=listsensors) parser_add = main_subparsers.add_parser( 'addsensor', description='Add a sensor to the database', help='Add a sensor') parser_add.add_argument('-n', '--name') parser_add.add_argument('-d', '--description') add_subparsers = parser_add.add_subparsers(help='Type of sensor to add') parser_aw = add_subparsers.add_parser( 'accuweather', description='Add an Accuweather sensor to the database', help='Add Accuweather sensor') parser_aw.add_argument('zipcode', help='ZIP Code for Accuweather sensor') parser_aw.set_defaults(func=add_accuweather) parser_w1 = add_subparsers.add_parser( 'w1therm', description='Add a W1Therm sensor to the database', help='Add W1Therm sensor') parser_w1.add_argument('type', type=int) parser_w1.add_argument('id') parser_w1.set_defaults(func=add_w1therm) parser_addgroup = main_subparsers.add_parser( 'addgroup', description='Add a sensor group to the database', help='Add a sensor group') parser_addgroup.add_argument('name') parser_addgroup.add_argument('-d', '--description') parser_addgroup.set_defaults(func=add_group) parser_changegroup = main_subparsers.add_parser( 'changegroup', description= "Change a sensor's assigned group. Leave groupid blank to remove its group.", help="Change a sensor's group") parser_changegroup.add_argument('sensorid', type=int, help='ID of the sensor to modify') parser_changegroup.add_argument( 'groupid', nargs='?', default=None, type=int, help="ID of the sensor's new group (blank for none)") parser_changegroup.set_defaults(func=change_group) parser_readsensor = main_subparsers.add_parser( 'readsensor', description="Take a reading from a sensor", help="Read a sensor's value") parser_readsensor.add_argument('sensorid', type=int, help='ID of the sensor to be read') parser_readsensor.add_argument('-s', '--save', action='store_true', help='Save the reading to the database') parser_readsensor.set_defaults(func=readsensor) if cmdline is None: args = parser.parse_args() else: args = parser.parse_args(cmdline) # Get the config file name from command line defaultfile = 'thermostat.conf.defaults' config = Config(args.configfile, defaultfile) # Create engine and bind session cxn = config.option('connection') echo = config.option('debug/echosql', Config.BOOL) engine = create_engine(cxn, echo=echo) Session.configure(bind=engine) # Check what the command is and call appropriate function args.func(args) return 0
def main(cmdline=None): """Main entry point.""" # Set up command line parser parser = argparse.ArgumentParser(prog="manage-sensors", description="Manage the sensors in the database") parser.add_argument( "-c", "--config", help="Configuration file path", default="thermostat.conf", dest="configfile", metavar="filename", ) parser.add_argument("-y", "--yes", action="store_true", help='Answer "yes" to all prompts') main_subparsers = parser.add_subparsers() parser_list = main_subparsers.add_parser( "list", description="List all sensors organized by group", help="List all sensors organized by group" ) parser_list.set_defaults(func=listsensors) parser_add = main_subparsers.add_parser( "addsensor", description="Add a sensor to the database", help="Add a sensor" ) parser_add.add_argument("-n", "--name") parser_add.add_argument("-d", "--description") add_subparsers = parser_add.add_subparsers(help="Type of sensor to add") parser_aw = add_subparsers.add_parser( "accuweather", description="Add an Accuweather sensor to the database", help="Add Accuweather sensor" ) parser_aw.add_argument("zipcode", help="ZIP Code for Accuweather sensor") parser_aw.set_defaults(func=add_accuweather) parser_w1 = add_subparsers.add_parser( "w1therm", description="Add a W1Therm sensor to the database", help="Add W1Therm sensor" ) parser_w1.add_argument("type", type=int) parser_w1.add_argument("id") parser_w1.set_defaults(func=add_w1therm) parser_addgroup = main_subparsers.add_parser( "addgroup", description="Add a sensor group to the database", help="Add a sensor group" ) parser_addgroup.add_argument("name") parser_addgroup.add_argument("-d", "--description") parser_addgroup.set_defaults(func=add_group) parser_changegroup = main_subparsers.add_parser( "changegroup", description="Change a sensor's assigned group. Leave groupid blank to remove its group.", help="Change a sensor's group", ) parser_changegroup.add_argument("sensorid", type=int, help="ID of the sensor to modify") parser_changegroup.add_argument( "groupid", nargs="?", default=None, type=int, help="ID of the sensor's new group (blank for none)" ) parser_changegroup.set_defaults(func=change_group) parser_readsensor = main_subparsers.add_parser( "readsensor", description="Take a reading from a sensor", help="Read a sensor's value" ) parser_readsensor.add_argument("sensorid", type=int, help="ID of the sensor to be read") parser_readsensor.add_argument("-s", "--save", action="store_true", help="Save the reading to the database") parser_readsensor.set_defaults(func=readsensor) if cmdline is None: args = parser.parse_args() else: args = parser.parse_args(cmdline) # Get the config file name from command line defaultfile = "thermostat.conf.defaults" config = Config(args.configfile, defaultfile) # Create engine and bind session cxn = config.option("connection") echo = config.option("debug/echosql", Config.BOOL) engine = create_engine(cxn, echo=echo) Session.configure(bind=engine) # Check what the command is and call appropriate function args.func(args) return 0