Compare commits

...

3 Commits

Author SHA1 Message Date
a4f83d140f Feat: add invoke dependencies
All checks were successful
continuous-integration/drone/push Build is passing
2020-08-20 09:48:57 +02:00
827d7b6511 Feat: classes que je devraient avoir 2020-08-16 15:32:44 +02:00
3512bb8ace Fix: add .vim 2020-08-16 15:27:50 +02:00
3 changed files with 40 additions and 17 deletions

2
.gitignore vendored
View File

@ -26,4 +26,4 @@ test/
.venv/ .venv/
venv/ venv/
video/ video/
.vim

View File

@ -2,7 +2,16 @@ docutils==0.16
gitdb==4.0.5 gitdb==4.0.5
GitPython==3.1.7 GitPython==3.1.7
greenlet==0.4.16 greenlet==0.4.16
invoke==1.4.1
jedi==0.17.2
Jinja2==2.11.2
MarkupSafe==1.1.1
msgpack==1.0.0 msgpack==1.0.0
mypytex==0.4
parso==0.7.1
prompt-toolkit==3.0.6
pynvim==0.4.1 pynvim==0.4.1
restructuredtext-lint==1.3.1 restructuredtext-lint==1.3.1
smmap==3.0.4 smmap==3.0.4
Unidecode==1.1.1
wcwidth==0.2.5

View File

@ -4,7 +4,7 @@ from prompt_toolkit import prompt
from prompt_toolkit.completion import WordCompleter from prompt_toolkit.completion import WordCompleter
from prompt_toolkit.validation import Validator from prompt_toolkit.validation import Validator
from unidecode import unidecode from unidecode import unidecode
import jinja2 import jinja2
from pytex import texenv from pytex import texenv
import datetime import datetime
import locale import locale
@ -12,21 +12,23 @@ import locale
locale.setlocale(locale.LC_ALL, "fr_FR.UTF-8") locale.setlocale(locale.LC_ALL, "fr_FR.UTF-8")
TRIBES = [ TRIBES = [
{"name": "Première Technologique", "directory": "1ST"}, {"name": "Terminale Technologique", "directory": "TST"},
{"name": "Science numérique et technologique", "directory": "SNT"}, {"name": "Terminale Terminale spé sti2d", "directory": "TST_sti2d"},
{"name": "Terminale L-ES", "directory": "TESL"}, {"name": "Science numérique et technologique", "directory": "SNT"},
{"name": "Terminale sti2d", "directory": "Tsti2d"}, ]
]
AUTHOR = "Benjamin Bertrand" AUTHOR = "Benjamin Bertrand"
def is_tribe(tribe): def is_tribe(tribe):
return tribe in [t["directory"] for t in TRIBES] return tribe in [t["directory"] for t in TRIBES]
def get_sequences(tribe): def get_sequences(tribe):
p = Path(tribe) p = Path(tribe)
return [x for x in p.iterdir() if (x.is_dir() and x.name[0:2].isdigit())] return [x for x in p.iterdir() if (x.is_dir() and x.name[0:2].isdigit())]
def get_tags(tribe=""): def get_tags(tribe=""):
p = Path(tribe) p = Path(tribe)
tags = set() tags = set()
@ -36,13 +38,15 @@ def get_tags(tribe=""):
line = index.readline() line = index.readline()
while line: while line:
if line.startswith(":tags"): if line.startswith(":tags"):
tags.update(line[7:].replace("\n", "").split(', ')) tags.update(line[7:].replace("\n", "").split(", "))
break break
line = index.readline() line = index.readline()
return {t.lower() for t in tags} return {t.lower() for t in tags}
def next_weekday(date, day=0): def next_weekday(date, day=0):
return date + datetime.timedelta(days=(day-date.weekday()+7)%7) return date + datetime.timedelta(days=(day - date.weekday() + 7) % 7)
def sequence_prompt(): def sequence_prompt():
sequence = {} sequence = {}
@ -53,19 +57,24 @@ def sequence_prompt():
sequence["date"] = datetime.date.today() sequence["date"] = datetime.date.today()
tribes = WordCompleter([t["directory"] for t in TRIBES]) tribes = WordCompleter([t["directory"] for t in TRIBES])
sequence["tribe"] = prompt("Classe: ", completer=tribes, validator=Validator.from_callable(is_tribe)) sequence["tribe"] = prompt(
"Classe: ", completer=tribes, validator=Validator.from_callable(is_tribe)
)
sequences = get_sequences(sequence["tribe"]) sequences = get_sequences(sequence["tribe"])
print("Séquences trouvées:\n\t" + '\n\t'.join(sorted([s.name for s in sequences]))) print("Séquences trouvées:\n\t" + "\n\t".join(sorted([s.name for s in sequences])))
sequence["num"] = len(sequences) + 1 sequence["num"] = len(sequences) + 1
sequence["title"] = prompt(f"Nom de la séquence (n°{sequence['num']}): ") sequence["title"] = prompt(f"Nom de la séquence (n°{sequence['num']}): ")
known_tags = get_tags() known_tags = get_tags()
sequence["tags"] = prompt("Tags (séparés par une virgule): ", completer=WordCompleter(known_tags)) sequence["tags"] = prompt(
"Tags (séparés par une virgule): ", completer=WordCompleter(known_tags)
)
sequence["summary"] = prompt("Résumé: ") sequence["summary"] = prompt("Résumé: ")
return sequence return sequence
def import_skel(dest, datas, skel="sequence", skel_path="./tools/skeleton"): def import_skel(dest, datas, skel="sequence", skel_path="./tools/skeleton"):
d = Path(dest) d = Path(dest)
d.mkdir() d.mkdir()
@ -75,7 +84,7 @@ def import_skel(dest, datas, skel="sequence", skel_path="./tools/skeleton"):
template_loader = jinja2.FileSystemLoader(searchpath=p) template_loader = jinja2.FileSystemLoader(searchpath=p)
template_env = jinja2.Environment(loader=template_loader) template_env = jinja2.Environment(loader=template_loader)
texenv.loader.loaders.append(template_loader) texenv.loader.loaders.append(template_loader)
print("") print("")
@ -87,15 +96,18 @@ def import_skel(dest, datas, skel="sequence", skel_path="./tools/skeleton"):
output_text = template.render(**datas) output_text = template.render(**datas)
with open(d/filename, "w") as f: with open(d / filename, "w") as f:
f.write(output_text) f.write(output_text)
print(f"Importation de {filename} - OK") print(f"Importation de {filename} - OK")
@task @task
def sequence(c): def sequence(c):
sequence = sequence_prompt() sequence = sequence_prompt()
dest = unidecode(("{tribe}/{num:0>2}_{title}/".format(**sequence)).replace(" ", "_")) dest = unidecode(
("{tribe}/{num:0>2}_{title}/".format(**sequence)).replace(" ", "_")
)
dest = Path(dest) dest = Path(dest)
seq_summary = """\ seq_summary = """\
@ -106,12 +118,14 @@ def sequence(c):
Tags: {tags} Tags: {tags}
Sommaire: {summary} Sommaire: {summary}
Dossier: {dest} Dossier: {dest}
""".format(dest=dest, **sequence) """.format(
dest=dest, **sequence
)
print(seq_summary) print(seq_summary)
validate = prompt("C'est ok? ") validate = prompt("C'est ok? ")
if validate.lower() in ["o", "y", ""]: if validate.lower() in ["o", "y", ""]:
sequence["title_under"] = '#'*len(sequence["title"]) sequence["title_under"] = "#" * len(sequence["title"])
import_skel(dest, sequence, "sequence") import_skel(dest, sequence, "sequence")
else: else:
print("Tant pis. Ya plus qu'à recommencer.") print("Tant pis. Ya plus qu'à recommencer.")