Просмотр исходного кода

fix version parsing and attempt to npm install during pip post_install

Nick Sweeting 5 лет назад
Родитель
Сommit
73408fb035
4 измененных файлов с 50 добавлено и 9 удалено
  1. 4 4
      MANIFEST.in
  2. 4 4
      archivebox/cli/__init__.py
  3. 1 1
      package-lock.json
  4. 41 0
      setup.py

+ 4 - 4
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 *

+ 4 - 4
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
 

+ 1 - 1
package-lock.json

@@ -1,6 +1,6 @@
 {
 	"name": "archivebox",
-	"version": "0.4.14",
+	"version": "0.4.18",
 	"lockfileVersion": 1,
 	"requires": true,
 	"dependencies": {

+ 41 - 0
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",