In this liveProject, you’ll take on the challenge of designing and building a custom CLI using Python. Command line interface tools automate repetitive tasks and help streamline software development. Companies that use bespoke CLIs can easily manage change, smooth friction between teams, and reduce time spent on red tape.
You’ll join up with KlickBrick, a toy company whose digital expansion is grinding to a halt under mismanagement, and create a CLI framework that helps bring development teams together. You’ll need to assemble the infrastructure for your CLI, then develop functionality for onboarding employees, initializing new software project repositories, and reporting CLI usage metrics to a server.
This project is designed for learning purposes and is not a complete, production-ready application or solution.
This liveProject is for the intermediate Python programmer interested in expanding their software engineering skills. To begin this liveProject you will need to be familiar with:
- Basic Python language syntax, using modules, and package management
- Unit test frameworks, such as unittest
- Integration test frameworks, such as Behave
- Package repository services, such as PyPI
- Git and repository hosting services, like GitHub
- Continuous Integration services, such as TravisCI
- Hands-on experience with multi-command CLIs, such as git, aws-cli, pip, or homebrew
- Behavior Driven Development, familiar translating general business requirements into user scenarios
- Best Practices for maintaining an open/inner-source project, such as documentation and using a linter and formatter
- Automated testing methodologies, familiar with the difference between unit and integration testing
- CI/CD philosophy, best practices for testing, building, and publishing software
you will learn
In this liveProject, you’ll apply real-world software engineering practices to build a CLI with Python. You’ll get experience with the processes for building and distributing software that’s both high-quality and maintainable.
- Implement an extensible CLI framework using the Python argparse module
- Translate business requirements into integration tests using Behavioral Driven Development process and the Behave framework
- Manage dependencies and packaging using Poetry
- Establish a pattern for unit testing the CLI framework
- Apply engineering best practices to make the CLI maintainable, using techniques like linting, formatting, and logging strategy
- Create a well-documented and organized repository that could facilitate an open/inter-source development model
- Report on CLI usage by sending metrics to a backend API using the Contract Driven Development process, the OpenAPI specification, and the Connexion framework to quickly generate a backend server to integrate with