Optum / dce-cli

Disposable Cloud Environment CLI
Apache License 2.0
37 stars 19 forks source link

Prompts do not handle long input strings correctly #43

Closed joshmarsh closed 4 years ago

joshmarsh commented 4 years ago

When the user responds to a prompt for user input, the prompter will repeatedly echo the string if it is very long. For example, responding to the dce auth prompt should look like this:

~ dce auth
Enter API Token: xxxxx2Nlc3NLZXlJZCI6IkFTSUEzSklFNUZPTkpETEgyS0NEIiwic2VjcmV0QWNjZXNzS2V5IjoiSVdVRU1reGNFUmNGeWxNbDRRdmVjUmJZREZ6WWF6VEVFMEp4Um1kZSIsInNlc3Npb25Ub2tlbiI6IklRb0piM0pwWjJsdVgyVmpFT2ovLy8vLy8vLy8vd0VhQ1hWekxXVmhjM1F0TVNKR01FUUNJRElTdEpxV3ZDUE1WZGt5UlJHNE9La1hJZmlCdEdVRGdzxXVpZnV1T1crWEFpQTNTelAvQVF1czcwZmhITVNpSXNXbk5MdVQwR250aC90TmdtbFdKT0E2N0NyK0F3Z3hFQUFhRERjM05UYzRPRGMyT0RFMU5DSU0vL0RWMFlrUitsc0w3SWpnS3RzRDJpTVoyTkwxQmF4NVNMb0loNVJVTXlMYWxHU3ZQVGdtVVVKNDJxSx9YSWdiWXFXcU16WFoxQ0ExaEx6UXRKYlltWDBOUjNHNGswTDN5clFLd25EbkNrQUNnZE1ZdHZBRzNVVXhPUHRjeDVMV0ZkUUhtNTNlbTNna0ZwVHhPUEV3aGxRYm04TjlKamVUbGZadkVOdG9lVzBaZmpSbEU1eE5VN2xaaWYwYTRwbEpmTzJJeHRTdmV3b2hURXRzUWk3Z2pTdmlRcU90T3B4OUlScDlHa280U1MwVStsSVZVR0lIZnpqME53ZjdtTjBLRmpLaVlGa3pqVnMyZHpNQmdUTFZ1Ox56a3ZtZzJoUnFkWExjWUdEbTVjWmRnNnBBaVdhRm1nbVdWSTd5a2g1d0Zyei92dlFaTXF3Q0xxeGNQU3JNYmpjVG9NWU9MYm9MMW52eG9JVTNxb1MwUDJGbFdQSFdIMTlDc3JRYVJDQWNVaHVXN1JibWtwMHBkN0Zna25nRzJmT2ZWanh4d2RrODh2UGd6WSt4N2JKY3F3cURxUWZOSlR3TFV1bWNUenJDMHoyQVNBWXJXNmdGZnRUTjZQN3Z4cUQweTM3cm5tdWVhM25hVmR2UxF5c0Q3azFrRHBJWk5FQTVKOVovdmRYNDVXbmdZTWpkNFpyMWxVN1NHWFcycnB5UUNVK0puQmVUSEU2aGlsaDE5R1BhdDFoMExNR2lNQlBkem1LR0ZBRHFhaU5ZUkdVWUNSQThGxGNHdFBsN25xek5jOWdrWUhZRGpmS0RLcisvcVRHYkhHNUpIQlVYNUozblg5MkR0WXZCUHdEZmE0R2NSc2FJdGpDeGlwcnZCVHJNQXVRaVpXNlZZTDFkd3V2ejNzQjRKbjVKVVYxVlRtK3FzMCs0ZEkweE93eGlob016RDA2My81WXQzZWRKckdPZVU3bGV4ektLRjlyMFJiU3VWcE5VUHRxYzNjVG5hMTZOSUgyOFp2eXVkODdMWUMxc25RREg3eDRhamF3ckNiOWg4MVFwaThyaHV0Y3RTRDJJSFZtOU02N0t2TmZjRmc0WlM4SytVWHNoODVkNk5iVkxldStBWkJxR3pUNEdVT0NiSnlOeng3RWpzMmNvNlg1U3NWYmVoUlZWMWtEdkFTWE0rYk1nVmYzbXRPZnpxTVBnTUdTYUh3UE1tU0ozc2ErOEFPZHFQb3l6WXdXN25zNnZ0RlUzZnEwbE5STUtQZVFEZTJzdndTeUI3U0pjMzFhK1pJWlZ2T3k5cUN1QmZTbUVjZkRuQ0ZSck1xYXVSOENNblJSTTM2TjBuWEhsR2dlbU9Ya0V0eTk0K2VaaE1HUTdQWk43RHF3L1pVa1ZubktRSDE2di9Zb003QlViU1BDV0VhM0ZVc0ZhVFJMUm8rNml3Zyt2VytLckZMTmdBT2pPVVdKZjBjYWRyMWF4IiwiZXhwaXJlVGltZSI6MTU3NTM5MjA2NX0=

but instead looks like this:

~ dce auth
Enter API Token: xxxxx2Nlc3NLZXlJZCI6IkFTSUEzSklFNUZPTk1RM0ZENzdWIiwic2VjcmV0QWNjZXNzS2V5IjoiNlViUUdVOTkyTXNQeHpncVhaMHlybnF4OG1YRTE5RkxnSlZzMEZyRSIsInNlc3Npb25Ub2tlbiI6IklRb0piM0pwWjJsdVgyVmpFT2ovLy8vLy8vLy8vd0VhQ1hWekxXVmhjM1F0TVNKSE1FVUNJUUMrWEx6VlhpUmgyMk8vcjNsR3YvOVBqN3lXOFpkZnJubU5JL0d6ZUtMN0FBSWdPdnRWbkFKWjd5TDN6WTBJT0pUa0d3MnRQYWNab2xXM1ZZYlFVT2p2RDZncS9nTUlNUkFBR2d3M056VTNPRGczTmpneE5UUWlETzVwRkhLNUpsaU91T29DS2lyYkE1VG13TmVhYnRQaHFIcnpKbW1yd1MwOWhlNxx5TXJlbmlHb1V1NVBnZUdad3R3RFdzUG5uVXZOOGFHbGQ5OFZYbFJEWVZwcTBKL0oranpycGNUWVhZQjBxb3R4K2ZGYU9wTFRnL0RMMHxrZFVFTTk0NkFhQ2NzdjR6YnlsWWQvTDUxUTV4UytKK0JKUnVnRi9aNUg2bEk5dEM0OXdhZXZGaCtPTXRCYWljWkY2K2pPa1lhV3VLSDlpY3ZLWnEraHd1Z0FGc2V3MkxPTnA3TE5IMnZMQ05XQS9RQUZsMS9rOWJ2Y3RheWtlS0d3TUdqREZ5VlhPcVlwRW10dVJLKzZDM2Z4L3k4THhUM0Fnc2ZMeW1ER1ZjZzZuemdSTlBQWSthOXJhU2FWUUUwcDRsODlPUXNFZTlrSnBPWEFvcEM4M1QyK1RwN28xZE5FQWQyZ2ZMZGxTNkJnRXZ0WWllTCtqRGI0ck43V0xtUkgvLxZFSzl6RURqelpzM3Y5bTdhd0pQU0J4UG9vNUFNeFF5UmRvRWpCemJCTytteExyOTRDcDdLa1VSMGh0QUxVVDFRWVl1eTROSmRSbGtYeXRqTjh0MTZlR1RqZEorNVA4QjZVdGFhYnhtOU11dFBlM0RFa255bWE1cFRPL083ZmF6WlRwZVNUUVM0UU4vOHQzVHZZZEpwK1Y2QTJZbkNCdEZZcW1JNUNEMFFEREVhT1h2eWFRMzJTL0hleUE5N05GWGxUY05LTythVjNEUkxwUTlWdDdraGgvaEo4SExlcmJ1bjlhNTF6R0VGaUwrUHU3MVpZa2RrM3NUVTBZYjZ3bitiKytzRXJRd3dtdUhvd3pJMmE3d1U2eXdLa2J5UUFNYldMSkxxTG9EUk02ZUxWY2w1Z3ZkV1hsUm9SeXl5TlJvK0J2cTVSSHFaUTlpVlVVa2hWMGV1dVl1NmJXcWpEZHg2clNMVzBZZ1pDLzQ3WUlodFdwT2Z0dmFXbzdEdkdVR2I3Q1grN1B3dXhOVVlPUmtSTEthd05LOFh5aERpRjVUb01WODVBMXpmdlNiRUZKTStSdEVYc2lFbmVrQi9mRTZwcE10NjlEa0VCaERvNmZaSXhNc2N5Q1d1Nk9iaE9BZ1JqVTV2THhOV3orb2MwZ25icnBsTDIxZlNMaTZrZXZGUWZCVEFDRGlZc1NtdGlRWVRHZU45cXpQR01mOGxHdUtWRVZESGNqdXQ2L0xNb3A2UU5lelcvOEdxQXBHOHR4UnhVbTI1azFoaXNzUXJOejA4ejJwUHNKWVNjbTNOUkQ1dk55TkRtd2kxaldlLzBwT3d6Z0V4eVFka09hbTlrcWg3R0E2dW5oQjNpQ2pYUVQ4TE9TS0hZUS9Cc2tPcjU0RUlhZ0VYUytQNERtWUlJVE8✔ 
Enter API Token: xxxxxNlc3NLZXlJZCI6IkFTSUEzSklFNUZPTk1RM0ZENzdWIiwic2VjcmV0QWNjZXNzS2V5IjoiNlViUUdVOTkyTXNQeHpncVhaMHlybnF4OG1YRTE5RkxnSlZzMEZyRSIsInNlc3Npb25Ub2tlbiI6IklRb0piM0pwWjJsdVgyVmpFT2ovLy8vLy8vLy8vd0VhQ1hWekxXVmhjM1F0TVNKSE1FVUNJUUMrWEx6VlhpUmgyMk8vcjNsR3YvOVBqN3lXOFpkZnJubU5JL0d6ZUtMN0FBSWdPdnRWbkFKWjd5TDN6WTBJT0pUa0d3MnRQYWNab2xXM1ZZYlFVT2p2RDZncS9nTUlNUkFBR2d3M056VTNPRGczTmpneE5UUWlETzVwRkhLNUpsaU91T29DS2lyYkE1VG13TmVhYnRQaHFIcnpKbW1yd1MwOWhlNWx5TXJlbmlHb1V1NVBnZUdad3R3RFdzUG5uVXZOOGFHbGQ5OFZYbFJEWVZwcTBKL0oranpycGNUWVhZQjBxb3R4K2ZGYU9wTFRnL0RMMHYrZFVFTTk0NkFhQ2NzdjR6YnlsWWQvTDUxxTV4UytKK0JKUnVnRi9aNUg2bEk5dEM0OXdhZXZGaCtPTXRCYWljWkY2K2pPa1lhV3VLSDlpY3ZLWnEraHd1Z0FGc2V3MkxPTnA3TE5IMnZMQ05XQS9RQUZsMS9rOWJ2Y3RheWtlS0d3TUdqREZ5VlhPcVlwRW10dVJLKzZDM2Z4L3k4THhUM0Fnc2ZMeW1ER1ZjZzZuemdSTlBQWSthOXJhU2FWUUUwcDRsODlPUXNFZTlrSnBPWEFvcEM4M1QyK1RwN28xZE5FQWQyZ2ZMZGxTNkJnRXZ0WWllTCtqRGI0ck43V0xtUkgvLzZFSzl6RURqelpzM3Y5bTdhd0pQU0J4UG9vNUFNeFF5UmRvRWpCemJCTytteExyOTRDcDdLa1VSMGh0QUxVVDFRWVl1eTROSmRSbGtYeXRqTjh0MTZlR1RqZEorNVA4QjZVdGFhYnhtOU11dFBlM0RFa255bWE1cFRPL083ZmF6WlRwZVNUUVM0UU4vOHQzVHZZZEpwK1Y2QTJZbkNCdEZZcW1JNUNEMFFEREVhT1h2eWFRMzJTL0hleUE5N05GWGxUY05LTythVjNEUkxwUTlWdDdraGgvaEo4SExlcmJ1bjlhNTF6R0VGaUwrUHU3MVpZa2RrM3NUVTBZYjZ3bitiKytzRXJRd3dtdUhvd3pJMmE3d1U2eXdLa2J5UUFNYldMSkxxTG9EUk02ZUxWY2w1Z3ZkV1hsUm9SeXl5TlJvK0J2cTVSSHFaUTlpVlVVa2hWMGV1dVlxNmJXcWpEZHg2clNMVzBZZ1pDLzQ3WUlodFdwT2Z0dmxXbzdEdkdVR2I3Q1grN1B3dXhOVVlPUmtSTEthd05LOFh5aERpRjVUb01WODVBMXpmdlNiRUZKTStSdEVYc2lFbmVrQi9mRTZwcE10NjlEa0VCaERvNmZaSXhNc2N5Q1d1Nk9iaE9BZ1JqVTV2THhOV3orb2MwZ25icnBsTDIxZlNMaTZrZXZGUWZCVEFDRGlZc1NtdGlRWVRHZU45cXpQR01mOGxHdUtWRVZESGNqdXQ2L0xNb3A2UU5lelcvOEdxQXBHOHR4UnhVbTI1azFoaXNzUXJOejA4ejJwUHNKWVNjbTNOUkQ1dk55TkRtd2kxaldlLzBwT3d6Z0V4eVFka09hbTlrcWg3R0E2dW5oQjNpQ2pYUVQ4TE9TS0hZUS9Cc2tPcjU0RUlhZ0VYUytQNERtWUlJVE8
Enter API Token: xxxxx2Nlc3NLZXlJZCI6IkFTSUEzSklFNUZPTk1RM0ZENzdWIiwic2VjcmV0QWNjZXNzS2V5IjoiNlViUUdVOTkyTXNQeHpncVhaMHlybnF4OG1YRTE5RkxnSlZzMEZyRSIsInNlc3Npb25Ub2tlbiI6IklRb0piM0pwWjJsdVgyVmpFT2ovLy8vLy8vLy8vd0VhQ1hWekxXVmhjM1F0TVNKSE1FVUNJUUMrWEx6VlhpUmgyMk8vcjNsR3YvOVBqN3lXOFpkZnJubU5JL0d6ZUtMN0FBSWdPdnRWbkFKWjd5TDN6WTBJT0pUa0d3MnRQYWNab2xXM1ZZYlFVT2p2RDZncS9nTUlNUkFBR2d3M056VTNPRGczTmpneE5UUWlETzVwRkhLNUpsaU91T29DS2lyYkE1VG13TmVhYnRQaHFIcnpKbW1yd1MwOWhlNWx5TXJlbmlHb1V1NVBnZUdad3R3RFdzUG5uVXZOOGFHbGQ5OFZYbFJEWVZwcTBKL0oranpycGNUWVhZQjBxb3R4K2ZGYU9wTFRnL0RMMHYrZFVFTTk0NkFhQ2NzdjR6YnlsWWQvTDUxUTV4UytKK0JKUnVnRi9aNUg2bEk5dEM0OXdhZXZGaCtPTXRCYWljxkY2K2pPa1lhV3VLSDlpY3ZLWnEraHd1Z0FGc2V3MkxPxnA3TE5IMnZMQ05XQS9RQUZsMS9rOWJ2Y3RheWtlS0d3TUdqREZ5VlhPcVlwRW10dVJLKzZDM2Z4L3k4THhUM0Fnc2ZMeW1ER1ZjZzZuemdSTlBQWSthOXJhU2FWUUUwcDRsODlPUXNFZTlrSnBPWEFvcEM4M1QyK1RwN28xZE5FQWQyZ2ZMZGxTNkJnRXZ0WWllTCtqRGI0ck43V0xtUkgvLzZFSzl6RURqelpzM3Y5bTdhd0pQU0J4UG9vNUFNeFF5UmRvRWpCemJCTytteExyOTRDcDdLa1VSMGh0QUxVVDFRWVl1eTROSmRSbGtYeXRqTjh0MTZlR1RqZEorNVA4QjZVdGFhYnhtOU11dFBlM0RFa255bWE1cFRPL083ZmF6WlRwZVNUUVM0UU4vOHQzVHZZZEpwK1Y2QTJZbkNCdEZZcW1JNUNEMFFEREVhT1h2eWFRMzJTL0hleUE5N05GWGxUY05LTythVjNEUkxwUTlWdDdraGgvaEo4SExlcmJ1bjlhNTF6R0VGaUwrUHU3MVpZa2RrM3NUVTBZYjZ3bitiKytzRXJRd3dtdUhvd3pJMmE3d1U2eXdLa2J5UUFNYldMSkxxTG9EUk02ZUxWY2w1Z3ZkV1hsUm9SeXl5TlJvK0J2cTVSSHFaUTlpVlVVa2hWMGV1dVl1NmJXcWpEZHg2clNMVzBZZ1pDLzQ3WUlodFdwT2Z0dmFXbzdEdkdVR2I3Q1grN1B3dXhOVVlPUmtSTEthd05LOFh5aERpRjVUb01WODVBMXpmdlNiRUZKTStSdEVYc2lFbmVrQi9mRTZwcE10NjlEa0VCaERvNmZaSXhNc2N5Q1d1Nk9iaE9BZ1JqVTV2THhOV3orb2MwZ25icnBsTDIxZlNMaTZrZXZGUWZCVEFDRGlZc1NtdGlRWVRHZU45cXpQR01mOGxHdUtWRVZESGNqdXQ2L0xNb3A2UU5lelcvOEdxQXBHOHR4UnhVbTI1xzFoaXNzUXJOejA4ejJwUHNKWVNjbTNOUkQ1dk55TkRtd2kxaldlLzBwT3d6Z0V4eVFka09hbTlrcWg3R0E2dW5oQjNpQ2pYUVQ4TE9TS0hZUS9Cc2tPcjU0RUlhZ0VYUytQNERtWUlJVE8rWWNYTWlEWUdiZks2UFZockpFWFBvZ1dZZlRQbjRlU2NMIiwiZXhwaXJlVGltZSI6MTU3NTM5MjA2NX0=
Enter API Token: xxxxxlc3NLZXlJZxI6IkFTSUEzSklFNUZPTk1RM0ZENzdWIiwic2VjcmV0QWNjZXNzS2V5IjoiNlViUUdVOTkyTXNQeHpncVhaMHlybnF4OG1YRTE5RkxnSlZzMEZyRSIsInNlc3Npb25Ub2tlbiI6IklRb0piM0pwWjJsdVgyVmpFT2ovLy8vLy8vLy8vd0VhQ1hWekxXVmhjM1F0TVNKSE1FVUNJUUMrWEx6VlhpUmgyMk8vcjNsR3YvOVBqN3lXOFpkZnJubU5JL0d6ZUtMN0FBSWdPdnRWbkFKWjd5TDN6WTBJT0pUa0d3MnRQYWNab2xXM1ZZYlFVT2p2RDZncS9nTUlNUkFBR2d3M056VTNPRGczTmpneE5UUWlETzxwRkhLNUpsaU91T29DS2lyYkE1VG13TmVhYnRQaHFIcnpKbW1yd1MwOWhlNWx5TXJlbmlHb1V1NVBnZUdad3R3RFdzUG5uVXZOOGFHbGQ5OFZYbFJEWVZwcTBKL0oranpycGNUWVhZQjBxb3R4K2ZGYU9wTFRnL0RMMHYrZFVFTTk0NkFhQ2NzdjR6YnlsWWQvTDUxUTV4UytKK0JKUnVnRi9aNUg2bEk5dEM0OXdhZXZGaCtPTXRCYWljxkY2K2pPa1lhV3VLSDlpY3ZLWnEraHd1Z0FGc2V3MkxPxnA3TE5IMnZMQ05XQS9RQUZsMS9rOWJ2Y3RheWtlS0d3TUdqREZ5VlhPcVlwRW10dVJLKzZDM2Z4L3k4THhUM0Fnc2ZMeW1ER1ZjZzZuemdSTlBQWSthOXJhU2FWUUUwcDRsODlPUXNFZTlrSnBPWEFvcEM4M1QyK1RwN28xZE5FQWQyZ2ZMZGxTNkJnRXZ0WWllTCtqRGI0ck43V0xtUkgvLzZFSzl6RURqelpzM3Y5bTdhd0pQU0J4UG9vNUFNeFF5UmRvRWpCemJCTytteExyOTRDcDdLa1VSMGh0QUxVVDFRWVl1eTROSmRSbGtYeXRqTjh0MTZlR1RqZEorNVA4QjZVdGFhYnhtOU11dFBlM0RFa255bWE1cFRPL083ZmF6WlRwZVNUUVM0UU4vOHQzVHZZZEpwK1Y2QTJZbkNCdEZZcW1JNUNEMFFEREVhT1h2eWFRMzJTL0hleUE5N05GWGxUY05LTythVjNEUkxwUTlWdDdraGgvaEo4SExlcmJ1bjlhNTF6R0VGaUwrUHU3MVpZa2RrM3NUVTBZYjZ3bitiKytzRXJRd3dtdUhvd3pJMmE3d1U2eXdLa2J5UUFNYldMSkxxTG9EUk02ZUxWY2w1Z3ZkV1hsUm9SeXl5TlJvK0J2cTVSSHFaUTlpVlVVa2hWMGV1dVl1NmJXcWpEZHg2clNMVzBZZ1pDLzQ3WUlodFdwT2Z0dmFXbzdEdkdVR2I3Q1grN1B3dXhOVVlPUmtSTEthd05LOFh5aERpRjVUb01WODVBMXpmdlNiRUZKTStSdEVYc2lFbmVrQi9mRTZwcE10NjlEa0VCaERvNmZaSXhNc2N5Q1d1Nk9iaE9BZ1JqVTV2THhOV3orb2MwZ25icnBsTDIxZlNMaTZrZXZGUWZCVEFDRGlZc1NtdGlRWVRHZU45cXpQR01mOGxHdUtWRVZESGNqdXQ2L0xNb3A2UU5lelcvOEdxQXBHOHR4UnhVbTI1xzFoaXNzUXJOejA4ejJwUHNKWVNjbTNOUkQ1dk55TkRtd2kxaldlLzBwT3d6Z0V4eVFka09hbTlrcWg3R0E2dW5oQjNpQ2pYUVQ4TE9TS0hZUS9Cc2tPcjU0RUlhZ0VYUytQNERtWUlJVE8rWWNYTWlEWUdiZks2UFZockpFWFBvZ1dZZlRQbjRlU2NMIiwiZXhwaXJlVGltZSI6MTU3NTM5MjA2NX0=
.
.
.

This may be an issue with github.com/manifoldco/promptui.

eschwartz commented 4 years ago

If this is really a bug in promptui, I'd recommend we scrap it.

I'd actually like to lean away from dependencies like this, where its trivial enough to implement ourselves.