From 002206d4fe5bef619c0b0d448b1df1146dde9fd6 Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Wed, 27 Mar 2019 11:39:51 -0400 Subject: [PATCH] remove distutils in favor of shutil --- archivebox/index.py | 9 ++------- archivebox/util.py | 7 +++++++ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/archivebox/index.py b/archivebox/index.py index 116de5a7..c1ea5dc5 100644 --- a/archivebox/index.py +++ b/archivebox/index.py @@ -6,12 +6,6 @@ from string import Template from typing import List, Tuple, Iterator, Optional from dataclasses import fields -try: - from distutils.dir_util import copy_tree -except ImportError: - print('[X] Missing "distutils" python package. To install it, run:') - print(' pip install distutils') - from schema import Link, ArchiveIndex, ArchiveResult from config import ( OUTPUT_DIR, @@ -29,6 +23,7 @@ from util import ( ExtendedEncoder, enforce_types, TimedProgress, + copy_and_overwrite, ) from parse import parse_links from links import validate_links @@ -149,7 +144,7 @@ def write_html_links_index(out_dir: str, links: List[Link], finished: bool=False path = os.path.join(out_dir, 'index.html') - copy_tree(os.path.join(TEMPLATES_DIR, 'static'), os.path.join(out_dir, 'static')) + copy_and_overwrite(os.path.join(TEMPLATES_DIR, 'static'), os.path.join(out_dir, 'static')) with open(os.path.join(out_dir, 'robots.txt'), 'w+') as f: f.write('User-agent: *\nDisallow: /') diff --git a/archivebox/util.py b/archivebox/util.py index 970085ea..e6f93981 100644 --- a/archivebox/util.py +++ b/archivebox/util.py @@ -2,6 +2,7 @@ import os import re import sys import time +import shutil from json import JSONEncoder from typing import List, Optional, Any @@ -604,6 +605,12 @@ def chmod_file(path: str, cwd: str='.', permissions: str=OUTPUT_PERMISSIONS, tim raise Exception('Failed to chmod {}/{}'.format(cwd, path)) +@enforce_types +def copy_and_overwrite(from_path: str, to_path: str): + if os.path.exists(to_path): + shutil.rmtree(to_path) + shutil.copytree(from_path, to_path) + @enforce_types def chrome_args(**options) -> List[str]: """helper to build up a chrome shell command with arguments"""