|
|
#!/home/schneider/git/dirbuild/ """dirbuild
Usage: dirbuild dirbuild set <command> dirbuild get dirbuild build dirbuild dump
Options: -h --help Show this screen. --version Show version.
"""
import logging import os import sqlite3 from sqlite3.dbapi2 import Cursor
from docopt import docopt from xdg import BaseDirectory
logger: logging.Logger
def init_logger(): """Initializes the application logger.
:returns: logger
"""
global logger logger = logging.getLogger() handler = logging.StreamHandler() formatter = logging.Formatter("%(asctime)s %(name)-12s %(levelname)-8s %(message)s") handler.setFormatter(formatter) logger.addHandler(handler) logger.setLevel(logging.DEBUG)
def init_db() -> sqlite3.Connection: path = BaseDirectory.save_data_path("dirbuild") logging.debug("Using path for data: %s", path) db_path = f"{path}/commands.db" logging.debug("Using database %s", db_path) conn = sqlite3.connect(db_path) conn.cursor().execute( """CREATE TABLE IF NOT EXISTS commands (id INTEGER PRIMARY KEY AUTOINCREMENT, dir TEXT, cmd TEXT)""" ) return conn
def set_command(cursor: Cursor, cwd: str, command: str): """Sets a command for the current directory
:db: sqlite Cursor :cwd: String :returns: None
"""
logger.debug("Setting command '%s' for directory %s", command, cwd) cursor.execute( "INSERT INTO commands (dir, cmd) VALUES (?, ?)", ( cwd, command, ), )
def get_command(cursor: Cursor, cwd: str) -> str: """Get the command for the current directory""" return cursor.execute( "SELECT cmd FROM commands WHERE dir = ? ORDER BY id DESC LIMIT 1", (cwd,) ).fetchone()[0]
def dump_db(cursor: Cursor): """Dump all entries of the database""" for row in cursor.execute("SELECT id, dir, cmd FROM commands"): print(row)
def main(): """ Main function """ init_logger() arguments = docopt(__doc__, version="dirbuild v0.1.0") logger.debug("arguments: %s", arguments) db = init_db() if arguments["set"]: set_command(db.cursor(), os.getcwd(), arguments["<command>"]) elif arguments["get"]: print(get_command(db.cursor(), os.getcwd())) elif arguments["dump"]: dump_db(db.cursor()) else: cmd = get_command(db.cursor(), str(os.getcwd())) logger.debug("Executing '%s'", cmd) os.system(cmd)
db.commit() db.close()
if __name__ == "__main__": main()
|