def push_file_to_remote(self, filename): os.chdir(self.path) stdout, stderr, returncode = functions.run_process(f"git add {filename}") if returncode == 0: print(stdout) stdout, stderr, returncode = functions.run_process(f"git commit -m '[project cli] generate {filename}'") if returncode == 0: print(stdout) stdout, stderr, returncode = functions.run_process(f"git push {self.remote} {self.branch}") if returncode == 0: print(stdout) else: print(stdout, stderr, returncode) else: print(stdout, stderr, returncode) else: print(stdout, stderr, returncode)
def create_requirements(self): pip_freeze_command = f"{self.pip} freeze" stdout, stderr, returncode = functions.run_process(pip_freeze_command) if returncode == 0: print(pip_freeze_command) self.requirements = stdout functions.create_file(f"{self.path}/requirements.txt", self.requirements)
def initialise_git(self, branch='master'): #TODO: refactor to use git-flow cli tool stdout, stderr, returncode = functions.run_process("git init") if returncode == 0: self.repo_name = self.name self.branch = branch print(stdout) return True else: print("Error initialising git.")
def initialise_environment(self): create_venv_command = f"python3 -m venv {self.path}/venv" stdout, stderr, returncode = functions.run_process(create_venv_command) if returncode == 0: print(create_venv_command) self.env = f"{self.path}/venv" self.pip = f"{self.env}/bin/pip" self.python = f"{self.env}/bin/python" return True else: print(stderr)
def install_packages(self, packages): install_cmd = f"{self.pip} install {' '.join(packages)}" print( f"Installing python packages {', '.join(packages)} and dependencies using {self.pip}" ) stdout, stderr, returncode = functions.run_process(install_cmd) if returncode == 0: lines = stdout.split("\n") print(lines[len(lines) - 2]) return True else: print(stderr) return False
def initialise_github(self, remote='origin'): stdout, stderr, returncode = functions.run_process(f"gh repo create {self.repo_name}") if returncode == 0: self.repo_name = stdout.replace("\n", "") self.remote = remote print(f"Created new github repository {self.repo_name} and set remote {self.remote}.") elif stderr.find("graphql error: 'Name already exists on this account'") > -1: print(f"You already have an existing GitHub repo with the name {self.name}") print("Enter a different repo name or leave blank to continue without connecting to GitHub.") response = input("Repository name: ") if not response == "": self.repo_name = response self.initialise_github() else: print(stderr)
def initialise_structure(self): self.app = "app" self.routes = "routes" self.app_dir = f"{self.path}/{self.app}" stdout, stderr, returncode = functions.run_process( f"mkdir {self.app_dir}") if returncode == 0: self.create_app() self.create_routes() self.create_main() # Save FLASK_APP in .flaskenv functions.create_file(f"{self.path}/.flaskenv", f"FLASK_APP={self.name}.py") print("\tSuccessfully generated flask project.\n") print( f"\tStored environment variable FLASK_APP={self.name}.py in {self.path}/.flaskenv\n" ) print("\tTo activate the virtual environment run:\n") print(f"\tcd {self.path} && source {self.env}/bin/activate\n") print("\tTo start the development server, run:\n") print("\tflask run\n")