/
functions.py
140 lines (116 loc) · 4.79 KB
/
functions.py
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#coding: utf-8
import sys
import os.path
import shutil
'''
Módulo com as funcionalidades do Header.
Este módulo apresenta todas as funcionalidades da
ferramenta Header.
'''
__author__ = "Maria Eduarda de Azevedo"
__version__ = "1.0"
__maintainer__ = "Maria Eduarda de Azevedo"
__email__ = "maria.silva@ccc.ufcg.edu.br"
def write(arg):
'''
Função que importa o conteúdo de um arquivo fonte para
um arquivo de destino partindo dos caminhos dos mesmos.
'''
path_in = arg[1].split("/")
file_name_in = path_in.pop(-1)
path_out = arg[2].split("/")
file_name_out = path_out.pop(-1)
if file_name_in not in os.listdir(os.path.expanduser("~/") + "/" + "/".join(path_in)):
return arg[1] + " não é um caminho válido ou " + file_name_in + " não existe no diretório."
elif file_name_out not in os.listdir(os.path.expanduser("~/") + "/" + "/".join(path_out)):
choice = input(arg[1] + " não é um caminho válido ou " + file_name_in + " não existe no diretório. Deseja criá-lo? [S/N]")
if choice.lower() == "n":
return "Tente novamente passando um caminho válido."
header = open(os.path.expanduser("~/") + arg[1], "r")
file_ = open(os.path.expanduser("~/") + arg[2], "a")
for line in header.read():
file_.writelines(line)
header.close()
file_.close()
return "Conteúdo de " + arg[1] + " importado em " + arg[2]
def write_save(arg, directory):
'''
Função que importa o conteúdo de um arquivo fonte salvo
em na biblioteca de cabeçalhos para um arquivo de destino
no qual é informado o caminho.
'''
if arg[2].split("/")[-1] not in os.listdir(os.path.expanduser("~/") + arg[2].split("/").pop(-1).join("/")):
choice = input(arg[2].split("/")[-1] + " não existe no diretório informado, deseja criar? [S/N] ")
if choice.lower() == "n":
return "Tente novamente passando um caminho válido."
header = open(directory + "/headers/" + arg[1], "r")
file_ = open(os.path.expanduser("~/") + arg[2], "a")
for line in header.read():
file_.writelines(line)
header.close()
file_.close()
return ("Conteúdo de " + arg[1] + " importado em " + arg[2])
def save(arg, directory):
'''
Salva um arquivo do sistema como um arquivo de sua biblioteca
partindo do caminho do mesmo.
'''
file_ = os.path.expanduser("~/") + "/" + arg[1]
open(directory + "/headers/" + file_.split("/")[-1], "w")
shutil.copyfile(os.path.expanduser("~/") + arg[1], directory + "/headers/" + file_.split("/")[-1])
return (file_.split("/")[-1] + " salvo em sua biblioteca de cabeçalhos")
def create(arg, directory):
'''
Cria um arquivo de cabeçalho diretamente na sua biblioteca.
Ao criar o arquivo, abre-se o editor VIM para a edição de
seu conteúdo.
'''
if arg[1] in os.listdir(directory + "/headers"):
return "Já existe um cabeçalho salvo com esse nome!"
open(directory + "/headers/" + arg[1], "w")
os.system("/usr/bin/vim " + directory + "/headers/" + arg[1])
return arg[1] + " criado e salvo na sua biblioteca de cabeçalhos."
def list_ws(directory):
'''
Lista todos os arquivos de cabeçalho da biblioteca.
'''
for f in os.listdir(directory + "/headers"):
print("\033[1;34m" + f + "\033[0;0m")
def edit(arg, directory):
'''
Edita um arquivo da biblioteca indicado pelo nome.
'''
if arg[1] not in os.listdir(directory + "/headers"):
return arg[1] + " não existe na sua biblioteca de cabeçalhos."
open(directory + "/headers/" + arg[1])
os.system("/usr/bin/vim " + directory + "/headers/" + arg[1])
return arg[1] + " editado e salvo na sua biblioteca de cabeçalhos."
def delete(args, directory):
deleted = list()
not_exist = list()
for files in args[1:]:
if files in os.listdir(directory + "/headers"):
os.remove(directory + "/headers/" + files)
deleted.append(files)
else:
not_exist.append(files)
if len(not_exist) == 0:
return f"{', '.join(deleted)} excluídos"
elif len(deleted) == 0:
return f"{', '.join(not_exist)} não encontrado(s)"
return f"{', '.join(deleted)} excluídos e {', '.join(not_exist)} não encontrado(s)"
def init(directory):
'''
Inicia a aplicação para que crie a biblioteca de cabeçalhos
na máquina do usuário.
'''
config_read = open(f"{directory}/.config.txt", "r")
if "!init" in config_read.readlines()[0]:
config_write = open(f"{directory}/.config.txt", "w")
config_write.write("init")
config_write.close()
os.mkdir("headers")
config_read.close()
return("Header iniciado e pronto para utilizar!")
config_read.close()
return("Seu Header já foi iniciado!")