Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Basic Checks
Have you run
rush change
for this change?If No, please run
rush change
before, this is necessary.If adding a new feature, the PR's description includes:
Does this PR introduce a breaking change? (check one)
If yes, please describe the impact and migration path for existing applications:
Summary
This PR adds completion feature to Sparo CLI
Detail
Shell completion can improve the user experience when running Sparo commands. This PR leverages
yargs
's completion feature to support completion for most all commands.User needs to add
eval "$(sparo completion)"
to~/.zshrc
file. The "sparo completion" command prints shell script and loaded by theeval
command.Remember to use
source ~/.zshrc
to make it take effect immediately.I would like to put some show cases here. Just type in the terminal and press "Tab" to trigger completion.
a. Top level sparo command completion
![CleanShot 2024-08-08 at 15 03 55@2x](https://private-user-images.githubusercontent.com/16147702/356394789-4f6997f7-32f6-4d5e-851b-da2b8c99637c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk3MDE2NjIsIm5iZiI6MTczOTcwMTM2MiwicGF0aCI6Ii8xNjE0NzcwMi8zNTYzOTQ3ODktNGY2OTk3ZjctMzJmNi00ZDVlLTg1MWItZGEyYjhjOTk2MzdjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE2VDEwMjI0MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTM4M2M4NmU2OTViZDEyYTAyNjJmZmNiNmQwNGIzMTg5NzM1MjZhOGI0Njg5Y2Q3ZDUxNmI4YTcyZWU0YTg5NjQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.OpD1hU3uK_xbfCAafALXyFg0ItglpiTzvWjtFWq8yDI)
b. sparo add file completion
![CleanShot 2024-08-08 at 15 06 07@2x](https://private-user-images.githubusercontent.com/16147702/356395176-9bde4c97-27b5-4eec-bea1-d7531ae9b13a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk3MDE2NjIsIm5iZiI6MTczOTcwMTM2MiwicGF0aCI6Ii8xNjE0NzcwMi8zNTYzOTUxNzYtOWJkZTRjOTctMjdiNS00ZWVjLWJlYTEtZDc1MzFhZTliMTNhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE2VDEwMjI0MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTU2MTJhMDc5MmI4YzlkYzA2Y2RjNWVhOTE0NmRiMGI3ZWI1NGZiM2MwYmExNzA3Y2Y0YmEwMDE4YmZhYTM5M2UmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.mJ9oKQg2qv-1yd0oq_irLT7FPwPcUSYrUmkaZDE7iFU)
c. sparo checkout --profile completion
![CleanShot 2024-08-08 at 15 06 38@2x](https://private-user-images.githubusercontent.com/16147702/356395355-9be5b6dc-cec4-474c-90f4-ffc597bc2568.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk3MDE2NjIsIm5iZiI6MTczOTcwMTM2MiwicGF0aCI6Ii8xNjE0NzcwMi8zNTYzOTUzNTUtOWJlNWI2ZGMtY2VjNC00NzRjLTkwZjQtZmZjNTk3YmMyNTY4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE2VDEwMjI0MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQyMTIyNjdiMDA5MTVjMzBiNWQ4NDJkOGU3NmQ0NmY3ZGI4OWFmZjRjMDg4OTIyNWQ5NGVhY2RhMmRlMDVmMGImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0._cTYqkQcCXjEKm6sCV_12KM7MBTSZbg0uMYQV70rI0Y)
d. sparo checkout --to completion
![CleanShot 2024-08-08 at 15 07 08@2x](https://private-user-images.githubusercontent.com/16147702/356395450-36a21db6-e919-4c59-8205-0bcf20f52583.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk3MDE2NjIsIm5iZiI6MTczOTcwMTM2MiwicGF0aCI6Ii8xNjE0NzcwMi8zNTYzOTU0NTAtMzZhMjFkYjYtZTkxOS00YzU5LTgyMDUtMGJjZjIwZjUyNTgzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE2VDEwMjI0MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTMwYTg3MjY4OTdkMTIyYjNkMGQ0MDlhZTM0M2RlMDJmZmQ0YWI1NDUwZDUxMTYwMTc1YTdiYjYxMWQzNmYwMjkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.1jsEcixHyQ-s_JS1TdXF1sRmbAah4xJ8d8XLHyISET4)
e. sparo list-profiles --project completion
![CleanShot 2024-08-08 at 15 08 32@2x](https://private-user-images.githubusercontent.com/16147702/356395917-d31aea9e-2a21-40af-a6d7-b130666d8f16.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk3MDE2NjIsIm5iZiI6MTczOTcwMTM2MiwicGF0aCI6Ii8xNjE0NzcwMi8zNTYzOTU5MTctZDMxYWVhOWUtMmEyMS00MGFmLWE2ZDctYjEzMDY2NmQ4ZjE2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE2VDEwMjI0MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWU5ZWE2NmI4Y2Y0ZGU1OWZmMTdjMTY3ZmYyNGRjNzkzMmJlOTUyMjM3ZDg2ZmYyZjNhM2NhZTcwNGVkNDdhNTQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.hCOqE212vUzz7RaCcv4CvXTK5LoXZg9UDHJnPLjHcCw)
How to test it
Added a build test in this PR for testing the entire completion feature
Run the following command to test completion locally: