diff options
Diffstat (limited to 'tools/cru-py/crupest/setup.py')
| -rw-r--r-- | tools/cru-py/crupest/setup.py | 233 | 
1 files changed, 0 insertions, 233 deletions
| diff --git a/tools/cru-py/crupest/setup.py b/tools/cru-py/crupest/setup.py deleted file mode 100644 index 4e91302..0000000 --- a/tools/cru-py/crupest/setup.py +++ /dev/null @@ -1,233 +0,0 @@ -from os.path import * -from datetime import datetime -from rich.prompt import Confirm -from .path import * -from .nginx import * -from .config import * -from .helper import * - - -def get_template_name_list(console) -> list[str]: -    console.print("First let's check all the templates...") - -    # get all filenames ending with .template -    template_name_list = [basename(f)[:-len('.template')] for f in os.listdir( -        template_dir) if f.endswith(".template")] -    console.print( -        f"I have found following template files in [magenta]{template_dir}[/]:", style="green") -    for filename in template_name_list: -        console.print(f"{filename}.template", style="magenta") - -    return template_name_list - - -def data_dir_check(domain, console): -    if isdir(data_dir): -        if not exists(join(data_dir, "certbot")): -            print_create_cert_message(domain, console) -        else: -            to_check = Confirm.ask( -                "I want to check your ssl certs, but I need to sudo. Do you want me check", console=console, default=False) -            if to_check: -                check_ssl_cert(domain, console) - - -def template_generate(console): -    template_name_list = get_template_name_list(console) -    template_list: list = [] -    config_var_name_set_in_template = set() -    for template_name in template_name_list: -        template = Template(join(template_dir, template_name+".template")) -        template_list.append(template) -        config_var_name_set_in_template.update(template.var_set) - -    console.print( -        "I have found following variables needed in templates:", style="green") -    for key in config_var_name_set_in_template: -        console.print(key, style="magenta") - -    # check vars -    check_success, more, less = check_config_var_set( -        config_var_name_set_in_template) -    if len(more) != 0: -        console.print("There are more variables in templates than in config file:", -                      style="red") -        for key in more: -            console.print(key, style="magenta") -    if len(less) != 0: -        console.print("Following config vars are not used:", -                      style="yellow") -        for key in less: -            console.print(key, style="magenta") - -    if not check_success: -        console.print( -            "Please check you config vars and make sure the needed ones are defined!", style="red") -    else: -        console.print( -            "Now let's check if they are already generated...") - -        conflict = False - -        # check if there exists any generated files -        for filename in template_name_list: -            if exists(join(project_dir, filename)): -                console.print(f"Found [magenta]{filename}[/]") -                conflict = True - -        to_gen = True -        if conflict: -            to_overwrite = Confirm.ask( -                "It seems there are some files already generated. Do you want to overwrite them?", console=console, default=False) -            if not to_overwrite: -                to_gen = False -                console.print( -                    "Great! Check the existing files and see you next time!", style="green") -        else: -            print("No conflict found. Let's go on!\n") - -        if to_gen: -            console.print("Check for existing config file...") - -            # check if there exists a config file -            if not config_file_exists(): -                config = {} -                console.print( -                    "No existing config file found. Don't worry. Let's create one!", style="green") -                for config_var in config_var_list: -                    config[config_var.name] = config_var.get_default_value() -                config_content = config_to_str(config) -                # create data dir if not exist -                if not exists(data_dir): -                    os.mkdir(data_dir) -                # write config file -                with open(config_file_path, "w") as f: -                    f.write(config_content) -                console.print( -                    f"Everything else is auto generated. The config file is written into [magenta]{config_file_path}[/]. You had better keep it safe. And here is the content:", style="green") -                print_config(console, config) -                is_ok = Confirm.ask( -                    "If you think it's not ok, you can stop here and edit it. Or let's go on?", console=console, default=True) -                if not is_ok: -                    console.print( -                        "Great! Check the config file and see you next time!", style="green") -                    to_gen = False -            else: -                console.print( -                    "Looks like you have already had a config file. Let's check the content:", style="green") -                with open(config_file_path, "r") as f: -                    content = f.read() -                config = parse_config(content) -                print_config(console, config) -                missed_config_vars = [] -                for config_var in config_var_list: -                    if config_var.name not in config: -                        missed_config_vars.append(config_var) - -                if len(missed_config_vars) > 0: -                    console.print( -                        "Oops! It seems you have missed some keys in your config file. Let's add them!", style="green") -                    for config_var in missed_config_vars: -                        config[config_var.name] = config_var.get_default_value( -                            console) -                    content = config_to_str(config) -                    with open(config_file_path, "w") as f: -                        f.write(content) -                    console.print( -                        f"Here is the new config, it has been written out to [magenta]{config_file_path}[/]:") -                    print_config(console, config) -                good_enough = Confirm.ask("Is it good enough?", -                                          console=console, default=True) -                if not good_enough: -                    console.print( -                        "Great! Check the config file and see you next time!", style="green") -                    to_gen = False - -        domain = get_domain() - -        if to_gen: -            console.print( -                "Finally, everything is ready. Let's generate the files:", style="green") - -            # generate files -            for index, template in enumerate(template_list): -                number = index + 1 -                total = len(template_list) -                print_order(number, total, console) -                console.print( -                    f"Generating [magenta]{template.template_name}[/]...") -                content = template.generate(config) -                with open(join(project_dir, template.template_name), "w") as f: -                    f.write(content) - -            # generate nginx config -            if not exists(nginx_config_dir): -                to_gen_nginx_conf = Confirm.ask("It seems you haven't generate nginx config. Do you want to generate it?", -                                                default=True, console=console) -            else: -                # get the latest time of files in nginx template -                template_time = 0 -                for path in os.listdir(nginx_template_dir): -                    template_time = max(template_time, os.stat( -                        join(nginx_template_dir, path)).st_mtime) -                console.print( -                    f"Nginx template update time: {datetime.fromtimestamp(template_time)}") - -                nginx_config_time = 0 -                for path in os.listdir(nginx_config_dir): -                    nginx_config_time = max(nginx_config_time, os.stat( -                        join(nginx_config_dir, path)).st_mtime) -                console.print( -                    f"Generated nginx template update time: {datetime.fromtimestamp(nginx_config_time)}") -                if template_time > nginx_config_time: -                    to_gen_nginx_conf = Confirm.ask("It seems you have updated the nginx template and not regenerate config. Do you want to regenerate the nginx config?", -                                                    default=True, console=console) -                else: -                    to_gen_nginx_conf = Confirm.ask("[yellow]It seems you have already generated nginx config. Do you want to overwrite it?[/]", -                                                    default=False, console=console) -            if to_gen_nginx_conf: -                nginx(domain, config, console) -    data_dir_check(domain, console) - - -def clear(console, /, delete_data_dir=False): -    template_name_list = get_template_name_list(console) -    # check root if we have to delete data dir -    if delete_data_dir and exists(data_dir) and os.geteuid() != 0: -        console.print( -            "You need to be root to delete data dir.", style="red") -        exit(1) - -    to_delete = Confirm.ask( -        "[yellow]Are you sure you want to delete everything? all your data will be lost![/]", default=False, console=console) -    if to_delete: -        files_to_delete = [] -        for template_name in template_name_list: -            f = join(project_dir, template_name) -            if exists(f): -                files_to_delete.append(f) - -    delete_data_dir = delete_data_dir and exists( -        data_dir) - -    if len(files_to_delete) == 0: -        console.print( -            "Nothing to delete. We are safe!", style="green") -    else: -        console.print("Here are the files to delete:") -        for f in files_to_delete: -            console.print(f, style="magenta") -        if delete_data_dir: -            console.print(data_dir + " (data dir)", -                          style="magenta") - -        to_delete = Confirm.ask( -            "[red]Are you sure you want to delete them?[/]", default=False, console=console) -        if to_delete: -            for f in files_to_delete: -                os.remove(f) -            if delete_data_dir: -                # recursively delete data dir -                shutil.rmtree(data_dir) -        console.print( -            "Your workspace is clean now!", style="green") | 
