def popd(self, **kwargs): """ Equivalent to bash/zsh popd """ if len(self.dir_stack) > 0: if not kwargs.get('quiet', False): util.log_command("popd", self.dir_stack[-1]) self._cd(self.dir_stack[-1]) self.dir_stack.pop()
def rm(self, path, **kwargs): """ Remove a file or directory """ if not kwargs.get('quiet', False): util.log_command(['rm', '-rf', path]) if not self.dryrun: try: shutil.rmtree(path) except Exception as e: print("Failed to delete dir {}: {}".format(path, e))
def popenv(self, **kwargs): """ Restore the environment to the state on the top of the stack """ if not kwargs.get('quiet', False): util.log_command(['popenv']) env = self.env_stack.pop() # clear out values that won't be overwritten for name, value in dict(os.environ).items(): if name not in env: del os.environ[name] # write the old env for name, value in env.items(): os.environ[name] = value
def pushenv(self, **kwargs): """ Store the current environment on a stack, for restoration later """ if not kwargs.get('quiet', False): util.log_command(['pushenv']) self.env_stack.append(dict(os.environ))
def setenv(self, var, value, **kwargs): """ Set an environment variable """ if not kwargs.get('quiet', False): util.log_command(["export", "{}={}".format(var, value)]) if not self.dryrun: os.environ[var] = value
def mkdir(self, directory, **kwargs): """ Equivalent to mkdir -p $dir """ if not kwargs.get('quiet', False): util.log_command("mkdir", "-p", directory) if not self.dryrun: os.makedirs(directory, exist_ok=True)
def pushd(self, directory, **kwargs): """ Equivalent to bash/zsh pushd """ if not kwargs.get('quiet', False): util.log_command("pushd", directory) self.dir_stack.append(self.cwd()) self._cd(directory)
def cd(self, directory, **kwargs): """ # Helper to run chdir regardless of dry run status """ if not kwargs.get('quiet', False): util.log_command("cd", directory) self._cd(directory)