diff --git a/igit-borys.py b/igit-borys.py deleted file mode 100644 index 8c226d8..0000000 --- a/igit-borys.py +++ /dev/null @@ -1,111 +0,0 @@ -import argparse -import json -import sys -import subprocess -import os -from datetime import datetime - -DEFAULT_CONFIG = { - "user": "borysr", - "email": "borysr@gmail.com", - "remotes": [{ - "name": "r", # Zaktualizowano z "default" na "mpabi" - "protocol": "http", - "domain": "qstack.pl", - "port": "3000", - "token_name": "t", - "token": "8ee3f1b7980197aeceadee3cf4d980f817d44f06", - "group": "1i-2023", - "project": "homework" - }] -} - -def load_or_create_config(config_file, args): - config_exists = os.path.exists(config_file) and os.stat(config_file).st_size != 0 - if config_exists: - with open(config_file, 'r') as file: - config = json.load(file) - else: - config = DEFAULT_CONFIG.copy() - - # Znajdź istniejące zdalne repozytorium o podanej nazwie - remote = next((remote for remote in config['remotes'] if remote['name'] == args.remote), None) - - # Jeśli istnieje zdalne repozytorium i podano argumenty związane z konfiguracją zdalnego repozytorium - if remote: - for field in ['protocol', 'domain', 'port', 'token_name', 'token', 'group', 'project']: - # Aktualizuj tylko, jeśli argument został jawnie podany - if getattr(args, field, None) is not None: - remote[field] = getattr(args, field) - - # Jeśli zdalne repozytorium nie istnieje, ale podano nazwę, tworzymy nowe zdalne repozytorium - elif args.remote: - new_remote = {'name': args.remote} - for field in ['protocol', 'domain', 'port', 'token_name', 'token', 'group', 'project']: - new_remote[field] = getattr(args, field, DEFAULT_CONFIG['remotes'][0].get(field, '')) - if new_remote[field] == None: - new_remote[field] = DEFAULT_CONFIG['remotes'][0].get(field, '') - config['remotes'].append(new_remote) - - # Aktualizuj informacje o użytkowniku i email, tylko jeśli zostały podane - if getattr(args, 'user', None): - config['user'] = args.user - if getattr(args, 'email_domain', None): - config['email'] = f"{args.user}@{args.email_domain}" - - # Zapisz zmodyfikowaną konfigurację - with open(config_file, 'w') as file: - json.dump(config, file, indent=4) - - return config - - -def init_git_repo(config): - user_name = config['user'] - user_email = config['email'] - branch_name = f"{user_name}-{datetime.now().strftime('%Y-%m-%d')}" - - if subprocess.run(["git", "rev-parse", "--git-dir"], stderr=subprocess.DEVNULL).returncode != 0: - subprocess.run(["git", "init"]) - subprocess.run(["git", "config", "user.name", user_name]) - subprocess.run(["git", "config", "user.email", user_email]) - subprocess.run(["git", "checkout", "-b", branch_name]) - print("Git repository initialized.") - else: - print("Already inside a Git repository. Skipping initialization.") - - remotesFromList = str(subprocess.run(["git", "remote", "-v"], capture_output=True).stdout) - remotesFromList = remotesFromList.replace('b\'', "").replace('\'', "").split('\\n') - for rm in remotesFromList: - name = rm.split("\\t")[0] - subprocess.run(["git", "remote", "remove", name], stderr=subprocess.DEVNULL) - - for remote in config['remotes']: - remote_url = f"{remote['protocol']}://{remote['token_name']}:{remote['token']}@{remote['domain']}:{remote['port']}/{remote['group']}/{remote['project']}" - # Usunięcie i ponowne dodanie zdalnego repozytorium, jeśli jest zaktualizowane - #subprocess.run(["git", "remote", "remove", remote['name']], stderr=subprocess.DEVNULL) - subprocess.run(["git", "remote", "add", remote['name'], remote_url]) - print(f"Remote '{remote['name']}' added or updated.") - -def main(): - parser = argparse.ArgumentParser(description="Git repository initializer with custom configuration.") - parser.add_argument("--user", help="User name") - parser.add_argument("--email_domain", help="Email domain") - parser.add_argument("--config", help="Path to the JSON config file", default="conf.json") - parser.add_argument("--remote", help="Name of the remote to add or update") - parser.add_argument("--protocol", help="Remote protocol") - parser.add_argument("--domain", help="Remote domain") - parser.add_argument("--port", help="Remote port") - parser.add_argument("--token_name", help="Remote token name") - parser.add_argument("--token", help="Remote token") - parser.add_argument("--group", help="Group name") - parser.add_argument("--project", help="Project name") - - args = parser.parse_args() - - config = load_or_create_config(args.config, args) - init_git_repo(config) - print("Git repository initialized and configured based on the provided configuration.") - -if __name__ == "__main__": - main()