Initial implementation of new entry list

This commit is contained in:
2022-03-02 00:37:55 -05:00
parent a6aa0561b4
commit 5aaa284cbf
+24 -15
View File
@@ -2,7 +2,7 @@
# external modules # external modules
from os import environ, listdir, path, remove, system from os import environ, listdir, path, remove, system, walk
from shutil import copy, move, rmtree from shutil import copy, move, rmtree
from sys import argv, exit as s_exit from sys import argv, exit as s_exit
from pathlib import Path from pathlib import Path
@@ -13,6 +13,20 @@ import string
# utility functions # utility functions
def entry_list_gen(): # generates and prints a list of all folders and entries
print('\n\u001b[38;5;0;48;5;15msshyp entries:\u001b[0m\n')
for _entry in listdir(path.expanduser('~/.password-pasture')):
if Path(path.expanduser(f"~/.password-pasture/{_entry}")).is_file():
print(f"\u001b[38;5;195m{_entry.replace('.gpg', '')}")
for _root, _directories, _files in walk(path.expanduser('~/.password-pasture')):
for _dir in _directories:
_inner_dir = f"{_root.replace(path.expanduser('~/.password-pasture'), '')}/{_dir}"
print(f"\n\u001b[38;5;228m{_inner_dir}/")
for _s_root, _s_directories, _s_files in walk(path.expanduser(f"~/.password-pasture{_inner_dir}")):
for _entry in _s_files:
print(f"\u001b[38;5;195m{_entry.replace('.gpg', '')}\u001b[0m")
def replace_line(file_name, line_num, text): # replaces text in a given line with different text def replace_line(file_name, line_num, text): # replaces text in a given line with different text
_lines = open(file_name, 'r').readlines() _lines = open(file_name, 'r').readlines()
_lines[line_num] = text _lines[line_num] = text
@@ -160,8 +174,8 @@ def print_info(): # prints help text based on argument
print('/ /') print('/ /')
print('/ sshyp Copyright (C) 2021-2022 Randall Winkhart /') print('/ sshyp Copyright (C) 2021-2022 Randall Winkhart /')
print('/ /') print('/ /')
print('/ Version 2022.02.16.fr4.7 /') print('/ Version 2022.03.02.fr5 /')
print('/ The High-Tech Shears Update /') print('/ The Polished Trotters Update /')
print('/ /') print('/ /')
print('////////////////////////////////////////////////////////\n') print('////////////////////////////////////////////////////////\n')
elif argument == 'license': elif argument == 'license':
@@ -198,8 +212,8 @@ def print_info(): # prints help text based on argument
def no_arg(): # displays a list of entries and gives an option to select one for viewing def no_arg(): # displays a list of entries and gives an option to select one for viewing
print("\nFor a list of usable commands, run 'sshyp help'.\n") print("\nFor a list of usable commands, run 'sshyp help'.")
system(f"cd {directory}; ls -1 *") entry_list_gen()
_read_entry = str(input('\nEntry to read: ')) _read_entry = str(input('\nEntry to read: '))
system(f"gpg -d '{directory}{_read_entry.replace('/', '', 1)}.gpg'") system(f"gpg -d '{directory}{_read_entry.replace('/', '', 1)}.gpg'")
print() print()
@@ -293,8 +307,7 @@ def add_folder(): # creates a new folder
def rename(): # renames an entry or folder TODO delete original from server to prevent re-downloading def rename(): # renames an entry or folder TODO delete original from server to prevent re-downloading
print() entry_list_gen()
system(f"cd {directory}; ls -1 *") # TODO replace with new list
_entry_name = str(input('\nWhat would you like to rename/relocate? ')) _entry_name = str(input('\nWhat would you like to rename/relocate? '))
_new_name = str(input('New Name: ')) _new_name = str(input('New Name: '))
if _entry_name.startswith('/'): if _entry_name.startswith('/'):
@@ -309,8 +322,7 @@ def rename(): # renames an entry or folder TODO delete original from server to
def edit(): # edits the contents of an entry def edit(): # edits the contents of an entry
_shm_folder, _shm_entry = None, None # sets base-line values to avoid errors _shm_folder, _shm_entry = None, None # sets base-line values to avoid errors
print() entry_list_gen()
system(f"cd {directory}; ls -1 *") # TODO replace with new list
_entry_name = str(input('\nWhat file would you like to edit? ')) _entry_name = str(input('\nWhat file would you like to edit? '))
if not Path(f"{directory}{_entry_name}.gpg").is_file(): if not Path(f"{directory}{_entry_name}.gpg").is_file():
print("\nYou are trying to edit a file that does not exist!\n") print("\nYou are trying to edit a file that does not exist!\n")
@@ -344,8 +356,7 @@ def edit(): # edits the contents of an entry
def gen(): # generates a password for a new or an existing entry def gen(): # generates a password for a new or an existing entry
_username, _url, _notes = None, None, None # sets base-line values to avoid errors _username, _url, _notes = None, None, None # sets base-line values to avoid errors
if argument == 'gen update' or argument == 'gen -u': if argument == 'gen update' or argument == 'gen -u':
print() entry_list_gen()
system(f"cd {directory}; ls -1 *") # TODO replace with new list
_entry_name = str(input('\nName of service: ')) _entry_name = str(input('\nName of service: '))
if _entry_name.startswith('/'): if _entry_name.startswith('/'):
_entry_name = _entry_name.replace('/', '', 1) _entry_name = _entry_name.replace('/', '', 1)
@@ -385,8 +396,7 @@ def gen(): # generates a password for a new or an existing entry
def copy_data(): # copies a specified field of an entry to the clipboard def copy_data(): # copies a specified field of an entry to the clipboard
print() entry_list_gen()
system(f"cd {directory}; ls -1 *") # TODO replace with new list
_read_entry = str(input('\nEntry to copy: ')) _read_entry = str(input('\nEntry to copy: '))
if not Path(f"{directory}{_read_entry}.gpg").is_file(): if not Path(f"{directory}{_read_entry}.gpg").is_file():
print("\nThe file does not exist!\n") print("\nThe file does not exist!\n")
@@ -425,8 +435,7 @@ def copy_data(): # copies a specified field of an entry to the clipboard
def remove_data(): # deletes an entry from the server and flags it for local deletion on sync def remove_data(): # deletes an entry from the server and flags it for local deletion on sync
print() entry_list_gen()
system(f"cd {directory}; ls -1 *") # TODO replace with new list
_entry_name = str(input('\nWhat would you like to delete? ')) _entry_name = str(input('\nWhat would you like to delete? '))
if _entry_name.startswith('/'): if _entry_name.startswith('/'):
_entry_name = _entry_name.replace('/', '', 1) _entry_name = _entry_name.replace('/', '', 1)