diff --git a/MANIFEST.in b/MANIFEST.in index e94f3b11..2a60c904 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,5 +1,5 @@ -include LICENSE -include README.md -include package.json -include package-lock.json +graft LICENSE +graft README.md +graft package.json +graft package-lock.json recursive-include archivebox/themes * diff --git a/archivebox/cli/__init__.py b/archivebox/cli/__init__.py index 70a6866e..aa26715b 100644 --- a/archivebox/cli/__init__.py +++ b/archivebox/cli/__init__.py @@ -104,11 +104,11 @@ def main(args: Optional[List[str]]=NotProvided, stdin: Optional[IO]=NotProvided, ) command = parser.parse_args(args or ()) - if command.help or command.subcommand is None: - command.subcommand = 'help' - elif command.version: + if command.version: command.subcommand = 'version' - + elif command.help or command.subcommand is None: + command.subcommand = 'help' + if command.subcommand not in ('help', 'version', 'status'): from ..logging_util import log_cli_command diff --git a/package-lock.json b/package-lock.json index dfc101a1..88baaf08 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "archivebox", - "version": "0.4.14", + "version": "0.4.18", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/setup.py b/setup.py index 2871df75..10965bfa 100755 --- a/setup.py +++ b/setup.py @@ -1,7 +1,13 @@ +import sys import json import setuptools from pathlib import Path +from subprocess import check_call +from setuptools.command.install import install +from setuptools.command.develop import develop +from setuptools.command.egg_info import egg_info + PKG_NAME = "archivebox" REPO_URL = "https://github.com/pirate/ArchiveBox" @@ -16,6 +22,36 @@ VERSION = json.loads((BASE_DIR / "package.json").read_text().strip())['version'] # print('>', sys.executable, *sys.argv) +def setup_js(): + if sys.platform.lower() not in ('darwin', 'linux'): + sys.stderr.write('[!] Warning: ArchiveBox is not supported on this platform.\n') + + sys.stderr.write(f'[+] Installing ArchiveBox npm package (BASE_DIR={BASE_DIR})...\n') + try: + check_call(f'which npm && npm --version && npm install --global "{BASE_DIR}"', shell=True) + sys.stderr.write('[√] Automatically installed npm dependencies.\n') + except Exception as err: + sys.stderr.write(f'[!] Failed to auto-install npm dependencies: {err}\n') + sys.stderr.write(' Install NPM/npm using your system package manager, then run:\n') + sys.stderr.write(' npm install -g "git+https://github.com/pirate/ArchiveBox.git\n') + + +class CustomInstallCommand(install): + def run(self): + super().run() + setup_js() + +class CustomDevelopCommand(develop): + def run(self): + super().run() + setup_js() + +class CustomEggInfoCommand(egg_info): + def run(self): + super().run() + setup_js() + + setuptools.setup( name=PKG_NAME, version=VERSION, @@ -81,6 +117,11 @@ setuptools.setup( ], }, include_package_data=True, + cmdclass={ + 'install': CustomInstallCommand, + 'develop': CustomDevelopCommand, + 'egg_info': CustomEggInfoCommand, + }, classifiers=[ "License :: OSI Approved :: MIT License", "Natural Language :: English",