Metadata-Version: 2.4
Name: exsource_tools
Version: 0.0.9
Summary: Python tools for using Exsource files.
Author-email: Julian Stirling <julian@julianstirling.co.uk>
License-File: LICENSE
Keywords: Documentation,Hardware
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)
Requires-Python: >=3.7
Requires-Dist: argparse
Requires-Dist: jsonschema
Requires-Dist: pyyaml>=5.1
Provides-Extra: dev
Requires-Dist: build; extra == 'dev'
Requires-Dist: colorama; extra == 'dev'
Requires-Dist: pylint; extra == 'dev'
Requires-Dist: twine; extra == 'dev'
Description-Content-Type: text/markdown

# ExSource-Tools

An experimental Python library for validating and using the [ExSource Specification](https://gitlab.com/gitbuilding/exsourcespec) which is in the early stage of development.

## Commands

### Make

This packages adds the following command:

    exsource-make

This will attempt to process `exsource-def.yml` to create inputs. The first instance of this proof of principle implementation supports OpenSCAD, FreeCAD, CadQuery, and EngScript files. Each of these must be installed separately if they are to be used.

***FreeCAD***  
By default FreeCAD exporter will expect there to be a PartDesign Body called `Body`, it can export this to STEP and/or STL. The body to export can be changed by specifying the label of the object with `object-selected` as a parameter. For example:
```yaml
frame:
    name: Main frame
    description: >
        This frame holds the shelf brackets and shelves.
    output-files:
        - output/frame.step
        - output/frame.stl
    source-files:
        - assets/frame.FCStd
    parameters:
        object-selected: "Frame"
    application: freecad
```

***CadQuery***  
The CardQuery export is performed via [cq-cli](https://github.com/CadQuery/cq-cli)

### Check

You can also use the command:

    exsource-check

This will specify what would happen if `exsource-make` was run.

**EngScript**  
EngScript export is performed with the `engscript` cli tool added in EngScript 0.0.2. All files must supply a `generate()` method.
