Module src.jsonid.jsonid
jsonid entry-point.
Functions
def init_logging(debug)
-
Expand source code
def init_logging(debug): """Initialize logging.""" logging.basicConfig( format="%(asctime)-15s %(levelname)s :: %(filename)s:%(lineno)s:%(funcName)s() :: %(message)s", # noqa: E501 datefmt="%Y-%m-%d %H:%M:%S", level=logging.DEBUG if debug else logging.INFO, handlers=[ logging.StreamHandler(), ], ) logging.Formatter.converter = time.gmtime global logger logger = logging.getLogger(__name__) logger.debug("debug logging is configured")
Initialize logging.
def main() ‑> None
-
Expand source code
def main() -> None: """Primary entry point for this script.""" parser = argparse.ArgumentParser( prog="json-id", description="proof-of-concept identifier for JSON objects on disk based on identifying valid objects and their key-values", epilog="for more information visit https://github.com/ffdev-info/json-id", ) parser.add_argument( "--debug", help="use debug loggng", required=False, action="store_true", ) parser.add_argument( "--path", "--paths", "-p", help="file path to process", required=False, ) parser.add_argument( "--binary", help="report on binary formats as well as plaintext", required=False, action="store_true", ) parser.add_argument( "--simple", help="provide a simple single-line (JSONL) output", required=False, action="store_true", ) parser.add_argument( "--registry", help="path to a custom registry to lead into memory replacing the default", required=False, ) parser.add_argument( "--pronom", help="return a PRONOM-centric view of the results", required=False, ) parser.add_argument( "--export", help="export the embedded registry", required=False, action="store_true", ) parser.add_argument( "--check", help="check the registry entrues are correct", required=False, action="store_true", ) parser.add_argument( "--html", help="output the registry as html", required=False, action="store_true", ) parser.add_argument( "--language", help="return results in different languages", required=False, ) parser.add_argument( "--analyse", "--analyze", "-a", help="return an analysis of a file, ideally JSON-like object, to support development", required=False, type=str, metavar="PATH", ) args = parser.parse_args() init_logging(args.debug) if args.registry: raise NotImplementedError("custom registry is not yet available") if args.pronom: raise NotImplementedError("pronom view is not yet implemented") if args.language: raise NotImplementedError("multiple languages are not yet implemented") if args.export: export.exportJSON() sys.exit() if args.check: if not helpers.entry_check(): logger.error("registry entries are not correct") sys.exit(1) if not helpers.keys_check(): logger.error( "invalid keys appear in data (use `--debug` logging for more information)" ) sys.exit(1) logger.info("ok") sys.exit() if args.html: helpers.html() sys.exit() if args.analyse: asyncio.run(file_processing.analyse_data(args.analyse)) sys.exit() if not args.path: parser.print_help(sys.stderr) sys.exit() asyncio.run( file_processing.process_data( path=args.path, binary=args.binary, simple=args.simple, ) )
Primary entry point for this script.