Slide 1

Slide 1 text

#PSHSummit From zero to publishing PowerShell API clients in PowerShell Gallery within minutes. William Cheng @wing328

Slide 2

Slide 2 text

#PSHSummit Agenda - What's OpenAPI Generator? - How to generate PowerShell modules using OpenAPI Generator? (Demo) 2

Slide 3

Slide 3 text

#PSHSummit William Cheng • #1 contributor to OpenAPI Generator • Core team, founding member of OpenAPI Generator (https://openapi-generator.tech) • eBook author: https://gumroad.com/wing328 • Conference speaker: https://speakerdeck.com/wing328/ • Founder of RESTUnited.com • Morgan Stanley Alumni • Github, Twitter: @wing328 3

Slide 4

Slide 4 text

#PSHSummit What is OpenAPI Generator? 4 [OUTPUT] API clients, server stubs, documentation etc ● API clients (30 programming languages) ● 30+ server frameworks ● API Documentations ● GraphQL, Protobuf, Avro schemas ● Apache2 web server config ● MySQL DB schemas [INPUT] OpenAPI Spec (YAML/JSON) For REST APIs ● Swagger 1.2 ● Swagger/OpenAPI 2.x ● OpenAPI 3.x [PROCESS] OpenAPI Generator ● Java package (JAR) ● CLI ● Brew (MacOS) ● REST API ● Docker ● npm package wrapper (~120k weekly download) ● Plug-ins (Maven, Gradle, Bazel, etc) ● IDE integrations (Eclipse, IntelliJ IDEA, VS Code, etc)

Slide 5

Slide 5 text

#PSHSummit Who are using OpenAPI Generator in production?

Slide 6

Slide 6 text

#PSHSummit Demo 1. Generate PS module for Pet Store API (https://pubi.org/petstore_oas3.json) 2. Customize the output 3. Make some API calls! 4. Add integration tests 5. Publish the modules to PowerShell Gallery (https://www.powershellgallery.com/)

Slide 7

Slide 7 text

#PSHSummit Generate PS module for Pet Store API - OpenAPI spec: https://pubi.org/petstore_oas3.json - Command: $ openapi-generator-cli generate -g powershell -i https://pubi.org/petstore_oas3.yaml -o ./demo

Slide 8

Slide 8 text

#PSHSummit Review the output

Slide 9

Slide 9 text

#PSHSummit Customization - List of generator options $ openapi-generator-cli config-help -g powershell - Command to customize the version and package name: $ openapi-generator-cli generate -g powershell -i https://pubi.org/petstore_oas3.yaml -o ./demo2 --additional-properties packageName=PSPetstoreDemo,packageVersion=0.3.4

Slide 10

Slide 10 text

#PSHSummit Customization - Customize the Mustache templates (modules/openapi-generator/src/main/resources/powershell/) - Command to customize the version and package name: $ git clone https://github.com/openAPITools/openapi-generator/ $ cp -R openapi-generator/modules/openapi-generator/src/main/resources/p owershell/ custom_template $ openapi-generator-cli generate -g powershell -i https://pubi.org/petstore_oas3.yaml -o ./demo4 -t custom_template

Slide 11

Slide 11 text

#PSHSummit Installation - Command to customize the version and package name: $ openapi-generator-cli generate -g powershell -i https://pubi.org/petstore_oas3.yaml -o ./demo6 --additional-properties packageName=PSPetstoreDemo,packageVersion=0.3.4

Slide 12

Slide 12 text

#PSHSummit Tests - Test file to add tests: ./tests/Api/PetApi.Tests.ps - Add a Pet and then get a Pet to check the values

Slide 13

Slide 13 text

#PSHSummit Appveyor - Command to customize the powershell version as well: $ openapi-generator-cli generate -g powershell -i https://pubi.org/petstore_oas3.yaml -o ./demo6 --additional-properties packageName=PSPetstoreDemo,packageVersion=0.3.4,powershell Version=5.0

Slide 14

Slide 14 text

#PSHSummit In summary ... 1. One single OpenAPI Generator command to generate the PowerShell module 2. Push the code to Github 3. Enable AppVeyor with PowerShell Gallery API key 4. Release!

Slide 15

Slide 15 text

#PSHSummit Contribute Back - Contribute back enhancements, bug fixes - Donation https://opencollective.com/openapi_generator 🙏

Slide 16

Slide 16 text

#PSHSummit eBook - OpenAPI Generator for PowerShell Developers https://gum.co/openapi_generator_powershell

Slide 17

Slide 17 text

#PSHSummit Q&A - Contact: [email protected]