From 8c4ff2ab4b338feb9a49c96e4bdcd184ad2e314b Mon Sep 17 00:00:00 2001 From: sindrel <35308882+sindrel@users.noreply.github.com> Date: Wed, 4 Oct 2023 23:02:00 +0200 Subject: [PATCH] chore: Update readme --- README.md | 82 +++++++++++++++++++++++++------------------- assets/workflow.png | Bin 0 -> 10604 bytes 2 files changed, 47 insertions(+), 35 deletions(-) create mode 100644 assets/workflow.png diff --git a/README.md b/README.md index fc7c746..a772107 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ -# Excalidraw Converter -**A command line tool for porting Excalidraw diagrams to Gliffy and draw.io.** +drawing + +# Excalidraw Converter +**A command line tool for porting Excalidraw diagrams to Gliffy and draw.io.** [Excalidraw](https://excalidraw.com/) is great for sketching diagrams as part of a design process, but chances are that you have to redo those sketches for documentation. This tool is made to bridge those tasks. @@ -23,74 +25,61 @@ If you're a Linux or MacOS user, move it to your local bin folder to make it ava ### How to convert diagrams First save your Excalidraw diagram to a file. -Then, to do a conversion, simply execute the binary by specifying the `gliffy` command, the path to your Excalidraw save file, and the path to where you want your converted file to be saved. +Then, to do a conversion, simply execute the binary by specifying the `gliffy` command, and the path to your Excalidraw file. + +```sh +exconv gliffy -i ~/Downloads/my-diagram.excalidraw +```
MacOS example - ``` - $ exconv gliffy -i ~/Downloads/my-diagram.excalidraw -o /tmp/my-ported-diagram.gliffy + ```sh + $ exconv gliffy -i ~/Downloads/my-diagram.excalidraw Parsing input file: ~/Downloads/my-diagram.excalidraw Adding object: com.gliffy.shape.basic.basic_v1.default.rectangle Adding object: com.gliffy.shape.basic.basic_v1.default.text - Adding object: com.gliffy.shape.basic.basic_v1.default.text - Adding object: com.gliffy.shape.basic.basic_v1.default.text - Adding object: com.gliffy.shape.basic.basic_v1.default.text - Adding object: com.gliffy.shape.basic.basic_v1.default.text - Adding object: com.gliffy.shape.basic.basic_v1.default.text - Adding object: com.gliffy.shape.basic.basic_v1.default.rectangle - Adding object: com.gliffy.shape.basic.basic_v1.default.text + [...] Adding object: com.gliffy.shape.basic.basic_v1.default.text Adding object: com.gliffy.shape.basic.basic_v1.default.line - Converted diagram saved to file: /tmp/my-ported-diagram.gliffy + Converted diagram saved to file: my-diagram.gliffy ```
Linux example - ``` - $ ./exconv gliffy -i ~/Downloads/my-diagram.excalidraw -o /tmp/my-ported-diagram.gliffy + ```sh + $ ./exconv gliffy -i ~/Downloads/my-diagram.excalidraw Parsing input file: ~/Downloads/my-diagram.excalidraw Adding object: com.gliffy.shape.basic.basic_v1.default.rectangle Adding object: com.gliffy.shape.basic.basic_v1.default.text - Adding object: com.gliffy.shape.basic.basic_v1.default.text - Adding object: com.gliffy.shape.basic.basic_v1.default.text - Adding object: com.gliffy.shape.basic.basic_v1.default.text - Adding object: com.gliffy.shape.basic.basic_v1.default.text - Adding object: com.gliffy.shape.basic.basic_v1.default.text - Adding object: com.gliffy.shape.basic.basic_v1.default.rectangle - Adding object: com.gliffy.shape.basic.basic_v1.default.text + [...] Adding object: com.gliffy.shape.basic.basic_v1.default.text Adding object: com.gliffy.shape.basic.basic_v1.default.line - Converted diagram saved to file: /tmp/my-ported-diagram.gliffy + Converted diagram saved to file: my-diagram.gliffy ```
Windows example - ``` - C:\> exconv.exe gliffy -i C:\Downloads\my-diagram.excalidraw -o C:\tmp\my-ported-diagram.gliffy + ```sh + C:\> exconv.exe gliffy -i C:\Downloads\my-diagram.excalidraw Parsing input file: C:\Downloads\my-diagram.excalidraw Adding object: com.gliffy.shape.basic.basic_v1.default.rectangle Adding object: com.gliffy.shape.basic.basic_v1.default.text - Adding object: com.gliffy.shape.basic.basic_v1.default.text - Adding object: com.gliffy.shape.basic.basic_v1.default.text - Adding object: com.gliffy.shape.basic.basic_v1.default.text - Adding object: com.gliffy.shape.basic.basic_v1.default.text - Adding object: com.gliffy.shape.basic.basic_v1.default.text - Adding object: com.gliffy.shape.basic.basic_v1.default.rectangle - Adding object: com.gliffy.shape.basic.basic_v1.default.text + [...] Adding object: com.gliffy.shape.basic.basic_v1.default.text Adding object: com.gliffy.shape.basic.basic_v1.default.line - Converted diagram saved to file: C:\tmp\my-ported-diagram.gliffy + Converted diagram saved to file: my-diagram.gliffy ``` -
+ +### Importing ![Animation demonstrating use](exconv.gif "Animation") -After converting your diagram(s), import them into Gliffy using the standard Import dialog. +After converting your diagram(s), import them into Gliffy (or draw.io) using the standard Import dialog. ## Commands ```sh @@ -104,6 +93,26 @@ Flags: -h, --help help for exconv ``` +### Gliffy conversion options +When an output file path is not provided, it will be determined +automatically based on the filename of the input file. If you provide the +input file path `./subfolder/your_file.excalidraw`, the default output file path will be `./your_file.gliffy`. + +This can be overridden using the `-o` flag. + +```sh +Example: + exconv gliffy -i your_file.excalidraw + +Usage: + exconv gliffy [flags] + +Flags: + -h, --help help for gliffy + -i, --input string input file path + -o, --output string output file path (default "your_file.gliffy") +``` + ## Features All fixed shapes and most styling and text options are supported. @@ -141,6 +150,9 @@ In draw.io, you can import a diagram by simply opening the file from your device ## Contributing See something you'd like to improve? Feel free to add a pull request. If it's a major change, it's probably best to describe it in an [issue](https://github.com/sindrel/excalidraw-converter/issues/new) first. +## Attributions +* Workflow icons created by Freepik - Flaticon + ## Development
Instructions diff --git a/assets/workflow.png b/assets/workflow.png new file mode 100644 index 0000000000000000000000000000000000000000..3fd89c593ab2e77f14f3a236b45034cd86eac955 GIT binary patch literal 10604 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 literal 0 HcmV?d00001