From 0b6b7cb57df87d814f063f7375878e0183ccb410 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sat, 18 Jul 2020 10:52:22 +1000 Subject: [PATCH] Update docs --- KiBOM_CLI.py | 2 +- README.md | 54 ++++++++++++++++++++------------------------ example/html_ex.png | Bin 10181 -> 21700 bytes 3 files changed, 25 insertions(+), 31 deletions(-) diff --git a/KiBOM_CLI.py b/KiBOM_CLI.py index e114e9a..3ae019d 100755 --- a/KiBOM_CLI.py +++ b/KiBOM_CLI.py @@ -14,7 +14,7 @@ (this file is auto-generated with default options the first time the script is executed). For usage help: - python -m kibom -h + python KiBOM_CLI.py -h """ import sys diff --git a/README.md b/README.md index a5ea425..161eb0b 100644 --- a/README.md +++ b/README.md @@ -14,41 +14,37 @@ BoM options are user-configurable in a per-project configuration file. ## Installation -KiBom can be installed through the PIP package manager: +KiBoM can be installed via multiple methods: -```pip install kibom``` - -*Note: Take note of which python executable you use when installing kibom - this is the same executable you must use when running the KiBom script from KiCAD (more details below under "Usage")* +**A. Download** -## Usage - -The KiBoM script can be run directly from KiCad or from the command line, e.g. +Download the KiBoM [package from github](https://github.com/SchrodingersGat/KiBoM/archive/master.zip) and extract the .zip archive to a location on your computer. -`python -m kibom "%I" "%O.csv"` +**B. Git Clone** -**Note: Selecting python executable** +Use git to clone the source code to your computer: -The python executable you choose (i.e. the *python* part of the command above) **must** be the same as the one you used to install kibom (using pip). +`git clone https://github.com/SchrodingersGat/kibom` -By default KiCad uses the version of python packaged with the KiCad application (i.e. kicad/bin/python). +**C. PIP** -**Example: Install kibom under python3 on windows** +KiBom can also be installed through the PIP package manager: -You have installed kibom using Python3: `pip3 install kibom` +```pip install kibom``` -To launch the script correctly from the KiCad BOM window, use the command: +*Note: Take note of which python executable you use when installing kibom - this is the same executable you must use when running the KiBom script from KiCAD (more details below under "Usage")* -`python3.exe -m kibom "%I" "%O.csv"` +Installing under PIP is recommended for advanced users only, as the exact location of the installed module must be known to properly run the script from within KiCad. -If you are running a different python version, select that accordingly. +## Usage -For command help, run the script with the *-h* flag e.g. +The *KiBOM_CLI* script can be run directly from KiCad or from the command line. For command help, run the script with the *-h* flag e.g. -`python -m kibom -h` +`python KiBOM_CLI.py -h` ~~~~ -usage: python -m kibom [-h] [-n NUMBER] [-v] [-r VARIANT] [-d SUBDIRECTORY] - [--cfg CFG] [-s SEPARATOR] [--version] +usage: KiBOM_CLI.py [-h] [-n NUMBER] [-v] [-r VARIANT] [--cfg CFG] + [-s SEPARATOR] netlist output KiBOM Bill of Materials generator script @@ -56,8 +52,8 @@ KiBOM Bill of Materials generator script positional arguments: netlist xml netlist file. Use "%I" when running from within KiCad - output BoM output file name. Use "%O" when running from - within KiCad to use the default output name (csv + output BoM output file name. Use "%O" when running from + within KiCad to use the default output name (csv file). For e.g. HTML output, use "%O.html" optional arguments: @@ -66,21 +62,19 @@ optional arguments: Number of boards to build (default = 1) -v, --verbose Enable verbose output -r VARIANT, --variant VARIANT - Board variant(s), used to determine which components - are output to the BoM. To specify multiple variants, - with a BOM file exported for each variant, separate - variants with the ';' (semicolon) character. + Board variant(s), used to determine which components are + output to the BoM -d SUBDIRECTORY, --subdirectory SUBDIRECTORY - Subdirectory within which to store the generated BoM - files. + Subdirectory (relative to output file) within which the + BoM(s) should be written. --cfg CFG BoM config file (script will try to use 'bom.ini' if not specified here) -s SEPARATOR, --separator SEPARATOR CSV Separator (default ',') - --version show program's version number and exit -~~~~ +~~~~ + **netlist** The netlist must be provided to the script. When running from KiCad use "%I" **output** This is the path to the BoM output. When running from KiCad, usage "%O" for the default option diff --git a/example/html_ex.png b/example/html_ex.png index 521ee00408ef2bcbf1b4da29ddb2fb76790ec20b..3f5f0e5e7d883ebd7f8e5f2433b30b2ed12db4e0 100644 GIT binary patch literal 21700 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 E0LIROzW@LL literal 10181 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