mirror of
https://github.com/ArchiveBox/ArchiveBox.git
synced 2025-05-15 07:34:27 -04:00
better data folder checking on startup
This commit is contained in:
parent
22bea7a4f6
commit
21174da014
3 changed files with 10 additions and 57 deletions
|
@ -7,6 +7,7 @@ __description__ = 'Add a new URL or list of URLs to your archive'
|
||||||
import sys
|
import sys
|
||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
|
from ..legacy.config import stderr, check_dependencies, check_data_folder
|
||||||
from ..legacy.util import (
|
from ..legacy.util import (
|
||||||
handle_stdin_import,
|
handle_stdin_import,
|
||||||
handle_file_import,
|
handle_file_import,
|
||||||
|
@ -14,7 +15,7 @@ from ..legacy.util import (
|
||||||
from ..legacy.main import update_archive_data
|
from ..legacy.main import update_archive_data
|
||||||
|
|
||||||
|
|
||||||
def main(args=None):
|
def main(args=None, stdin=None):
|
||||||
args = sys.argv[1:] if args is None else args
|
args = sys.argv[1:] if args is None else args
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(
|
parser = argparse.ArgumentParser(
|
||||||
|
@ -53,13 +54,16 @@ def main(args=None):
|
||||||
)
|
)
|
||||||
command = parser.parse_args(args)
|
command = parser.parse_args(args)
|
||||||
|
|
||||||
|
check_dependencies()
|
||||||
|
check_data_folder()
|
||||||
|
|
||||||
### Handle ingesting urls piped in through stdin
|
### Handle ingesting urls piped in through stdin
|
||||||
# (.e.g if user does cat example_urls.txt | archivebox add)
|
# (.e.g if user does cat example_urls.txt | archivebox add)
|
||||||
import_path = None
|
import_path = None
|
||||||
if not sys.stdin.isatty():
|
if stdin or not sys.stdin.isatty():
|
||||||
stdin_raw_text = sys.stdin.read()
|
stdin_raw_text = stdin or sys.stdin.read()
|
||||||
if stdin_raw_text and command.url:
|
if stdin_raw_text and command.url:
|
||||||
print(
|
stderr(
|
||||||
'[X] You should pass either a path as an argument, '
|
'[X] You should pass either a path as an argument, '
|
||||||
'or pass a list of links via stdin, but not both.\n'
|
'or pass a list of links via stdin, but not both.\n'
|
||||||
)
|
)
|
||||||
|
|
|
@ -9,59 +9,7 @@ import sys
|
||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
from ..legacy.util import reject_stdin
|
from ..legacy.util import reject_stdin
|
||||||
from ..legacy.index import write_links_index
|
from ..legacy.main import init
|
||||||
from ..legacy.config import (
|
|
||||||
OUTPUT_DIR,
|
|
||||||
SOURCES_DIR,
|
|
||||||
ARCHIVE_DIR,
|
|
||||||
DATABASE_DIR,
|
|
||||||
ANSI,
|
|
||||||
stderr,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def init(output_dir: str=OUTPUT_DIR):
|
|
||||||
if not os.path.exists(output_dir):
|
|
||||||
os.makedirs(output_dir)
|
|
||||||
|
|
||||||
harmless_files = {'.DS_Store', '.venv', 'venv', 'virtualenv', '.virtualenv'}
|
|
||||||
is_empty = not len(set(os.listdir(output_dir)) - harmless_files)
|
|
||||||
existing_index = os.path.exists(os.path.join(output_dir, 'index.json'))
|
|
||||||
|
|
||||||
if not is_empty:
|
|
||||||
if existing_index:
|
|
||||||
stderr('{green}[√] You already have an archive index in this folder.{reset}'.format(**ANSI))
|
|
||||||
stderr(' To add new links, you can run:')
|
|
||||||
stderr(" archivebox add 'https://example.com'")
|
|
||||||
stderr()
|
|
||||||
stderr(' For more usage and examples, run:')
|
|
||||||
stderr(' archivebox help')
|
|
||||||
# TODO: import old archivebox version's archive data folder
|
|
||||||
|
|
||||||
raise SystemExit(1)
|
|
||||||
else:
|
|
||||||
stderr(
|
|
||||||
("{red}[X] This folder already has files in it. You must run init inside a completely empty directory.{reset}"
|
|
||||||
"\n\n"
|
|
||||||
" {lightred}Hint:{reset} To import a data folder created by an older version of ArchiveBox, \n"
|
|
||||||
" just cd into the folder and run the archivebox command to pick up where you left off.\n\n"
|
|
||||||
" (Always make sure your data folder is backed up first before updating ArchiveBox)"
|
|
||||||
).format(output_dir, **ANSI)
|
|
||||||
)
|
|
||||||
raise SystemExit(1)
|
|
||||||
|
|
||||||
|
|
||||||
stderr('{green}[+] Initializing new archive directory: {}{reset}'.format(output_dir, **ANSI))
|
|
||||||
os.makedirs(SOURCES_DIR)
|
|
||||||
stderr(f' > {SOURCES_DIR}')
|
|
||||||
os.makedirs(ARCHIVE_DIR)
|
|
||||||
stderr(f' > {ARCHIVE_DIR}')
|
|
||||||
os.makedirs(DATABASE_DIR)
|
|
||||||
stderr(f' > {DATABASE_DIR}')
|
|
||||||
|
|
||||||
write_links_index([], out_dir=OUTPUT_DIR, finished=True)
|
|
||||||
|
|
||||||
stderr('{green}[√] Done.{reset}'.format(**ANSI))
|
|
||||||
|
|
||||||
|
|
||||||
def main(args=None):
|
def main(args=None):
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
__package__ = 'archivebox.legacy'
|
Loading…
Add table
Add a link
Reference in a new issue