def view_by_name(title: str, category: str, config: Dict[str, str], open_editor: bool, color_mode: bool): """ View the content of an artifact by name, that is title/category Arguments: title: - the title assigned to the artifact(s) category: - the category assigned to the artifact(s) config: - a configuration dictionary containing at least the following keys: PATH_KB_DB - the database path of KB PATH_KB_DATA - the data directory of KB PATH_KB_HIST - the history menu path of KB EDITOR - the editor program to call open_editor - a boolean, if True it will open the artifact as a temporary copy in editor color_mode - a boolean, if True the colors on screen will be enabled when printed on stdout """ conn = db.create_connection(config["PATH_KB_DB"]) artifacts = db.get_artifacts_by_filter(conn, title=title, category=category, is_strict=True) if len(artifacts) == 1: artifact = artifacts.pop() category_path = Path(config["PATH_KB_DATA"], artifact.category) artifact_path = Path(category_path, artifact.title) if open_editor: tmpfname = fs.get_temp_filepath() fs.copy_file(artifact_path, tmpfname) shell_cmd = shlex.split(config["EDITOR"]) + [tmpfname] call(shell_cmd) fs.remove_file(tmpfname) sys.exit(0) # View File if fs.is_text_file(artifact_path): markers = get_template(artifact, config) viewer.view(artifact_path, markers, color=color_mode) else: opener.open_non_text_file(artifact_path) elif len(artifacts) > 1: print( "There is more than one artifact with that title, please specify a category" ) else: print( "There is no artifact with that name, please specify a correct artifact name" )
def view_by_id(id: int, config: Dict[str, str], open_editor: bool, color_mode: bool): """ View the content of an artifact by id. Arguments: id: - the ID (the one you see with kb list) associated to the artifact we want to edit config: - a configuration dictionary containing at least the following keys: PATH_KB_DB - the database path of KB PATH_KB_DATA - the data directory of KB PATH_KB_HIST - the history menu path of KB EDITOR - the editor program to call open_editor - a boolean, if True it will open the artifact as a temporary copy in editor color_mode - a boolean, if True the colors on screen will be enabled when printed on stdout """ conn = db.create_connection(config["PATH_KB_DB"]) artifact_id = history.get_artifact_id(config["PATH_KB_HIST"], id) artifact = db.get_artifact_by_id(conn, artifact_id) if not artifact: sys.exit(1) category_path = Path(config["PATH_KB_DATA"], artifact.category) artifact_path = Path(category_path, artifact.title) if open_editor: tmpfname = fs.get_temp_filepath() fs.copy_file(artifact_path, tmpfname) shell_cmd = shlex.split(config["EDITOR"]) + [tmpfname] call(shell_cmd) fs.remove_file(tmpfname) sys.exit(0) # View File if fs.is_text_file(artifact_path): markers = get_template(artifact, config) viewer.view(artifact_path, markers, color=color_mode) else: opener.open_non_text_file(artifact_path)