swh:1:snp:eb70f1f85391e4b077c211bec36af0061c4bf937
Raw File
Tip revision: 1661ef90b855e79917c55ce87d45f1e101a94023 authored by Jenkins for Software Heritage on 12 June 2020, 07:22:01 UTC
New upstream version 0.3.0
Tip revision: 1661ef9
swh-storage-add-dir
#!/usr/bin/env python3

# Copyright (C) 2015  The Software Heritage developers
# See the AUTHORS file at the top-level directory of this distribution
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information

import logging
import os
import sys

from swh.storage.storage import Storage
from swh.model.hashutil import MultiHash

if __name__ == "__main__":
    try:
        db_connstring = sys.argv[1]
        obj_root = sys.argv[2]
        dirname = sys.argv[3]
    except IndexError:
        print("Usage: swh-storage-add-dir" + " DB_CONNSTRING OBJ_STORAGE_DIR DATA_DIR")
        print(
            'Example: swh-storage-add-dir "dbname=swh user=foo"'
            + " /srv/softwareheritage/objects /usr/src/linux-4.2"
        )
        sys.exit(1)

    logging.basicConfig(level=logging.INFO)

    storage = Storage(db_connstring, obj_root)

    def list_content():
        for root, _dirs, files in os.walk(dirname):
            for name in files:
                path = os.path.join(root, name)
                cont = MultiHash.from_path(path).digest()
                cont["data"] = open(path, "rb").read()
                yield cont

    storage.content_add(list_content())
back to top