'Main execution path'

def __init__(self):

    self.inventory = self._empty_inventory()
    self.index = {}
    self.read_settings()
    self.parse_cli_args()
    if self.args.refresh_cache:
        self.do_api_calls_update_cache()
    elif (not self.is_cache_valid()):
        self.do_api_calls_update_cache()
    if self.args.host:
        data_to_print = self.get_host_info()
    elif self.args.list:
        if (self.inventory == self._empty_inventory()):
            data_to_print = self.get_inventory_from_cache()
        else:
            data_to_print = self.json_format_dict(self.inventory, True)
    print data_to_print
