-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathassistente_commit.py
More file actions
114 lines (102 loc) · 4.64 KB
/
assistente_commit.py
File metadata and controls
114 lines (102 loc) · 4.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
from assistente_base import AssistenteBase
from datetime import datetime
from util_io import pegar_nome_arquivo_json, calcular_diferencas, ler_conteudo_arquivo, salvar_json
from util_hash import gerar_hash
import os
import json
class AssistenteCommit(AssistenteBase):
def __init__(self,caminho_arquivo: str):
self.caminho_arquivo = caminho_arquivo
self.caminho_json = pegar_nome_arquivo_json(self.caminho_arquivo)
self.gerar_resposta()
self.nome = self.get_nome_assistente()
self.instrucoes = self.get_instrucoes_assistente()
super().__init__(self.nome, self.instrucoes, caminho_arquivo)
def gerar_resposta(self):
hash_documento = gerar_hash(self.caminho_arquivo)
data_atual = datetime.now().isoformat()
conteudo_atual = ler_conteudo_arquivo(self.caminho_arquivo)
if os.path.exist(self.caminho_json):
with open(self.caminho_json, 'r', encoding="utf-8") as file:
dados = json.load(file)
conteudo_anterior = dados["conteudo"]
else:
dados={
'caminho_arquivo':self.caminho_arquivo,
'data_criacao': data_atual,
'data_atualizacao': data_atual,
'hash_atual':hash_documento,
'versao':1,
'conteudo': conteudo_atual,
'mudancas': ''
}
salvar_json(self.caminho_json, dados)
if dados['hash_atual'] != hash_documento:
dados['data_atualizacao'] = data_atual
dados['hash_atual'] = hash_documento
dados['versao'] += 1
dados['conteudo'] = conteudo_atual
dados['mudancas'] = calcular_diferencas(conteudo_anterior, conteudo_atual)
salvar_json(self.caminho_json, dados)
return dados
def get_nome_assistente(self):
return "Assistente de Commit"
def get_instrucoes_assistente(self):
return f"""
Assuma que você é um assistente especialista em gerar commits para o Github.
Você, nos títulos, escolhe até dois símbolos que representam o código que você está analisando.
Além disso, você usa textos objetivos para o título, e usa commit patterns para ele.
Na descrição você faz detalhes que demonstram o nome da classe e os métodos implementados.
# Referência de Imagens para título (use sempre a referencia textual, exemplo :sparkles:)
Initial commit :tada:
Version tag:bookmark:
New feature:sparkles:
Bugfix:bug:
Metadata:card_index:
Documentation:books:
Documenting source code :bulb:
Performance :racehorse:
Cosmetic:lipstick:
Tests:rotating_light:
Adding a test:white_check_mark:
Make a test pass :heavy_check_mark:
General update :zap:
Improve format/structure :art:
Refactor code :hammer:
Removing code/files :fire:
Continuous Integration :green_heart:
Security :lock:
Upgrading dependencies :arrow_up:
Downgrading dependencies :arrow_down:
Lint :shirt:
Translation:alien:
Text :pencil:
Critical hotfix:ambulance:
Deploying stuff:rocket:
Fixing on MacOS:apple:
Fixing on Linux:penguin:
Fixing on Windows:checkered_flag:
Work in progress:construction:
Adding CI build system:construction_worker:
Analytics or tracking code:chart_with_upwards_trend:
Removing a dependency:heavy_minus_sign:
Adding a dependency:heavy_plus_sign:
Docker: whale:
Configuration files:wrench:
Package.json in JS:package:
Merging branches:twisted_rightwards_arrows:
Bad code / need improv. :hankey:
Reverting changes:rewind:
Breaking changes:boom:
Code review changes:ok_hand:
Accessibility :wheelchair:
Move/rename repository :truck:
Other Be creative
# Tarefa
1. Analisar o código para entender as funcionalidades providas no script.
2. Descreva cada método e suas funcionalidades.
3. Gere uma mensagem de commit, em português, clara e concisa que resuma a introdução e o propósito desta nova classe, considerando as melhores práticas para mensagens de commit.
4. Para resolver a tarefa, considere os metadados do usuário, disponíveis em: {ler_conteudo_arquivo(self.caminho_json)}, e acesse o atributo mudanças do JSON.
4.1 Caso não existam mudanças, considere como primeira versão
4.2 Caso existam, considere como uma atualização.
"""