mirror of
https://github.com/Xevion/recommit.git
synced 2025-12-05 23:15:59 -06:00
Initial commit
This commit is contained in:
21
LICENSE
Normal file
21
LICENSE
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2022 Ryan Walters
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
42
database.py
Normal file
42
database.py
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
"""
|
||||||
|
Manages all behavior related to reading and writing commits to the internal database.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import logging
|
||||||
|
import sqlite3
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class Database:
|
||||||
|
"""
|
||||||
|
Operates and handles reading/writing to the local commit database.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self) -> None:
|
||||||
|
logger.debug('Initializing...')
|
||||||
|
self.__is_closed: bool = True # Becomes false after this statement.
|
||||||
|
self.conn: Optional[sqlite3.Connection] = None
|
||||||
|
self.open()
|
||||||
|
|
||||||
|
def open(self) -> None:
|
||||||
|
"""Opens a connection to the database file."""
|
||||||
|
if self.__is_closed:
|
||||||
|
logger.debug('Opening new database connection.')
|
||||||
|
self.conn = sqlite3.connect('commits.db')
|
||||||
|
self.__is_closed = False
|
||||||
|
|
||||||
|
def close(self) -> None:
|
||||||
|
"""Closes the currently active database connection."""
|
||||||
|
if self.__is_closed:
|
||||||
|
logger.warning('Attempted to close while database connection is already closed...')
|
||||||
|
else:
|
||||||
|
logger.debug('Closing database connection.')
|
||||||
|
self.conn.close()
|
||||||
|
self.conn = None
|
||||||
|
self.__is_closed = True
|
||||||
|
|
||||||
|
def check_exists(self, id: str) -> bool:
|
||||||
|
"""Returns true if the commit in question exists."""
|
||||||
|
return False
|
||||||
36
main.py
Normal file
36
main.py
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
import logging
|
||||||
|
from logging.handlers import TimedRotatingFileHandler
|
||||||
|
from typing import List
|
||||||
|
|
||||||
|
from rich.logging import RichHandler
|
||||||
|
|
||||||
|
from database import Database
|
||||||
|
from models import Commit
|
||||||
|
from sources import Gitlab
|
||||||
|
|
||||||
|
logging.basicConfig(level=logging.WARNING, handlers=[
|
||||||
|
RichHandler(),
|
||||||
|
TimedRotatingFileHandler(filename='recommit-log', backupCount=25)
|
||||||
|
])
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
sources = [Gitlab()]
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
"""The main method for this application. When executed, it will use all available sources and create commits to act as contributions."""
|
||||||
|
logger.info('Starting recommit.')
|
||||||
|
|
||||||
|
commits: List[Commit] = []
|
||||||
|
db = Database()
|
||||||
|
|
||||||
|
# TODO: Fetch all commits from the available sources
|
||||||
|
# TODO: Check that the commit has been written
|
||||||
|
# TODO: Write commits into the git log
|
||||||
|
# TODO: Push to GitHub
|
||||||
|
|
||||||
|
logger.info('Shutting down.')
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
14
models.py
Normal file
14
models.py
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
from dataclasses import dataclass
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Commit:
|
||||||
|
"""Describes a specific commit event in time."""
|
||||||
|
|
||||||
|
# A unique identifier for this commit. Not necessarily the commit hash.
|
||||||
|
id: int
|
||||||
|
# A name, description etc. for this commit. Not required to be based on the original comit message.
|
||||||
|
name: str
|
||||||
|
# A timestamp
|
||||||
|
timestamp: datetime
|
||||||
Reference in New Issue
Block a user