diff options
Diffstat (limited to 'setup.py')
| -rw-r--r-- | setup.py | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..8e69692 --- /dev/null +++ b/setup.py @@ -0,0 +1,100 @@ +# This is a Python script that is used to do a lot of things. It can be thought +# of as a manager script for this project. It is used to install requirements, +# run sorter, linter, start and build the project and more. It will be a +# constantly evolving script as the project evolves. + +import logging as logger +import os +import subprocess +import sys + +import inquirer + +logger.basicConfig(stream=sys.stdout, level=logger.DEBUG) + + +class Setup: + QUIET_INSTALL = "pip install -q -r requirements.txt" + + def shell_run(self, command): + output = subprocess.check_output(command, shell=True) + return output.decode("utf-8") + + def start(self): + if not os.path.exists(".venv"): + self.shell_run("python3 -m venv .venv") + logger.info("Virtual environment created.") + self.shell_run("source .venv/bin/activate") + logger.info("Virtual environment activated.") + logger.info("Installing requirements...") + self.shell_run(self.QUIET_INSTALL) + self.git() + + def git(self): + username = self.shell_run("git config --global user.name") + if username == "": + questions = [ + inquirer.Confirm( + "set_username", + message="Do you want to set git author name?", + default=True, + ), + ] + answers = inquirer.prompt(questions) + if answers["set_username"]: + username = inquirer.text( + message="Enter git author name (not username): " + ) + self.shell_run(f'git config --global user.name "{username}"') + else: + logger.warn("Git author name not set.") + + email = self.shell_run("git config --global user.email") + if email == "": + questions = [ + inquirer.Confirm( + "set_email", + message="Do you want to set git author email?", + default=True, + ), + ] + answers = inquirer.prompt(questions) + if answers["set_email"]: + email = inquirer.text(message="Enter git author email: ") + self.shell_run(f'git config --global user.email "{email}"') + else: + logger.warn("Git author email not set.") + + self.finish() + + def finish(self): + logger.info("Setup finished.") + configure_path = "bin/configure" + script = """#!{} +alias commit="./commit.sh" +alias setup="python3 setup.py" +echo "Added aliases for commit and setup." +echo "" +echo "Run 'setup' to start the setup again." +echo "Run 'commit' to commit changes. Run commit -h for help." +""".format( + os.environ["SHELL"] + ) + with open(configure_path, "w") as f: + f.write(script) + + configure_st = os.stat(configure_path) + os.chmod(configure_path, configure_st.st_mode | 0o111) + print( + """ +You may want to configure aliases for commit and setup scripts. +To do so, run the configurator binary: + + source bin/configure +""" + ) + + +if __name__ == "__main__": + setup = Setup() + setup.start() |
