Skip to content

Commit

Permalink
Merge pull request #1466 from clinton-hall/hotix/cwd
Browse files Browse the repository at this point in the history
Change current working directory prior to cleanup
  • Loading branch information
labrys authored Dec 28, 2018
2 parents 33d9575 + ce1c1b8 commit c290064
Showing 1 changed file with 45 additions and 11 deletions.
56 changes: 45 additions & 11 deletions cleanup.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,37 @@
from __future__ import print_function

import os
import subprocess
import sys


class WorkingDirectory(object):
"""Context manager for changing current working directory."""
def __init__(self, new, original=None):
self.working_directory = new
self.original_directory = os.getcwd() if original is None else original

def __enter__(self):
os.chdir(self.working_directory)
return self

def __exit__(self, exc_type, exc_val, exc_tb):
os.chdir(self.original_directory)


def module_path(module=__file__, parent=False):
try:
path = module.__file__
except AttributeError:
path = module
directory = os.path.dirname(path)
if parent:
directory = os.path.join(directory, os.pardir)
absolute = os.path.abspath(directory)
normalized = os.path.normpath(absolute)
return normalized


def git_clean(remove_directories=False, force=False, dry_run=False, interactive=False, quiet=False, exclude=None,
ignore_rules=False, clean_ignored=False, paths=None):
"""Execute git clean commands."""
Expand Down Expand Up @@ -78,21 +106,27 @@ def clean_folders(*paths):

def clean(*paths):
"""Clean up bytecode and obsolete folders."""
print('-- Cleaning bytecode --')
try:
result = clean_bytecode()
except SystemExit as error:
print(error)
else:
print(result or 'No bytecode to clean\n')
if paths:
print('-- Cleaning folders: {} --'.format(paths))
with WorkingDirectory(module_path()) as cwd:
if cwd.working_directory != cwd.original_directory:
print('Changing to directory:', cwd.working_directory)
print('\n-- Cleaning bytecode --')
try:
result = clean_folders(*paths)
result = clean_bytecode()
except SystemExit as error:
print(error)
else:
print(result or 'No folders to clean\n')
print(result or 'No bytecode to clean')
if paths:
print('\n-- Cleaning folders: {} --'.format(paths))
try:
result = clean_folders(*paths)
except SystemExit as error:
print(error)
else:
print(result or 'No folders to clean\n')
if cwd.working_directory != cwd.original_directory:
print('Returning to directory: ', cwd.original_directory)
print('\n-- Cleanup finished --\n')


if __name__ == '__main__':
Expand Down

0 comments on commit c290064

Please sign in to comment.