浏览代码

check for data folder when running most subcommands

Nick Sweeting 6 年之前
父节点
当前提交
f0f516e853

+ 8 - 1
archivebox/cli/archivebox.py

@@ -5,10 +5,12 @@ __package__ = 'archivebox.cli'
 __command__ = 'archivebox'
 __description__ = 'ArchiveBox: The self-hosted internet archive.'
 
+import os
 import sys
 import argparse
 
 from . import list_subcommands, run_subcommand
+from ..legacy.config import OUTPUT_DIR
 
 
 def parse_args(args=None):
@@ -78,8 +80,13 @@ def print_import_tutorial():
 
 def main(args=None):
     subcommand, subcommand_args = parse_args(args)
+    existing_index = os.path.exists(os.path.join(OUTPUT_DIR, 'index.json'))
+
     if subcommand is None:
-        print_import_tutorial()
+        if existing_index:
+            run_subcommand('help', subcommand_args)
+        else:
+            print_import_tutorial()
         raise SystemExit(0)
 
     run_subcommand(subcommand, subcommand_args)

+ 2 - 1
archivebox/cli/archivebox_add.py

@@ -16,6 +16,8 @@ from ..legacy.main import update_archive_data
 
 
 def main(args=None, stdin=None):
+    check_data_folder()
+    
     args = sys.argv[1:] if args is None else args
 
     parser = argparse.ArgumentParser(
@@ -55,7 +57,6 @@ def main(args=None, stdin=None):
     command = parser.parse_args(args)
 
     check_dependencies()
-    check_data_folder()
 
     ### Handle ingesting urls piped in through stdin
     # (.e.g if user does cat example_urls.txt | archivebox add)

+ 4 - 1
archivebox/cli/archivebox_info.py

@@ -7,11 +7,14 @@ __description__ = 'Print out some info and statistics about the archive collecti
 import sys
 import argparse
 
-from ..legacy.main import info
+from ..legacy.config import check_data_folder
 from ..legacy.util import reject_stdin
+from ..legacy.main import info
 
 
 def main(args=None):
+    check_data_folder()
+    
     args = sys.argv[1:] if args is None else args
 
     parser = argparse.ArgumentParser(

+ 3 - 0
archivebox/cli/archivebox_list.py

@@ -9,10 +9,13 @@ import argparse
 
 
 from ..legacy.util import reject_stdin, to_json, to_csv
+from ..legacy.config import check_data_folder
 from ..legacy.main import list_archive_data
 
 
 def main(args=None):
+    check_data_folder()
+    
     args = sys.argv[1:] if args is None else args
 
     parser = argparse.ArgumentParser(

+ 4 - 1
archivebox/cli/archivebox_remove.py

@@ -8,11 +8,14 @@ import sys
 import argparse
 
 
-from ..legacy.main import remove_archive_links
+from ..legacy.config import check_data_folder
 from ..legacy.util import reject_stdin
+from ..legacy.main import remove_archive_links
 
 
 def main(args=None):
+    check_data_folder()
+    
     args = sys.argv[1:] if args is None else args
 
     parser = argparse.ArgumentParser(

+ 3 - 0
archivebox/cli/archivebox_schedule.py

@@ -20,6 +20,7 @@ from ..legacy.config import (
     USER,
     ANSI,
     stderr,
+    check_data_folder,
 )
 
 
@@ -27,6 +28,8 @@ CRON_COMMENT = 'archivebox_schedule'
 
 
 def main(args=None):
+    check_data_folder()
+    
     args = sys.argv[1:] if args is None else args
 
     parser = argparse.ArgumentParser(

+ 14 - 1
archivebox/cli/archivebox_server.py

@@ -7,11 +7,13 @@ __description__ = 'Run the ArchiveBox HTTP server'
 import sys
 import argparse
 
-from ..legacy.config import setup_django, OUTPUT_DIR
+from ..legacy.config import setup_django, OUTPUT_DIR, ANSI, check_data_folder
 from ..legacy.util import reject_stdin
 
 
 def main(args=None):
+    check_data_folder()
+
     args = sys.argv[1:] if args is None else args
 
     parser = argparse.ArgumentParser(
@@ -26,11 +28,22 @@ def main(args=None):
         default=None,
         help='Arguments to pass to Django runserver'
     )
+    parser.add_argument(
+        '--reload',
+        action='store_true',
+        help='Enable auto-reloading when code or templates change',
+    )
     command = parser.parse_args(args)
     reject_stdin(__command__)
     
     setup_django(OUTPUT_DIR)
     from django.core.management import call_command
+
+
+    print('{green}[+] Starting ArchiveBox webserver...{reset}'.format(**ANSI))
+    if not command.reload:
+        command.runserver_args.append('--noreload')
+
     call_command("runserver", *command.runserver_args)
 
 

+ 3 - 1
archivebox/cli/archivebox_shell.py

@@ -7,11 +7,13 @@ __description__ = 'Enter an interactive ArchiveBox Django shell'
 import sys
 import argparse
 
-from ..legacy.config import setup_django, OUTPUT_DIR
+from ..legacy.config import setup_django, OUTPUT_DIR, check_data_folder
 from ..legacy.util import reject_stdin
 
 
 def main(args=None):
+    check_data_folder()
+    
     args = sys.argv[1:] if args is None else args
 
     parser = argparse.ArgumentParser(

+ 3 - 0
archivebox/cli/archivebox_update.py

@@ -8,11 +8,14 @@ import sys
 import argparse
 
 
+from ..legacy.config import check_data_folder
 from ..legacy.util import reject_stdin
 from ..legacy.main import update_archive_data
 
 
 def main(args=None):
+    check_data_folder()
+    
     args = sys.argv[1:] if args is None else args
 
     parser = argparse.ArgumentParser(