You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.6 KiB
76 lines
2.6 KiB
5 years ago
|
import click
|
||
|
import shutil
|
||
|
|
||
|
from pathlib import Path
|
||
|
from datetime import datetime
|
||
|
|
||
|
from ._natural_sort import natural_sort
|
||
|
|
||
|
DEVELOPER_DRIVE = Path("/mnt/e/")
|
||
|
PATH_ISSUES = DEVELOPER_DRIVE / "Safeguard-MBP-issues"
|
||
|
PATH_WORKBOOKS = DEVELOPER_DRIVE / "Safeguard MBP Workbooks"
|
||
|
PATH_WIN_DESKTOP = Path("/mnt/c/Users/Holgi/Desktop")
|
||
|
|
||
|
TODAY = datetime.now().strftime("%y%m%d")
|
||
|
|
||
|
|
||
|
def _folder_content(folder):
|
||
|
nondotted = (i for i in folder.iterdir() if not i.stem.startswith("."))
|
||
|
return (i for i in nondotted if not i.stem.startswith("~"))
|
||
|
|
||
|
|
||
|
def _files_in_folder(folder, suffix):
|
||
|
files = (f for f in _folder_content(folder) if f.is_file())
|
||
|
return (f for f in files if f.suffix == suffix)
|
||
|
|
||
|
|
||
|
def get_latest_version(parent=PATH_ISSUES):
|
||
|
folders = (i for i in _folder_content(parent) if i.is_dir())
|
||
|
versions = natural_sort(f.name for f in folders if f.stem.lower().startswith("v"))
|
||
|
return versions[-1]
|
||
|
|
||
|
|
||
|
def copy_changelog(destination, date, latest):
|
||
|
textfiles = _files_in_folder(PATH_ISSUES, ".txt")
|
||
|
changelog = next(f for f in textfiles if f.stem.lower().startswith("change"))
|
||
|
new_path = destination / f"{date}_CHANGELOG_{latest}.txt"
|
||
|
print(changelog.name, "->", new_path)
|
||
|
shutil.copyfile(changelog, new_path)
|
||
|
|
||
|
|
||
|
def copy_workbook_changelogs(destination, date, latest):
|
||
|
source = PATH_ISSUES / latest
|
||
|
textfiles = _files_in_folder(source, ".txt")
|
||
|
logs = (f for f in textfiles if f.stem.lower().startswith("change"))
|
||
|
for log_file in logs:
|
||
|
parts = log_file.stem.split("_")
|
||
|
if parts[-1] == latest:
|
||
|
new_path = destination / f"{date}_{log_file.name}"
|
||
|
else:
|
||
|
new_path = destination / f"{date}_{log_file.stem}_{latest}.txt"
|
||
|
print(log_file.name, "->", new_path)
|
||
|
shutil.copyfile(log_file, new_path)
|
||
|
|
||
|
|
||
|
def copy_workbooks(destination, date, latest):
|
||
|
for excel_file in _files_in_folder(PATH_WORKBOOKS, ".xlsx"):
|
||
|
new_path = destination / f"{date}_{excel_file.stem}_{latest}.xlsx"
|
||
|
print(excel_file.name, "->", new_path)
|
||
|
shutil.copyfile(excel_file, new_path)
|
||
|
|
||
|
|
||
|
@click.command()
|
||
|
def cli():
|
||
|
latest = get_latest_version()
|
||
|
|
||
|
new_folder_name = f"{TODAY} {latest}"
|
||
|
new_folder_path = PATH_WIN_DESKTOP / new_folder_name
|
||
|
if new_folder_path.exists():
|
||
|
raise IOError(f"Folder exists on desktop: {new_folder_name}")
|
||
|
else:
|
||
|
new_folder_path.mkdir()
|
||
|
|
||
|
copy_workbooks(new_folder_path, TODAY, latest)
|
||
|
copy_workbook_changelogs(new_folder_path, TODAY, latest)
|
||
|
copy_changelog(new_folder_path, TODAY, latest)
|