Skip to content

Commit

Permalink
add mkdocs eva badge plugin, add eva macros, add stl unpacker
Browse files Browse the repository at this point in the history
  • Loading branch information
pkucmus committed Nov 17, 2020
1 parent 63f2a0a commit 25d737c
Show file tree
Hide file tree
Showing 7 changed files with 318 additions and 14 deletions.
2 changes: 1 addition & 1 deletion eva_3d/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = '0.1.0'
__version__ = "0.1.0"
44 changes: 40 additions & 4 deletions eva_3d/__main__.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,51 @@
import csv
from pathlib import Path
import shutil
import zipfile

import click


@click.group()
def main():
pass


@main.command()
@click.argument('bom-file', type=click.File('rb'))
def parse_bom(bom_file):
@click.argument("bom-file", type=click.File("r"))
@click.argument("zip-file", type=click.Path(exists=True))
@click.argument("stl-out-dir", type=click.Path())
def unpack_stls(bom_file, zip_file, stl_out_dir):
files = set()
reader = csv.DictReader(bom_file, delimiter=",", quotechar='"')
for row in reader:
if "Material" not in row:
raise Exception("export a BOM with a material column")
if "Name" not in row:
raise Exception("export a BOM with a name column")
if row["Material"].upper() == "PETG":
files.add(f"{row['Name']}.stl")

stl_out_dir = Path(stl_out_dir)
# if Path(stl_out_dir).exists():
# shutil.rmtree(stl_out_dir)
stl_out_dir.mkdir(exist_ok=True)

with zipfile.ZipFile(zip_file, 'r') as zip_ref:
for file_name in zip_ref.namelist():
for target_file in files:
if target_file in file_name:
zip_ref.extract(file_name, stl_out_dir)

for stl_file in stl_out_dir.iterdir():
try:
new_name = stl_file.name.split(" - ")[1]
except IndexError:
continue
stl_file.rename(Path(stl_file.parent, new_name))

print("works!")


if __name__ == '__main__':
main(prog_name='python -m eva-3d')
if __name__ == "__main__":
main(prog_name="python -m eva-3d")
33 changes: 28 additions & 5 deletions eva_3d/bom.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,46 @@
from pprint import pprint
from pathlib import Path


def define_env(env):

env.variables.download_url = f'{env.conf["repo_url"]}/archive/{env.conf["version"]}.zip'
env.variables.download_url = (
f'{env.conf["repo_url"]}/archive/{env.conf["version"]}.zip'
)
# import ipdb; ipdb.set_trace()

def generate_bom_table(reader, indent_str=""):
for index, row in enumerate(reader):
if index != 0:
if row[3].upper() == "PETG":
row[2] = f"[{row[2]}](stls/{row[2]}.stl)"
yield "{}| {} |".format(indent_str, " | ".join(row))
if index == 0:
yield "{}| {} |".format(indent_str, " | ".join(["-" * len(col) for col in row]))
yield "{}| {} |".format(
indent_str, " | ".join(["-" * len(col) for col in row])
)

@env.macro
def bom(file_name, indent=0):
def bom(file_path: str, indent=0):
indent_str = " " * indent
with open(Path(env.project_dir) / "bom" / file_name, newline='') as csvfile:
reader = csv.reader(csvfile, delimiter=',', quotechar='"')
with open(Path(env.conf["docs_dir"]) / file_path, newline="") as csvfile:
reader = csv.reader(csvfile, delimiter=",", quotechar='"')
return "\n".join(generate_bom_table(reader, indent_str))

@env.macro
def eva_link(name):
return f'[:octicons-mark-github-16: EVA 2 / {name}]({env.conf["eva_links"][name.lower()]})'

@env.macro
def onshape_link(name):
return f'[:octicons-file-binary-24: Onshape: {name}]({env.conf["onshape"][name.lower()]})'

@env.macro
def doc_env():
return {
name: getattr(env, name) for name in dir(env) if not name.startswith("_")
}

@env.macro
def badge(content):
return f"<button>{content}</button>"
8 changes: 8 additions & 0 deletions eva_3d/plugin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
from mkdocs.plugins import BasePlugin


class EVAPlugin(BasePlugin):
def on_page_markdown(self, markdown, page, config, files):
for badge in page.meta.get("badges", []):
markdown = f'<button class="badge md-button md-button-small md-button--primary">{badge}</button>\n{markdown}'
return markdown
Loading

0 comments on commit 25d737c

Please sign in to comment.