Powerful Command-Line Applications in Go Build Fast and Maintainable Tools
Saved in:
| Main Author: | |
|---|---|
| Format: | eBook |
| Language: | English |
| Published: |
La Vergne
Pragmatic Programmers, LLC, The
2022
|
| Edition: | 1 |
| ISBN: | 168050696X, 9781680506969 |
| Online Access: | Get full text |
| Tags: |
Add Tag
No Tags, Be the first to tag this record!
|
Table of Contents:
- Cover -- Table of Contents -- Foreword -- Acknowledgments -- Preface -- What's in This Book -- How to Use This Book -- About the Example Code -- Go Modules -- Online Resources -- 1. Your First Command-Line Program in Go -- Building the Basic Word Counter -- Testing the Basic Word Counter -- Adding Command-Line Flags -- Compiling Your Tool for Different Platforms -- Exercises -- Wrapping Up -- 2. Interacting with Your Users -- Organizing Your Code -- Defining the To-Do API -- Creating the Initial To-Do Command-Line Tool -- Testing the Initial CLI Implementation -- Handling Multiple Command-Line Options -- Display Command-Line Tool Usage -- Improving the List Output Format -- Increasing Flexibility with Environment Variables -- Capturing Input from STDIN -- Exercises -- Wrapping Up -- 3. Working with Files in Go -- Creating a Basic Markdown Preview Tool -- Writing Tests for the Markdown Preview Tool -- Adding Temporary Files to the Markdown Preview Tool -- Using Interfaces to Automate Tests -- Adding an Auto-Preview Feature -- Cleaning Up Temporary Files -- Improving the Markdown Preview Tool with Templates -- Exercises -- Wrapping Up -- 4. Navigating the File System -- Developing a File System Crawler -- Testing with Table-Driven Testing -- Deleting Matched Files -- Testing with the Help of Test Helpers -- Logging Deleted Files -- Archiving Files -- Exercises -- Wrapping Up -- 5. Improving the Performance of Your CLI Tools -- Developing the Initial Version of colStats -- Writing Tests for colStats -- Benchmarking Your Tool -- Profiling Your Tool -- Reducing Memory Allocation -- Tracing Your Tool -- Improving the colStats Tool to Process Files Concurrently -- Reduce Scheduling Contention -- Exercises -- Wrapping Up -- 6. Controlling Processes -- Executing External Programs -- Handling Errors -- Writing Tests for Goci -- Defining a Pipeline
- Adding Another Step to the Pipeline -- Handling Output from External Programs -- Running Commands with Contexts -- Integration Tests with a Local Git Server -- Testing Commands with Mock Resources -- Handling Signals -- Exercises -- Wrapping Up -- 7. Using the Cobra CLI Framework -- Starting Your Cobra Application -- Navigating Your New Cobra Application -- Adding the First Subcommand to Your Application -- Starting the Scan Package -- Creating the Subcommands to Manage Hosts -- Testing the Manage Hosts Subcommands -- Adding the Port Scanning Functionality -- Using Viper for Configuration Management -- Generating Command Completion and Documentation -- Exercises -- Wrapping Up -- 8. Talking to REST APIs -- Developing a REST API Server -- Testing the REST API Server -- Completing the REST API Server -- Developing the Initial Client for the REST API -- Testing the Client Without Connecting to the API -- Viewing a Single Item -- Adding an Item -- Testing HTTP Requests Locally -- Completing and Deleting Items -- Executing Integration Tests -- Exercises -- Wrapping Up -- 9. Developing Interactive Terminal Tools -- Initializing the Pomodoro Application -- Storing Data with the Repository Pattern -- Testing the Pomodoro Functionality -- Building the Interface Widgets -- Organizing the Interface's Layout -- Building the Interactive Interface -- Initializing the CLI with Cobra -- Exercises -- Wrapping Up -- 10. Persisting Data in a SQL Database -- Getting Started with SQLite -- Go, SQL, and SQLite -- Persisting Data in the Database -- Testing the Repository with SQLite -- Updating the Application to Use the SQLite Repository -- Displaying a Summary to the Users -- Exercises -- Wrapping Up -- 11. Distributing Your Tool -- Starting the Notify Package -- Including OS-Specific Data -- Including OS-Specific Files in the Build -- Testing the Notify Package
- Conditionally Building Your Application -- Cross-Compiling Your Application -- Compiling Your Go Application for Containers -- Distributing Your Application as Source Code -- Exercises -- Wrapping Up -- Index -- - SYMBOLS - -- - A - -- - B - -- - C - -- - D - -- - E - -- - F - -- - G - -- - H - -- - I - -- - J - -- - L - -- - M - -- - N - -- - O - -- - P - -- - Q - -- - R - -- - S - -- - T - -- - U - -- - V - -- - W - -- - X -

