From 30eca33986d870066650fc1087d6ecc99ff169fb Mon Sep 17 00:00:00 2001 From: Pranav RK Date: Wed, 11 Feb 2026 16:22:00 +0530 Subject: [PATCH 1/7] feat: add fuzzy find picker using charmbracelet --- cmd/okta-aws-cli/main.go | 2 +- cmd/root/debug/debug.go | 2 +- cmd/root/direct/direct.go | 2 +- cmd/root/m2m/m2m.go | 2 +- cmd/root/profileslist/profiles-list.go | 2 +- cmd/root/root.go | 2 +- cmd/root/root_test.go | 2 +- cmd/root/web/web.go | 2 +- go.mod | 37 +- go.sum | 85 +++-- internal/ansi/ansi.go | 2 +- internal/ansi/init.go | 2 +- internal/ansi/init_windows.go | 2 +- internal/aws/aws.go | 2 +- internal/aws/aws_test.go | 2 +- internal/backoff/backoff.go | 2 +- internal/config/config.go | 2 +- internal/config/config_test.go | 2 +- internal/config/net.go | 2 +- internal/directauth/directauth.go | 2 +- internal/exec/exec.go | 2 +- internal/flag/flag.go | 2 +- internal/logger/full.go | 2 +- internal/logger/logger.go | 2 +- internal/logger/terse.go | 2 +- internal/m2mauth/m2mauth.go | 2 +- internal/m2mauth/m2mauth_test.go | 2 +- internal/okta/accesstoken.go | 2 +- internal/okta/apierror.go | 2 +- internal/okta/application.go | 2 +- internal/okta/challenge_token.go | 2 +- internal/okta/client_assertion_claims.go | 2 +- internal/okta/device_authorization.go | 2 +- internal/okta/messages.go | 2 +- internal/okta/mfa_token.go | 2 +- internal/okta/okta.go | 2 +- internal/okta/organization.go | 2 +- internal/output/aws_credentials_file.go | 2 +- internal/output/aws_credentials_file_test.go | 2 +- internal/output/envvar.go | 2 +- internal/output/noop.go | 2 +- internal/output/output.go | 2 +- internal/output/process_credentials.go | 2 +- internal/output/process_credentials_test.go | 2 +- internal/paginator/paginator.go | 2 +- internal/picker/picker.go | 343 ++++++++++++++++++ internal/testutils/testutils.go | 2 +- internal/utils/utils.go | 2 +- .../webssoauth/multiple_fed_apps_error.go | 2 +- internal/webssoauth/webssoauth.go | 77 +--- internal/webssoauth/webssoauth_test.go | 2 +- 51 files changed, 486 insertions(+), 150 deletions(-) create mode 100644 internal/picker/picker.go diff --git a/cmd/okta-aws-cli/main.go b/cmd/okta-aws-cli/main.go index 59fe9af..c394632 100644 --- a/cmd/okta-aws-cli/main.go +++ b/cmd/okta-aws-cli/main.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/cmd/root/debug/debug.go b/cmd/root/debug/debug.go index afd8910..fb79f8e 100644 --- a/cmd/root/debug/debug.go +++ b/cmd/root/debug/debug.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/cmd/root/direct/direct.go b/cmd/root/direct/direct.go index edb7273..2d27e2b 100644 --- a/cmd/root/direct/direct.go +++ b/cmd/root/direct/direct.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/cmd/root/m2m/m2m.go b/cmd/root/m2m/m2m.go index f4f7575..026e6bb 100644 --- a/cmd/root/m2m/m2m.go +++ b/cmd/root/m2m/m2m.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/cmd/root/profileslist/profiles-list.go b/cmd/root/profileslist/profiles-list.go index d74814c..f5aa956 100644 --- a/cmd/root/profileslist/profiles-list.go +++ b/cmd/root/profileslist/profiles-list.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/cmd/root/root.go b/cmd/root/root.go index d871498..9bf5131 100644 --- a/cmd/root/root.go +++ b/cmd/root/root.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/cmd/root/root_test.go b/cmd/root/root_test.go index ac34c70..c99a7f8 100644 --- a/cmd/root/root_test.go +++ b/cmd/root/root_test.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/cmd/root/web/web.go b/cmd/root/web/web.go index acb286c..55e5b9a 100644 --- a/cmd/root/web/web.go +++ b/cmd/root/web/web.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/go.mod b/go.mod index 50bf923..52bd3c9 100644 --- a/go.mod +++ b/go.mod @@ -1,32 +1,55 @@ module github.com/okta/okta-aws-cli/v2 -go 1.21 +go 1.24.2 require ( - github.com/AlecAivazis/survey/v2 v2.3.6 github.com/BurntSushi/toml v1.4.0 github.com/aws/aws-sdk-go v1.55.5 github.com/cenkalti/backoff/v4 v4.1.3 + github.com/charmbracelet/bubbles v1.0.0 + github.com/charmbracelet/bubbletea v1.3.10 + github.com/charmbracelet/lipgloss v1.1.0 github.com/go-jose/go-jose/v4 v4.0.4 github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 github.com/google/uuid v1.1.2 github.com/logrusorgru/aurora v2.0.3+incompatible - github.com/mattn/go-isatty v0.0.16 + github.com/mattn/go-isatty v0.0.20 github.com/mdp/qrterminal v1.0.1 github.com/ompluscator/dynamic-struct v1.4.0 github.com/pkg/errors v0.9.1 + github.com/sahilm/fuzzy v0.1.1 github.com/spf13/cobra v1.5.0 github.com/spf13/viper v1.14.0 github.com/stretchr/testify v1.9.0 github.com/tidwall/pretty v1.2.0 golang.org/x/net v0.34.0 - golang.org/x/sys v0.29.0 + golang.org/x/sys v0.38.0 gopkg.in/dnaeon/go-vcr.v3 v3.1.2 gopkg.in/ini.v1 v1.67.0 gopkg.in/yaml.v2 v2.4.0 ) -require golang.org/x/crypto v0.32.0 // indirect +require ( + github.com/atotto/clipboard v0.1.4 // indirect + github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect + github.com/charmbracelet/colorprofile v0.4.1 // indirect + github.com/charmbracelet/x/ansi v0.11.6 // indirect + github.com/charmbracelet/x/cellbuf v0.0.15 // indirect + github.com/charmbracelet/x/term v0.2.2 // indirect + github.com/clipperhouse/displaywidth v0.9.0 // indirect + github.com/clipperhouse/stringish v0.1.1 // indirect + github.com/clipperhouse/uax29/v2 v2.5.0 // indirect + github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect + github.com/lucasb-eyer/go-colorful v1.3.0 // indirect + github.com/mattn/go-localereader v0.0.1 // indirect + github.com/mattn/go-runewidth v0.0.19 // indirect + github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect + github.com/muesli/cancelreader v0.2.2 // indirect + github.com/muesli/termenv v0.16.0 // indirect + github.com/rivo/uniseg v0.4.7 // indirect + github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect + golang.org/x/crypto v0.32.0 // indirect +) require ( github.com/davecgh/go-spew v1.1.1 // indirect @@ -34,10 +57,7 @@ require ( github.com/hashicorp/hcl v1.0.0 // indirect github.com/inconshreveable/mousetrap v1.0.1 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect - github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect github.com/magiconair/properties v1.8.7 // indirect - github.com/mattn/go-colorable v0.1.12 // indirect - github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.0.6 // indirect @@ -48,7 +68,6 @@ require ( github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/subosito/gotenv v1.4.2 // indirect - golang.org/x/term v0.28.0 // indirect golang.org/x/text v0.21.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect rsc.io/qr v0.2.0 // indirect diff --git a/go.sum b/go.sum index b2c8516..a843de3 100644 --- a/go.sum +++ b/go.sum @@ -36,29 +36,47 @@ cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RX cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/AlecAivazis/survey/v2 v2.3.6 h1:NvTuVHISgTHEHeBFqt6BHOe4Ny/NwGZr7w+F8S9ziyw= -github.com/AlecAivazis/survey/v2 v2.3.6/go.mod h1:4AuI9b7RjAR+G7v9+C4YSlX/YL3K3cWNXgWXOhllqvI= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0= github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2 h1:+vx7roKuyA63nhn5WAunQHLTznkw5W8b1Xc0dNjp83s= -github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2/go.mod h1:HBCaDeC1lPdgDeDbhX8XFpy1jqjK0IBG8W5K+xYqA0w= +github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4= +github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI= github.com/aws/aws-sdk-go v1.55.5 h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU= github.com/aws/aws-sdk-go v1.55.5/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= +github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= +github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/charmbracelet/bubbles v1.0.0 h1:12J8/ak/uCZEMQ6KU7pcfwceyjLlWsDLAxB5fXonfvc= +github.com/charmbracelet/bubbles v1.0.0/go.mod h1:9d/Zd5GdnauMI5ivUIVisuEm3ave1XwXtD1ckyV6r3E= +github.com/charmbracelet/bubbletea v1.3.10 h1:otUDHWMMzQSB0Pkc87rm691KZ3SWa4KUlvF9nRvCICw= +github.com/charmbracelet/bubbletea v1.3.10/go.mod h1:ORQfo0fk8U+po9VaNvnV95UPWA1BitP1E0N6xJPlHr4= +github.com/charmbracelet/colorprofile v0.4.1 h1:a1lO03qTrSIRaK8c3JRxJDZOvhvIeSco3ej+ngLk1kk= +github.com/charmbracelet/colorprofile v0.4.1/go.mod h1:U1d9Dljmdf9DLegaJ0nGZNJvoXAhayhmidOdcBwAvKk= +github.com/charmbracelet/lipgloss v1.1.0 h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY= +github.com/charmbracelet/lipgloss v1.1.0/go.mod h1:/6Q8FR2o+kj8rz4Dq0zQc3vYf7X+B0binUUBwA0aL30= +github.com/charmbracelet/x/ansi v0.11.6 h1:GhV21SiDz/45W9AnV2R61xZMRri5NlLnl6CVF7ihZW8= +github.com/charmbracelet/x/ansi v0.11.6/go.mod h1:2JNYLgQUsyqaiLovhU2Rv/pb8r6ydXKS3NIttu3VGZQ= +github.com/charmbracelet/x/cellbuf v0.0.15 h1:ur3pZy0o6z/R7EylET877CBxaiE1Sp1GMxoFPAIztPI= +github.com/charmbracelet/x/cellbuf v0.0.15/go.mod h1:J1YVbR7MUuEGIFPCaaZ96KDl5NoS0DAWkskup+mOY+Q= +github.com/charmbracelet/x/term v0.2.2 h1:xVRT/S2ZcKdhhOuSP4t5cLi5o+JxklsoEObBSgfgZRk= +github.com/charmbracelet/x/term v0.2.2/go.mod h1:kF8CY5RddLWrsgVwpw4kAa6TESp6EB5y3uxGLeCqzAI= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/clipperhouse/displaywidth v0.9.0 h1:Qb4KOhYwRiN3viMv1v/3cTBlz3AcAZX3+y9OLhMtAtA= +github.com/clipperhouse/displaywidth v0.9.0/go.mod h1:aCAAqTlh4GIVkhQnJpbL0T/WfcrJXHcj8C0yjYcjOZA= +github.com/clipperhouse/stringish v0.1.1 h1:+NSqMOr3GR6k1FdRhhnXrLfztGzuG+VuFDfatpWHKCs= +github.com/clipperhouse/stringish v0.1.1/go.mod h1:v/WhFtE1q0ovMta2+m+UbpZ+2/HEXNWYXQgCt4hdOzA= +github.com/clipperhouse/uax29/v2 v2.5.0 h1:x7T0T4eTHDONxFJsL94uKNKPHrclyFI0lm7+w94cO8U= +github.com/clipperhouse/uax29/v2 v2.5.0/go.mod h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsVRgg6W7ihQeh4g= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/creack/pty v1.1.17 h1:QeVUsEDNrLBW4tMgZHvxy18sKtr6VI492kBhUfhDJNI= -github.com/creack/pty v1.1.17/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -68,6 +86,8 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f h1:Y/CXytFA4m6baUTXGLOoWe4PQhGxaX0KpnayAqC48p4= +github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f/go.mod h1:vw97MGsxSvLiUE2X8qFplwetxpGLQrlU1Q9AUEIzCaM= github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= @@ -140,8 +160,6 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hinshun/vt10x v0.0.0-20220119200601-820417d04eec h1:qv2VnGeEQHchGaZ/u7lxST/RaJw+cv273q79D81Xbog= -github.com/hinshun/vt10x v0.0.0-20220119200601-820417d04eec/go.mod h1:Q48J4R4DvxnHolD5P8pOtXigYlRuPLGl6moFx3ulM68= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= @@ -153,8 +171,6 @@ github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGw github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= -github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= @@ -164,24 +180,30 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/logrusorgru/aurora v2.0.3+incompatible h1:tOpm7WcpBTn4fjmVfgpQq0EfczGlG91VSDkswnjF5A8= github.com/logrusorgru/aurora v2.0.3+incompatible/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= +github.com/lucasb-eyer/go-colorful v1.3.0 h1:2/yBRLdWBZKrf7gB40FoiKfAWYQ0lqNcbuQwVHXptag= +github.com/lucasb-eyer/go-colorful v1.3.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= -github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4= +github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88= +github.com/mattn/go-runewidth v0.0.19 h1:v++JhqYnZuu5jSKrk9RbgF5v4CGUjqRfBm05byFGLdw= +github.com/mattn/go-runewidth v0.0.19/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs= github.com/mdp/qrterminal v1.0.1 h1:07+fzVDlPuBlXS8tB0ktTAyf+Lp1j2+2zK3fBOL5b7c= github.com/mdp/qrterminal v1.0.1/go.mod h1:Z33WhxQe9B6CdW37HaVqcRKzP+kByF3q/qLxOGe12xQ= -github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= -github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d h1:5PJl274Y63IEHC+7izoQE9x6ikvDFZS2mDVS3drnohI= -github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 h1:ZK8zHtRHOkbHy6Mmr5D264iyp3TiX5OmNcI5cIARiQI= +github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6/go.mod h1:CJlz5H+gyd6CUWT45Oy4q24RdLyn7Md9Vj2/ldJBSIo= +github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA= +github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo= +github.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc= +github.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk= github.com/ompluscator/dynamic-struct v1.4.0 h1:I/Si9LZtItSwiTMe7vosEuIu2TKdOvWbE3R/lokpN4Q= github.com/ompluscator/dynamic-struct v1.4.0/go.mod h1:ADQ1+6Ox1D+ntuNwTHyl1NvpAqY2lBXPSPbcO4CJdeA= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= @@ -196,10 +218,14 @@ github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qR github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= +github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sahilm/fuzzy v0.1.1 h1:ceu5RHF8DGgoi+/dR5PsECjCDH1BE3Fnmpo7aVXOdRA= +github.com/sahilm/fuzzy v0.1.1/go.mod h1:VFvziUEIMCrT6A6tw2RFIXPXXmzXbOsSHF0DOI8ZK9Y= github.com/spf13/afero v1.9.4 h1:Sd43wM1IWz/s1aVXdOBkjJvuP8UdyqioeE4AmM0QsBs= github.com/spf13/afero v1.9.4/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= @@ -218,7 +244,6 @@ github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpE github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= @@ -229,6 +254,8 @@ github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8 github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no= +github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -258,6 +285,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI= +golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -335,7 +364,6 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -369,17 +397,12 @@ golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= -golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210503060354-a79de5458b56/go.mod h1:tfny5GFUkzUvx4ps4ajbZsCe5lw1metzhBm9T3x7oIY= -golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg= -golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/internal/ansi/ansi.go b/internal/ansi/ansi.go index d3b1120..cdc9e60 100644 --- a/internal/ansi/ansi.go +++ b/internal/ansi/ansi.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/ansi/init.go b/internal/ansi/init.go index f2a3fa8..36583af 100644 --- a/internal/ansi/init.go +++ b/internal/ansi/init.go @@ -2,7 +2,7 @@ // +build !windows /* - * Copyright (c) 2022-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/ansi/init_windows.go b/internal/ansi/init_windows.go index ec736c2..d451c28 100644 --- a/internal/ansi/init_windows.go +++ b/internal/ansi/init_windows.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/aws/aws.go b/internal/aws/aws.go index 1f68d10..dfed3f8 100644 --- a/internal/aws/aws.go +++ b/internal/aws/aws.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/aws/aws_test.go b/internal/aws/aws_test.go index 32c336b..45cf39d 100644 --- a/internal/aws/aws_test.go +++ b/internal/aws/aws_test.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/backoff/backoff.go b/internal/backoff/backoff.go index 1700a9f..f21e2c0 100644 --- a/internal/backoff/backoff.go +++ b/internal/backoff/backoff.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/config/config.go b/internal/config/config.go index db090af..3a9363e 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/config/config_test.go b/internal/config/config_test.go index bf331a8..7ce2e7f 100644 --- a/internal/config/config_test.go +++ b/internal/config/config_test.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/config/net.go b/internal/config/net.go index d051ce3..cbe7491 100644 --- a/internal/config/net.go +++ b/internal/config/net.go @@ -1,5 +1,5 @@ /** - * Copyright (c) 2022-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/directauth/directauth.go b/internal/directauth/directauth.go index dac492f..4e18441 100644 --- a/internal/directauth/directauth.go +++ b/internal/directauth/directauth.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/exec/exec.go b/internal/exec/exec.go index 7a51de2..3389da8 100644 --- a/internal/exec/exec.go +++ b/internal/exec/exec.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/flag/flag.go b/internal/flag/flag.go index 10a771a..13558d9 100644 --- a/internal/flag/flag.go +++ b/internal/flag/flag.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/logger/full.go b/internal/logger/full.go index d5d2b05..8f3a067 100644 --- a/internal/logger/full.go +++ b/internal/logger/full.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/logger/logger.go b/internal/logger/logger.go index 4cda76f..1f4608f 100644 --- a/internal/logger/logger.go +++ b/internal/logger/logger.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/logger/terse.go b/internal/logger/terse.go index 6e57d9a..b5a42af 100644 --- a/internal/logger/terse.go +++ b/internal/logger/terse.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/m2mauth/m2mauth.go b/internal/m2mauth/m2mauth.go index bab79a1..1417624 100644 --- a/internal/m2mauth/m2mauth.go +++ b/internal/m2mauth/m2mauth.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/m2mauth/m2mauth_test.go b/internal/m2mauth/m2mauth_test.go index f3bc3e3..934655d 100644 --- a/internal/m2mauth/m2mauth_test.go +++ b/internal/m2mauth/m2mauth_test.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/okta/accesstoken.go b/internal/okta/accesstoken.go index 5916ecc..198a08d 100644 --- a/internal/okta/accesstoken.go +++ b/internal/okta/accesstoken.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/okta/apierror.go b/internal/okta/apierror.go index cbe29f5..72ce6f1 100644 --- a/internal/okta/apierror.go +++ b/internal/okta/apierror.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/okta/application.go b/internal/okta/application.go index 37389d7..45e98ec 100644 --- a/internal/okta/application.go +++ b/internal/okta/application.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/okta/challenge_token.go b/internal/okta/challenge_token.go index b6037f7..438ef5e 100644 --- a/internal/okta/challenge_token.go +++ b/internal/okta/challenge_token.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/okta/client_assertion_claims.go b/internal/okta/client_assertion_claims.go index 75f2294..4e2b307 100644 --- a/internal/okta/client_assertion_claims.go +++ b/internal/okta/client_assertion_claims.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/okta/device_authorization.go b/internal/okta/device_authorization.go index 7f82dc5..32ebc6c 100644 --- a/internal/okta/device_authorization.go +++ b/internal/okta/device_authorization.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/okta/messages.go b/internal/okta/messages.go index 7efbd14..8ac93d5 100644 --- a/internal/okta/messages.go +++ b/internal/okta/messages.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/okta/mfa_token.go b/internal/okta/mfa_token.go index d4a1727..2c62f46 100644 --- a/internal/okta/mfa_token.go +++ b/internal/okta/mfa_token.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/okta/okta.go b/internal/okta/okta.go index 2b3a6dd..df69afb 100644 --- a/internal/okta/okta.go +++ b/internal/okta/okta.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/okta/organization.go b/internal/okta/organization.go index a08fc0b..17e4a3c 100644 --- a/internal/okta/organization.go +++ b/internal/okta/organization.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/output/aws_credentials_file.go b/internal/output/aws_credentials_file.go index dd30db5..385d804 100644 --- a/internal/output/aws_credentials_file.go +++ b/internal/output/aws_credentials_file.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/output/aws_credentials_file_test.go b/internal/output/aws_credentials_file_test.go index 2b526be..0464fc1 100644 --- a/internal/output/aws_credentials_file_test.go +++ b/internal/output/aws_credentials_file_test.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/output/envvar.go b/internal/output/envvar.go index 28ab3a0..da2b99a 100644 --- a/internal/output/envvar.go +++ b/internal/output/envvar.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/output/noop.go b/internal/output/noop.go index ca2d55c..726eea4 100644 --- a/internal/output/noop.go +++ b/internal/output/noop.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/output/output.go b/internal/output/output.go index b5665e8..e5c7221 100644 --- a/internal/output/output.go +++ b/internal/output/output.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/output/process_credentials.go b/internal/output/process_credentials.go index fa856a0..b3a2b1e 100644 --- a/internal/output/process_credentials.go +++ b/internal/output/process_credentials.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/output/process_credentials_test.go b/internal/output/process_credentials_test.go index de80d7d..1f2f93d 100644 --- a/internal/output/process_credentials_test.go +++ b/internal/output/process_credentials_test.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/paginator/paginator.go b/internal/paginator/paginator.go index 0d41aff..0f4fda3 100644 --- a/internal/paginator/paginator.go +++ b/internal/paginator/paginator.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/picker/picker.go b/internal/picker/picker.go new file mode 100644 index 0000000..38aac4c --- /dev/null +++ b/internal/picker/picker.go @@ -0,0 +1,343 @@ +/* + * Copyright (c) 2026-Present, Okta, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Package picker provides a fuzzy search picker using bubbletea +package picker + +import ( + "fmt" + "os" + "strings" + + "github.com/charmbracelet/bubbles/textinput" + tea "github.com/charmbracelet/bubbletea" + "github.com/charmbracelet/lipgloss" + "github.com/sahilm/fuzzy" +) + +var ( + titleStyle = lipgloss.NewStyle(). + Bold(true). + Foreground(lipgloss.Color("39")) + + selectedStyle = lipgloss.NewStyle(). + Foreground(lipgloss.Color("170")). + Bold(true) + + normalStyle = lipgloss.NewStyle(). + Foreground(lipgloss.Color("252")) + + matchStyle = lipgloss.NewStyle(). + Foreground(lipgloss.Color("39")). + Bold(true) + + dimStyle = lipgloss.NewStyle(). + Foreground(lipgloss.Color("241")) + + cursorStyle = lipgloss.NewStyle(). + Foreground(lipgloss.Color("170")) +) + +// Model represents the picker state +type Model struct { + title string + items []string + filtered []string + matches []fuzzy.Match + cursor int + selected string + textInput textinput.Model + quitting bool + cancelled bool + windowHeight int + maxVisible int +} + +// New creates a new picker model +func New(title string, items []string) Model { + ti := textinput.New() + ti.Placeholder = "Type to search..." + ti.Focus() + ti.CharLimit = 100 + ti.Width = 50 + ti.PromptStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("39")) + ti.TextStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("252")) + + return Model{ + title: title, + items: items, + filtered: items, + textInput: ti, + maxVisible: 15, + } +} + +// Init implements tea.Model +func (m Model) Init() tea.Cmd { + return textinput.Blink +} + +// Update implements tea.Model +func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { + var cmd tea.Cmd + + switch msg := msg.(type) { + case tea.WindowSizeMsg: + m.windowHeight = msg.Height + m.maxVisible = min(15, msg.Height-6) + if m.maxVisible < 3 { + m.maxVisible = 3 + } + + case tea.KeyMsg: + switch msg.String() { + case "ctrl+c", "esc": + m.cancelled = true + m.quitting = true + return m, tea.Quit + + case "enter": + if len(m.filtered) > 0 && m.cursor < len(m.filtered) { + m.selected = m.filtered[m.cursor] + } + m.quitting = true + return m, tea.Quit + + case "up", "ctrl+p": + if m.cursor > 0 { + m.cursor-- + } + return m, nil + + case "down", "ctrl+n": + if m.cursor < len(m.filtered)-1 { + m.cursor++ + } + return m, nil + + case "pgup": + m.cursor -= m.maxVisible + if m.cursor < 0 { + m.cursor = 0 + } + return m, nil + + case "pgdown": + m.cursor += m.maxVisible + if m.cursor >= len(m.filtered) { + m.cursor = len(m.filtered) - 1 + } + if m.cursor < 0 { + m.cursor = 0 + } + return m, nil + + case "home", "ctrl+a": + m.cursor = 0 + return m, nil + + case "end", "ctrl+e": + if len(m.filtered) > 0 { + m.cursor = len(m.filtered) - 1 + } + return m, nil + } + } + + prevValue := m.textInput.Value() + m.textInput, cmd = m.textInput.Update(msg) + + if m.textInput.Value() != prevValue { + m.filter() + m.cursor = 0 + } + + return m, cmd +} + +func (m *Model) filter() { + query := m.textInput.Value() + if query == "" { + m.filtered = m.items + m.matches = nil + return + } + + matches := fuzzy.Find(query, m.items) + m.matches = matches + m.filtered = make([]string, len(matches)) + for i, match := range matches { + m.filtered[i] = match.Str + } +} + +// View implements tea.Model +func (m Model) View() string { + if m.quitting { + return "" + } + + var b strings.Builder + + b.WriteString(titleStyle.Render("? "+m.title) + "\n\n") + b.WriteString(" " + m.textInput.View() + "\n\n") + + if len(m.filtered) == 0 { + b.WriteString(dimStyle.Render(" No matches found\n")) + } else { + start := 0 + end := len(m.filtered) + + if len(m.filtered) > m.maxVisible { + half := m.maxVisible / 2 + start = m.cursor - half + if start < 0 { + start = 0 + } + end = start + m.maxVisible + if end > len(m.filtered) { + end = len(m.filtered) + start = end - m.maxVisible + if start < 0 { + start = 0 + } + } + } + + if start > 0 { + b.WriteString(dimStyle.Render(fmt.Sprintf(" ↑ %d more above\n", start))) + } + + for i := start; i < end; i++ { + item := m.filtered[i] + cursor := " " + if i == m.cursor { + cursor = cursorStyle.Render("> ") + } + + displayItem := m.renderItem(i, item) + b.WriteString(cursor + displayItem + "\n") + } + + if end < len(m.filtered) { + b.WriteString(dimStyle.Render(fmt.Sprintf(" ↓ %d more below\n", len(m.filtered)-end))) + } + } + + b.WriteString("\n") + b.WriteString(dimStyle.Render(fmt.Sprintf(" %d/%d", len(m.filtered), len(m.items)))) + b.WriteString(dimStyle.Render(" • ↑/↓ navigate • enter select • esc cancel")) + + return b.String() +} + +func (m Model) renderItem(index int, item string) string { + isSelected := index == m.cursor + hasQuery := m.textInput.Value() != "" + + if isSelected { + if hasQuery && index < len(m.matches) { + return m.highlightMatchesSelected(m.matches[index]) + } + return selectedStyle.Render(item) + } + + if hasQuery && index < len(m.matches) { + return m.highlightMatches(m.matches[index]) + } + return normalStyle.Render(item) +} + +func (m Model) highlightMatches(match fuzzy.Match) string { + var result strings.Builder + matchSet := make(map[int]bool) + for _, idx := range match.MatchedIndexes { + matchSet[idx] = true + } + + for i, char := range match.Str { + if matchSet[i] { + result.WriteString(matchStyle.Render(string(char))) + } else { + result.WriteString(normalStyle.Render(string(char))) + } + } + return result.String() +} + +func (m Model) highlightMatchesSelected(match fuzzy.Match) string { + var result strings.Builder + matchSet := make(map[int]bool) + for _, idx := range match.MatchedIndexes { + matchSet[idx] = true + } + + for i, char := range match.Str { + if matchSet[i] { + result.WriteString(matchStyle.Render(string(char))) + } else { + result.WriteString(selectedStyle.Render(string(char))) + } + } + return result.String() +} + +// Selected returns the selected item +func (m Model) Selected() string { + return m.selected +} + +// Cancelled returns true if the user cancelled +func (m Model) Cancelled() bool { + return m.cancelled +} + +// Pick runs the picker and returns the selected item +func Pick(title string, items []string) (string, error) { + if len(items) == 0 { + return "", fmt.Errorf("no items to select from") + } + + if len(items) == 1 { + return items[0], nil + } + + m := New(title, items) + p := tea.NewProgram(m, tea.WithOutput(os.Stderr)) + + finalModel, err := p.Run() + if err != nil { + return "", fmt.Errorf("error running picker: %w", err) + } + + result := finalModel.(Model) + if result.Cancelled() { + return "", fmt.Errorf("selection cancelled") + } + + if result.Selected() == "" { + return "", fmt.Errorf("no item selected") + } + + return result.Selected(), nil +} + +func min(a, b int) int { + if a < b { + return a + } + return b +} diff --git a/internal/testutils/testutils.go b/internal/testutils/testutils.go index 813faed..24b67ad 100644 --- a/internal/testutils/testutils.go +++ b/internal/testutils/testutils.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/utils/utils.go b/internal/utils/utils.go index 2d2bd0b..199b489 100644 --- a/internal/utils/utils.go +++ b/internal/utils/utils.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/webssoauth/multiple_fed_apps_error.go b/internal/webssoauth/multiple_fed_apps_error.go index 6897dcf..0f7bc0c 100644 --- a/internal/webssoauth/multiple_fed_apps_error.go +++ b/internal/webssoauth/multiple_fed_apps_error.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/webssoauth/webssoauth.go b/internal/webssoauth/webssoauth.go index 39c5af0..d225582 100644 --- a/internal/webssoauth/webssoauth.go +++ b/internal/webssoauth/webssoauth.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -33,15 +33,13 @@ import ( "sync" "time" - "github.com/AlecAivazis/survey/v2" - "github.com/AlecAivazis/survey/v2/core" - "github.com/AlecAivazis/survey/v2/terminal" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/credentials" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/iam" "github.com/aws/aws-sdk-go/service/sts" "github.com/cenkalti/backoff/v4" + "github.com/charmbracelet/lipgloss" "github.com/google/shlex" "github.com/mdp/qrterminal" brwsr "github.com/pkg/browser" @@ -54,9 +52,15 @@ import ( "github.com/okta/okta-aws-cli/v2/internal/okta" "github.com/okta/okta-aws-cli/v2/internal/output" "github.com/okta/okta-aws-cli/v2/internal/paginator" + "github.com/okta/okta-aws-cli/v2/internal/picker" "github.com/okta/okta-aws-cli/v2/internal/utils" ) +var ( + labelStyle = lipgloss.NewStyle().Bold(true) + valueStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("39")) +) + const ( amazonAWS = "amazon_aws" nameKey = "name" @@ -70,19 +74,10 @@ const ( noRolesError = "no roles chosen for provider %q" chooseIDP = "Choose an IdP:" chooseRole = "Choose a Role:" - idpSelectedTemplate = ` {{color "default+hb"}}IdP: {{color "reset"}}{{color "cyan"}}{{ .IDP }}{{color "reset"}}` - roleSelectedTemplate = ` {{color "default+hb"}}Role: {{color "reset"}}{{color "cyan"}}{{ .Role }}{{color "reset"}}` arnLabelPrintFmt = " %q: %q\n" arnPrintFmt = " %q\n" ) -type idpTemplateData struct { - IDP string -} -type roleTemplateData struct { - Role string -} - // WebSSOAuthentication Encapsulates the work of getting temporary IAM // credentials through Okta's Web SSO authentication with an Okta AWS Federation // Application. @@ -106,15 +101,6 @@ type idpAndRole struct { region string } -var stderrIsOutAskOpt = func(options *survey.AskOptions) error { - options.Stdio = terminal.Stdio{ - In: os.Stdin, - Out: os.Stderr, - Err: os.Stderr, - } - return nil -} - // NewWebSSOAuthentication New Web SSO Authentication constructor func NewWebSSOAuthentication(cfg *config.Config) (token *WebSSOAuthentication, err error) { token = &WebSSOAuthentication{ @@ -264,14 +250,7 @@ func (w *WebSSOAuthentication) selectFedApp(apps []*okta.Application) (string, e if app.Settings.App.IdentityProviderARN != "" && idpARN == app.Settings.App.IdentityProviderARN { if !w.config.IsProcessCredentialsFormat() { - idpData := idpTemplateData{ - IDP: choiceLabel, - } - rich, _, err := core.RunTemplate(idpSelectedTemplate, idpData) - if err != nil { - return "", err - } - w.config.Logger.Warn(rich + "\n") + w.config.Logger.Warn(fmt.Sprintf(" %s %s\n", labelStyle.Render("IdP:"), valueStyle.Render(choiceLabel))) } return app.ID, nil @@ -281,11 +260,7 @@ func (w *WebSSOAuthentication) selectFedApp(apps []*okta.Application) (string, e idps[choiceLabel] = app } - prompt := &survey.Select{ - Message: chooseIDP, - Options: choices, - } - err = survey.AskOne(prompt, &selected, survey.WithValidator(survey.Required), stderrIsOutAskOpt) + selected, err = picker.Pick(chooseIDP, choices) if err != nil { return "", fmt.Errorf(askIDPError, err) } @@ -467,9 +442,6 @@ func (w *WebSSOAuthentication) promptForRole(idp string, roleARNs []string) (rol roleARN = roleARNs[0] } roleLabel := w.choiceFriendlyLabelRole(roleARN, configRoles) - roleData := roleTemplateData{ - Role: roleLabel, - } // reverse case when friendly role name alias is given as the input value // --aws-iam-role "OK S3 Read" @@ -483,11 +455,7 @@ func (w *WebSSOAuthentication) promptForRole(idp string, roleARNs []string) (rol } if !w.config.IsProcessCredentialsFormat() { - rich, _, err := core.RunTemplate(roleSelectedTemplate, roleData) - if err != nil { - return "", err - } - w.config.Logger.Warn(rich + "\n") + w.config.Logger.Warn(fmt.Sprintf(" %s %s\n", labelStyle.Render("Role:"), valueStyle.Render(roleLabel))) } return roleARN, nil } @@ -500,12 +468,7 @@ func (w *WebSSOAuthentication) promptForRole(idp string, roleARNs []string) (rol labelsARNs[roleLabel] = arn } - prompt := &survey.Select{ - Message: chooseRole, - Options: promptRoles, - } - var selected string - err = survey.AskOne(prompt, &selected, survey.WithValidator(survey.Required), stderrIsOutAskOpt) + selected, err := picker.Pick(chooseRole, promptRoles) if err != nil { return "", fmt.Errorf(askRoleError, err) } @@ -541,14 +504,7 @@ func (w *WebSSOAuthentication) promptForIDP(idpARNs []string) (idpARN string, er } idpLabel := w.choiceFriendlyLabelIDP(idpARN, idpARN, configIDPs) - idpData := idpTemplateData{ - IDP: idpLabel, - } - rich, _, err := core.RunTemplate(idpSelectedTemplate, idpData) - if err != nil { - return "", err - } - w.config.Logger.Warn(rich + "\n") + w.config.Logger.Warn(fmt.Sprintf(" %s %s\n", labelStyle.Render("IdP:"), valueStyle.Render(idpLabel))) return idpARN, nil } @@ -560,12 +516,7 @@ func (w *WebSSOAuthentication) promptForIDP(idpARNs []string) (idpARN string, er idpChoiceLabels[i] = idpLabel } - var idpChoice string - prompt := &survey.Select{ - Message: chooseIDP, - Options: idpChoiceLabels, - } - err = survey.AskOne(prompt, &idpChoice, survey.WithValidator(survey.Required), stderrIsOutAskOpt) + idpChoice, err := picker.Pick(chooseIDP, idpChoiceLabels) if err != nil { return idpARN, fmt.Errorf(askIDPError, err) } diff --git a/internal/webssoauth/webssoauth_test.go b/internal/webssoauth/webssoauth_test.go index b302ce4..de8796e 100644 --- a/internal/webssoauth/webssoauth_test.go +++ b/internal/webssoauth/webssoauth_test.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022-Present, Okta, Inc. + * Copyright (c) 2026-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. From d6a9e17f5a9af4fb2a4a3637bc00e7a02c87aa69 Mon Sep 17 00:00:00 2001 From: Pranav RK Date: Thu, 12 Feb 2026 10:21:14 +0530 Subject: [PATCH 2/7] feat: fix tests and update github workflows --- .github/workflows/ci.yml | 2 +- .github/workflows/release.yml | 2 +- internal/m2mauth/m2mauth_test.go | 36 ++++++++++++++----- .../vcr/TestChoiceFriendlyLabelIDP.yaml | 3 ++ .../vcr/TestChoiceFriendlyLabelRole.yaml | 3 ++ 5 files changed, 35 insertions(+), 11 deletions(-) create mode 100644 test/fixtures/vcr/TestChoiceFriendlyLabelIDP.yaml create mode 100644 test/fixtures/vcr/TestChoiceFriendlyLabelRole.yaml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 67f1a0c..8e9f100 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,7 +14,7 @@ jobs: - name: Setup Go uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 with: - go-version: 1.21 + go-version-file: "go.mod" - name: Setup Go Tools run: make tools diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9f2cb37..15d78de 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,7 +16,7 @@ jobs: - name: Set up Go uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 #v3.5.0 with: - go-version: 1.21 + go-version-file: "go.mod" - name: Import GPG key id: import_gpg diff --git a/internal/m2mauth/m2mauth_test.go b/internal/m2mauth/m2mauth_test.go index 934655d..8c19ec3 100644 --- a/internal/m2mauth/m2mauth_test.go +++ b/internal/m2mauth/m2mauth_test.go @@ -44,17 +44,35 @@ func TestMain(m *testing.M) { // NOTE: Okta Security this is just some random PK to unit test the client // assertion generator in this app. PK was created with - // `openssl genrsa 512 | pbcopy` + // `openssl genrsa 2048 | openssl pkcs8 -topk8 -nocrypt` reset = testutils.OsSetEnvIfBlank("OKTA_AWSCLI_PRIVATE_KEY", ` -----BEGIN PRIVATE KEY----- -MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAzAZ73GY6TbcC0cQS -LQ+GfIkZxeTJjkW8+pdg0zmcGs4ZByZqp7oP02TbZ0UyLFHe8Eqik5rXR98mts5e -TuG2BwIDAQABAkEAmG2jrjdGCffYCGYnejjmLjaz5bCXkU6y8LmWIlkhMrg/F7uH -/yjmN3Hcj06F4b2DRczIIxWHpZVeFaqxvitZ6QIhAPlxhYIIpx4h+mf7cPXOlCZc -QDRqIa+pp3JH3Pgrz8mzAiEA0WNZP8acq251xTl2i+OrstH0o3YeYUmASv8bmyNs -0F0CIALSAsVunZ0cmz0zvZo55LjuUBeHn6vhyi/jmh8AN9A7AiEAoNtM1iTTeROb -4A7cFm2qGu8WnHkCr8SSjYrb/1vAnXUCIFgT6wGO6AFjQAahQlpVnqpppP9F8eSd -qrebTIkNMM8u +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDb6SvsSfrP69gO +yDpdXsZsT3ydS/ggCYFV8NhbHx6VtJeoLuQp+TCJ0pc4sC0ZvnBk5r6oAubLLDgK +zqDsf8rIzg91mZPH2KfQs0bM02q+2naLkHYIVXjCFMh3ibXGWuNH/cItm9CLHJz0 +11K4LmsXUJdre4suSGDmUKOYgJqpcYHaWeEGNWcnMb7UGC+lcaXpwnkbp5ziBP6P +PC/OH9S/HVDpiuJioex/zLLeCF/jnjHnbIa5EY1I5eWDttDgCxBRe+0p8XOtI6KJ +wIUkhank99DoVp+KIcCxFW6WfQCac9/oT5I8I+j0lOtBAfQo+d2uVQd2xX80vsdM +D2zvgyUHAgMBAAECggEAP4iQDgYZljR3CV5DrnIRNX2JbRBjsS3N1fxtJXZKKcow +/n/9nzrFESxsUA5mGUfxxNT9RCECeLRfxI+J4onRFk6iHMGv9k7bvOnujIKQFm+b +TBsCXsoCx1+lwxNgFtxvSX9AuFiJ2Yb8uafz2A5hFi1McdsRjN+QTzoA6bBN/qGp +PO5PiVnfY9B9C/XAy2fWJ8JF0xZ8yBpJo9RNet241Ee0tiWwuHNpwntMT7C+K8f5 +cv5ccE+mA81ZwOrhbaIRct3HaFhV8l1j5usbvmZXlzHgOXzDfdLx/scADBbDwjmo +djxrUBvLX1gwY6xRKXwgOv4ReZZcYV6Fvk5tTmgE8QKBgQD38fwyXZn24f4gb4X3 +WXf5WUuVlQx5cMMP5WQUgSPeUKuau2g0OR9ypy3KIG4qZj0sKFEP/aD8tbKfcDEg +I+dK87nfUvvU3I+3TCgy16D8Ir7mmZimcUJ380d62I7YZSWTTRTjvrTb5S4MakoO +s++N8sty/XM3whZe1Ls0XAraRQKBgQDjDgpjg/J5d/W1pG6Ru9YsvtyK64wGLP2o +DpnQFUNNO+WR+VGBDitKvdzSsEinfSI3Reklydn+jzTt5BVNUvughfqX/fTb+QN1 +7meHr8FPEPlLgKyLkmq9E6yZWuvOeMgjV7/P4Pwh66+rU7GVm14P7VEA1UOYmjvu +LJWjnw182wKBgQDOjGyefHEdRIhR9vWv531VYDjiBEdfBzvICz1DA42gzq0V+lbF +Ymy7M1+myTtc4MzG81MMMiohOy/xOCIEd0RfoQfPba7SVWb3uF6odA7s2/kR2xRa +W3GWwThjsvHUfPY/bnAfhSffI10oBIdrFiRSqNcpFNAdu/asyySkaqSzzQKBgFhS +PN5LFEYF0NFwfgY4b+6F69oqGBTK6Xy2+UQFEWH4u6tVtUujTFnNkxlts0VbmrSv +gCrP4vlvkWI8R8EFV5Ywp7L5+YabzanRK/qO9n4gFyk0i2nbcaPNBGW/BV0ShJ+i +4Z0mYk17laDqdHjCsAs4ADt3ucyhqlBSjX7RPvjjAoGAHoR+FJglKaY2U82VV5pK +sa8YdiJHAaJyd3olYNzq2QuxQOWN4d+BitVWPmM+IQkaBigESxTIam+n5/qHiVyV +XNY+9eUj7XwoMVz03BISN8TEmDlRyyQYHffRUF69wDLlSY1PG4k/9uED50YsQZAm +oO62j9Objbi/ntr/BSQIpYE= -----END PRIVATE KEY-----`) defer reset() diff --git a/test/fixtures/vcr/TestChoiceFriendlyLabelIDP.yaml b/test/fixtures/vcr/TestChoiceFriendlyLabelIDP.yaml new file mode 100644 index 0000000..2797c38 --- /dev/null +++ b/test/fixtures/vcr/TestChoiceFriendlyLabelIDP.yaml @@ -0,0 +1,3 @@ +--- +version: 2 +interactions: [] diff --git a/test/fixtures/vcr/TestChoiceFriendlyLabelRole.yaml b/test/fixtures/vcr/TestChoiceFriendlyLabelRole.yaml new file mode 100644 index 0000000..2797c38 --- /dev/null +++ b/test/fixtures/vcr/TestChoiceFriendlyLabelRole.yaml @@ -0,0 +1,3 @@ +--- +version: 2 +interactions: [] From 9a5c31ef5c3b9537de5655c100cb5a1d6d81a4af Mon Sep 17 00:00:00 2001 From: Pranav RK Date: Thu, 12 Feb 2026 10:30:45 +0530 Subject: [PATCH 3/7] chore: pin versions of workflow actions --- .github/workflows/chocolatey.yml | 12 +- cmd/okta-aws-cli/main.go | 2 +- cmd/root/debug/debug.go | 2 +- cmd/root/direct/direct.go | 2 +- cmd/root/m2m/m2m.go | 2 +- cmd/root/profileslist/profiles-list.go | 2 +- cmd/root/root.go | 2 +- cmd/root/root_test.go | 2 +- cmd/root/web/web.go | 2 +- go.mod | 8 +- go.sum | 16 +-- internal/ansi/ansi.go | 2 +- internal/ansi/init.go | 2 +- internal/ansi/init_windows.go | 2 +- internal/aws/aws.go | 2 +- internal/aws/aws_test.go | 2 +- internal/backoff/backoff.go | 2 +- internal/config/config.go | 2 +- internal/config/config_test.go | 2 +- internal/config/net.go | 2 +- internal/directauth/directauth.go | 2 +- internal/exec/exec.go | 2 +- internal/flag/flag.go | 2 +- internal/logger/full.go | 2 +- internal/logger/logger.go | 2 +- internal/logger/terse.go | 2 +- internal/m2mauth/m2mauth.go | 2 +- internal/m2mauth/m2mauth_test.go | 2 +- internal/okta/accesstoken.go | 2 +- internal/okta/apierror.go | 2 +- internal/okta/application.go | 2 +- internal/okta/challenge_token.go | 2 +- internal/okta/client_assertion_claims.go | 2 +- internal/okta/device_authorization.go | 2 +- internal/okta/messages.go | 2 +- internal/okta/mfa_token.go | 2 +- internal/okta/okta.go | 2 +- internal/okta/organization.go | 2 +- internal/output/aws_credentials_file.go | 2 +- internal/output/aws_credentials_file_test.go | 2 +- internal/output/envvar.go | 2 +- internal/output/noop.go | 2 +- internal/output/output.go | 2 +- internal/output/process_credentials.go | 2 +- internal/output/process_credentials_test.go | 2 +- internal/paginator/paginator.go | 2 +- internal/picker/picker.go | 129 +++++++++++------- internal/testutils/testutils.go | 2 +- internal/utils/utils.go | 2 +- .../webssoauth/multiple_fed_apps_error.go | 2 +- internal/webssoauth/webssoauth.go | 2 +- internal/webssoauth/webssoauth_test.go | 2 +- 52 files changed, 146 insertions(+), 115 deletions(-) diff --git a/.github/workflows/chocolatey.yml b/.github/workflows/chocolatey.yml index 90a06ab..c184688 100644 --- a/.github/workflows/chocolatey.yml +++ b/.github/workflows/chocolatey.yml @@ -23,13 +23,13 @@ jobs: if: ${{ github.event_name == 'workflow_dispatch' || (github.event.workflow_run.conclusion == 'success' && startsWith(github.event.workflow_run.head_branch, 'v')) }} steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Unshallow run: git fetch --prune --unshallow - name: Get latest release tag - uses: oprypin/find-latest-tag@v1 + uses: oprypin/find-latest-tag@dd2729fe78b0bb55523ae2b2a310c6773a652bd1 # v1.1.2 with: repository: ${{ github.repository }} releases-only: true @@ -60,21 +60,21 @@ jobs: ls -la nuspec/chocolatey/tools/ - name: Choco Downgrade - uses: crazy-max/ghaction-chocolatey@v3 + uses: crazy-max/ghaction-chocolatey@2526f467ccbd337d307fe179959cabbeca0bc8c0 # v3.4.0 with: args: install chocolatey --version=1.2.1 --allow-downgrade -y -r --no-progress - name: Pack Release - uses: crazy-max/ghaction-chocolatey@v3 + uses: crazy-max/ghaction-chocolatey@2526f467ccbd337d307fe179959cabbeca0bc8c0 # v3.4.0 with: args: pack nuspec/chocolatey/okta-aws-cli.nuspec --outputdirectory nuspec/chocolatey - name: Choco Upgrade - uses: crazy-max/ghaction-chocolatey@v3 + uses: crazy-max/ghaction-chocolatey@2526f467ccbd337d307fe179959cabbeca0bc8c0 # v3.4.0 with: args: upgrade chocolatey - name: Upload Release - uses: crazy-max/ghaction-chocolatey@v3 + uses: crazy-max/ghaction-chocolatey@2526f467ccbd337d307fe179959cabbeca0bc8c0 # v3.4.0 with: args: push nuspec/chocolatey/okta-aws-cli.${{ steps.version.outputs.nuget }}.nupkg -s https://push.chocolatey.org/ -k ${{ secrets.CHOCO_API_KEY }} diff --git a/cmd/okta-aws-cli/main.go b/cmd/okta-aws-cli/main.go index c394632..59fe9af 100644 --- a/cmd/okta-aws-cli/main.go +++ b/cmd/okta-aws-cli/main.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2022-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/cmd/root/debug/debug.go b/cmd/root/debug/debug.go index fb79f8e..afd8910 100644 --- a/cmd/root/debug/debug.go +++ b/cmd/root/debug/debug.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2023-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/cmd/root/direct/direct.go b/cmd/root/direct/direct.go index 2d27e2b..edb7273 100644 --- a/cmd/root/direct/direct.go +++ b/cmd/root/direct/direct.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2023-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/cmd/root/m2m/m2m.go b/cmd/root/m2m/m2m.go index 026e6bb..f4f7575 100644 --- a/cmd/root/m2m/m2m.go +++ b/cmd/root/m2m/m2m.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2023-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/cmd/root/profileslist/profiles-list.go b/cmd/root/profileslist/profiles-list.go index f5aa956..d74814c 100644 --- a/cmd/root/profileslist/profiles-list.go +++ b/cmd/root/profileslist/profiles-list.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2023-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/cmd/root/root.go b/cmd/root/root.go index 9bf5131..d871498 100644 --- a/cmd/root/root.go +++ b/cmd/root/root.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2022-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/cmd/root/root_test.go b/cmd/root/root_test.go index c99a7f8..ac34c70 100644 --- a/cmd/root/root_test.go +++ b/cmd/root/root_test.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2022-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/cmd/root/web/web.go b/cmd/root/web/web.go index 55e5b9a..acb286c 100644 --- a/cmd/root/web/web.go +++ b/cmd/root/web/web.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2023-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/go.mod b/go.mod index 52bd3c9..eb89ec0 100644 --- a/go.mod +++ b/go.mod @@ -22,8 +22,8 @@ require ( github.com/spf13/viper v1.14.0 github.com/stretchr/testify v1.9.0 github.com/tidwall/pretty v1.2.0 - golang.org/x/net v0.34.0 - golang.org/x/sys v0.38.0 + golang.org/x/net v0.49.0 + golang.org/x/sys v0.41.0 gopkg.in/dnaeon/go-vcr.v3 v3.1.2 gopkg.in/ini.v1 v1.67.0 gopkg.in/yaml.v2 v2.4.0 @@ -48,7 +48,7 @@ require ( github.com/muesli/termenv v0.16.0 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect - golang.org/x/crypto v0.32.0 // indirect + golang.org/x/crypto v0.48.0 // indirect ) require ( @@ -68,7 +68,7 @@ require ( github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/subosito/gotenv v1.4.2 // indirect - golang.org/x/text v0.21.0 // indirect + golang.org/x/text v0.34.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect rsc.io/qr v0.2.0 // indirect ) diff --git a/go.sum b/go.sum index a843de3..dd11380 100644 --- a/go.sum +++ b/go.sum @@ -273,8 +273,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= -golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= +golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -341,8 +341,8 @@ golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= +golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -400,8 +400,8 @@ golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= -golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= +golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -409,8 +409,8 @@ golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3 golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= +golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= diff --git a/internal/ansi/ansi.go b/internal/ansi/ansi.go index cdc9e60..d3b1120 100644 --- a/internal/ansi/ansi.go +++ b/internal/ansi/ansi.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2022-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/ansi/init.go b/internal/ansi/init.go index 36583af..f2a3fa8 100644 --- a/internal/ansi/init.go +++ b/internal/ansi/init.go @@ -2,7 +2,7 @@ // +build !windows /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2022-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/ansi/init_windows.go b/internal/ansi/init_windows.go index d451c28..ec736c2 100644 --- a/internal/ansi/init_windows.go +++ b/internal/ansi/init_windows.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2022-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/aws/aws.go b/internal/aws/aws.go index dfed3f8..1f68d10 100644 --- a/internal/aws/aws.go +++ b/internal/aws/aws.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2022-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/aws/aws_test.go b/internal/aws/aws_test.go index 45cf39d..32c336b 100644 --- a/internal/aws/aws_test.go +++ b/internal/aws/aws_test.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2023-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/backoff/backoff.go b/internal/backoff/backoff.go index f21e2c0..1700a9f 100644 --- a/internal/backoff/backoff.go +++ b/internal/backoff/backoff.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2022-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/config/config.go b/internal/config/config.go index 3a9363e..db090af 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2022-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/config/config_test.go b/internal/config/config_test.go index 7ce2e7f..bf331a8 100644 --- a/internal/config/config_test.go +++ b/internal/config/config_test.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2022-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/config/net.go b/internal/config/net.go index cbe7491..d051ce3 100644 --- a/internal/config/net.go +++ b/internal/config/net.go @@ -1,5 +1,5 @@ /** - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2022-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/directauth/directauth.go b/internal/directauth/directauth.go index 4e18441..dac492f 100644 --- a/internal/directauth/directauth.go +++ b/internal/directauth/directauth.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2025-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/exec/exec.go b/internal/exec/exec.go index 3389da8..7a51de2 100644 --- a/internal/exec/exec.go +++ b/internal/exec/exec.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2023-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/flag/flag.go b/internal/flag/flag.go index 13558d9..10a771a 100644 --- a/internal/flag/flag.go +++ b/internal/flag/flag.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2022-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/logger/full.go b/internal/logger/full.go index 8f3a067..d5d2b05 100644 --- a/internal/logger/full.go +++ b/internal/logger/full.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2025-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/logger/logger.go b/internal/logger/logger.go index 1f4608f..4cda76f 100644 --- a/internal/logger/logger.go +++ b/internal/logger/logger.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2025-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/logger/terse.go b/internal/logger/terse.go index b5a42af..6e57d9a 100644 --- a/internal/logger/terse.go +++ b/internal/logger/terse.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2025-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/m2mauth/m2mauth.go b/internal/m2mauth/m2mauth.go index 1417624..bab79a1 100644 --- a/internal/m2mauth/m2mauth.go +++ b/internal/m2mauth/m2mauth.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2023-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/m2mauth/m2mauth_test.go b/internal/m2mauth/m2mauth_test.go index 8c19ec3..c43a915 100644 --- a/internal/m2mauth/m2mauth_test.go +++ b/internal/m2mauth/m2mauth_test.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2023-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/okta/accesstoken.go b/internal/okta/accesstoken.go index 198a08d..5916ecc 100644 --- a/internal/okta/accesstoken.go +++ b/internal/okta/accesstoken.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2023-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/okta/apierror.go b/internal/okta/apierror.go index 72ce6f1..cbe29f5 100644 --- a/internal/okta/apierror.go +++ b/internal/okta/apierror.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2023-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/okta/application.go b/internal/okta/application.go index 45e98ec..37389d7 100644 --- a/internal/okta/application.go +++ b/internal/okta/application.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2023-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/okta/challenge_token.go b/internal/okta/challenge_token.go index 438ef5e..b6037f7 100644 --- a/internal/okta/challenge_token.go +++ b/internal/okta/challenge_token.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2025-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/okta/client_assertion_claims.go b/internal/okta/client_assertion_claims.go index 4e2b307..75f2294 100644 --- a/internal/okta/client_assertion_claims.go +++ b/internal/okta/client_assertion_claims.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2023-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/okta/device_authorization.go b/internal/okta/device_authorization.go index 32ebc6c..7f82dc5 100644 --- a/internal/okta/device_authorization.go +++ b/internal/okta/device_authorization.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2023-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/okta/messages.go b/internal/okta/messages.go index 8ac93d5..7efbd14 100644 --- a/internal/okta/messages.go +++ b/internal/okta/messages.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2023-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/okta/mfa_token.go b/internal/okta/mfa_token.go index 2c62f46..d4a1727 100644 --- a/internal/okta/mfa_token.go +++ b/internal/okta/mfa_token.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2025-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/okta/okta.go b/internal/okta/okta.go index df69afb..2b3a6dd 100644 --- a/internal/okta/okta.go +++ b/internal/okta/okta.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2023-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/okta/organization.go b/internal/okta/organization.go index 17e4a3c..a08fc0b 100644 --- a/internal/okta/organization.go +++ b/internal/okta/organization.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2023-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/output/aws_credentials_file.go b/internal/output/aws_credentials_file.go index 385d804..dd30db5 100644 --- a/internal/output/aws_credentials_file.go +++ b/internal/output/aws_credentials_file.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2022-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/output/aws_credentials_file_test.go b/internal/output/aws_credentials_file_test.go index 0464fc1..2b526be 100644 --- a/internal/output/aws_credentials_file_test.go +++ b/internal/output/aws_credentials_file_test.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2022-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/output/envvar.go b/internal/output/envvar.go index da2b99a..28ab3a0 100644 --- a/internal/output/envvar.go +++ b/internal/output/envvar.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2022-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/output/noop.go b/internal/output/noop.go index 726eea4..ca2d55c 100644 --- a/internal/output/noop.go +++ b/internal/output/noop.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2023-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/output/output.go b/internal/output/output.go index e5c7221..b5665e8 100644 --- a/internal/output/output.go +++ b/internal/output/output.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2022-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/output/process_credentials.go b/internal/output/process_credentials.go index b3a2b1e..fa856a0 100644 --- a/internal/output/process_credentials.go +++ b/internal/output/process_credentials.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2023-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/output/process_credentials_test.go b/internal/output/process_credentials_test.go index 1f2f93d..de80d7d 100644 --- a/internal/output/process_credentials_test.go +++ b/internal/output/process_credentials_test.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2023-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/paginator/paginator.go b/internal/paginator/paginator.go index 0f4fda3..0d41aff 100644 --- a/internal/paginator/paginator.go +++ b/internal/paginator/paginator.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2024-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/picker/picker.go b/internal/picker/picker.go index 38aac4c..d65f659 100644 --- a/internal/picker/picker.go +++ b/internal/picker/picker.go @@ -55,7 +55,8 @@ var ( type Model struct { title string items []string - filtered []string + searchKeys []string // extracted search terms (e.g., role name from ARN) + filtered []int // indices into items matches []fuzzy.Match cursor int selected string @@ -66,6 +67,16 @@ type Model struct { maxVisible int } +// extractSearchKey extracts the searchable part from an item +// For ARNs like "arn:aws:iam::123:role/AdminRole", returns "AdminRole" +// For other strings, returns the last part after "/" +func extractSearchKey(item string) string { + if idx := strings.LastIndex(item, "/"); idx != -1 && idx < len(item)-1 { + return item[idx+1:] + } + return item +} + // New creates a new picker model func New(title string, items []string) Model { ti := textinput.New() @@ -76,10 +87,21 @@ func New(title string, items []string) Model { ti.PromptStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("39")) ti.TextStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("252")) + searchKeys := make([]string, len(items)) + for i, item := range items { + searchKeys[i] = extractSearchKey(item) + } + + filtered := make([]int, len(items)) + for i := range items { + filtered[i] = i + } + return Model{ title: title, items: items, - filtered: items, + searchKeys: searchKeys, + filtered: filtered, textInput: ti, maxVisible: 15, } @@ -111,7 +133,7 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { case "enter": if len(m.filtered) > 0 && m.cursor < len(m.filtered) { - m.selected = m.filtered[m.cursor] + m.selected = m.items[m.filtered[m.cursor]] } m.quitting = true return m, tea.Quit @@ -171,16 +193,19 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { func (m *Model) filter() { query := m.textInput.Value() if query == "" { - m.filtered = m.items + m.filtered = make([]int, len(m.items)) + for i := range m.items { + m.filtered[i] = i + } m.matches = nil return } - matches := fuzzy.Find(query, m.items) + matches := fuzzy.Find(query, m.searchKeys) m.matches = matches - m.filtered = make([]string, len(matches)) + m.filtered = make([]int, len(matches)) for i, match := range matches { - m.filtered[i] = match.Str + m.filtered[i] = match.Index } } @@ -203,17 +228,11 @@ func (m Model) View() string { if len(m.filtered) > m.maxVisible { half := m.maxVisible / 2 - start = m.cursor - half - if start < 0 { - start = 0 - } + start = max(m.cursor-half, 0) end = start + m.maxVisible if end > len(m.filtered) { end = len(m.filtered) - start = end - m.maxVisible - if start < 0 { - start = 0 - } + start = max(end-m.maxVisible, 0) } } @@ -222,13 +241,13 @@ func (m Model) View() string { } for i := start; i < end; i++ { - item := m.filtered[i] + itemIndex := m.filtered[i] cursor := " " if i == m.cursor { cursor = cursorStyle.Render("> ") } - displayItem := m.renderItem(i, item) + displayItem := m.renderItem(i, itemIndex) b.WriteString(cursor + displayItem + "\n") } @@ -244,54 +263,73 @@ func (m Model) View() string { return b.String() } -func (m Model) renderItem(index int, item string) string { - isSelected := index == m.cursor +func (m Model) renderItem(filteredIndex int, itemIndex int) string { + isSelected := filteredIndex == m.cursor hasQuery := m.textInput.Value() != "" + fullItem := m.items[itemIndex] + searchKey := m.searchKeys[itemIndex] - if isSelected { - if hasQuery && index < len(m.matches) { - return m.highlightMatchesSelected(m.matches[index]) - } - return selectedStyle.Render(item) + if hasQuery && filteredIndex < len(m.matches) { + return m.highlightInFullItem(fullItem, searchKey, m.matches[filteredIndex], isSelected) } - if hasQuery && index < len(m.matches) { - return m.highlightMatches(m.matches[index]) + if isSelected { + return selectedStyle.Render(fullItem) } - return normalStyle.Render(item) + return normalStyle.Render(fullItem) } -func (m Model) highlightMatches(match fuzzy.Match) string { +// highlightInFullItem highlights matched characters in the full item. +// The match was performed against searchKey, but we display fullItem. +// We find the searchKey suffix in fullItem and apply highlighting there. +func (m Model) highlightInFullItem(fullItem, searchKey string, match fuzzy.Match, isSelected bool) string { + // Find where searchKey appears in fullItem (should be at the end after last /) + keyStart := strings.LastIndex(fullItem, searchKey) + if keyStart == -1 { + // Fallback: searchKey not found, just render without highlight + if isSelected { + return selectedStyle.Render(fullItem) + } + return normalStyle.Render(fullItem) + } + + // Build result with highlighting only in the searchKey portion var result strings.Builder + + // Prefix part (before searchKey) + prefix := fullItem[:keyStart] + if isSelected { + result.WriteString(selectedStyle.Render(prefix)) + } else { + result.WriteString(normalStyle.Render(prefix)) + } + + // SearchKey part with match highlighting matchSet := make(map[int]bool) for _, idx := range match.MatchedIndexes { matchSet[idx] = true } - for i, char := range match.Str { + for i, char := range searchKey { if matchSet[i] { result.WriteString(matchStyle.Render(string(char))) + } else if isSelected { + result.WriteString(selectedStyle.Render(string(char))) } else { result.WriteString(normalStyle.Render(string(char))) } } - return result.String() -} - -func (m Model) highlightMatchesSelected(match fuzzy.Match) string { - var result strings.Builder - matchSet := make(map[int]bool) - for _, idx := range match.MatchedIndexes { - matchSet[idx] = true - } - for i, char := range match.Str { - if matchSet[i] { - result.WriteString(matchStyle.Render(string(char))) + // Suffix part (after searchKey, if any) + suffix := fullItem[keyStart+len(searchKey):] + if len(suffix) > 0 { + if isSelected { + result.WriteString(selectedStyle.Render(suffix)) } else { - result.WriteString(selectedStyle.Render(string(char))) + result.WriteString(normalStyle.Render(suffix)) } } + return result.String() } @@ -334,10 +372,3 @@ func Pick(title string, items []string) (string, error) { return result.Selected(), nil } - -func min(a, b int) int { - if a < b { - return a - } - return b -} diff --git a/internal/testutils/testutils.go b/internal/testutils/testutils.go index 24b67ad..813faed 100644 --- a/internal/testutils/testutils.go +++ b/internal/testutils/testutils.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2023-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/utils/utils.go b/internal/utils/utils.go index 199b489..2d2bd0b 100644 --- a/internal/utils/utils.go +++ b/internal/utils/utils.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2023-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/webssoauth/multiple_fed_apps_error.go b/internal/webssoauth/multiple_fed_apps_error.go index 0f7bc0c..6897dcf 100644 --- a/internal/webssoauth/multiple_fed_apps_error.go +++ b/internal/webssoauth/multiple_fed_apps_error.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2022-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/webssoauth/webssoauth.go b/internal/webssoauth/webssoauth.go index d225582..11dceb4 100644 --- a/internal/webssoauth/webssoauth.go +++ b/internal/webssoauth/webssoauth.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2022-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/internal/webssoauth/webssoauth_test.go b/internal/webssoauth/webssoauth_test.go index de8796e..b302ce4 100644 --- a/internal/webssoauth/webssoauth_test.go +++ b/internal/webssoauth/webssoauth_test.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026-Present, Okta, Inc. + * Copyright (c) 2022-Present, Okta, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. From 22471ba229eca20057e93f601a09b36e0f81b372 Mon Sep 17 00:00:00 2001 From: Pranav RK Date: Thu, 12 Feb 2026 12:06:21 +0530 Subject: [PATCH 4/7] docs: update readme --- README.md | 63 +++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 57 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 30f3570..8799ddd 100644 --- a/README.md +++ b/README.md @@ -578,6 +578,37 @@ These settings are optional unless marked otherwise: | Authorization Server ID | The ID of the Okta authorization server, set ID for a custom authorization server, will use default otherwise. Default `default` | `--authz-id [value]` | `OKTA_AWSCLI_AUTHZ_ID` | | Custom STS Role Session Name | Customize STS Role Session Name. Default `okta-aws-cli` | `--aws-sts-role-session-name [value]` | `OKTA_AWSCLI_STS_ROLE_SESSION_NAME` | +### Interactive Selection with Fuzzy Search + +When multiple IdPs or Roles are available, `okta-aws-cli` presents an interactive +picker with fuzzy search capabilities. This makes it easy to find the right +option even when you have many roles configured. + +**Features:** +- **Fuzzy search**: Type to filter options - matches are highlighted +- **Smart filtering**: Search is performed on the role/IdP name only (the part after the last `/`), not the full ARN +- **Keyboard navigation**: Use `↑`/`↓` arrows to navigate, `Enter` to select, `Esc` to cancel +- **Scroll indicators**: Shows count of items above/below when list is long + +**Example:** + +``` +? Choose a Role: + + > Type to filter... + + ↑ 5 more above +> arn:aws:iam::123456789012:role/admin <- selected, highlighted + arn:aws:iam::123456789012:role/developer + arn:aws:iam::123456789012:role/readonly + ↓ 10 more below + + (esc to cancel) +``` + +When typing `dev`, only roles containing "dev" in the role name will be shown, +with the matching characters highlighted. + ### Friendly IdP and Role menu labels When the operator has many AWS Federation apps listing the AWS IAM IdP ARNs can @@ -591,18 +622,28 @@ and Roles can also be evaluated are regular expressions (see example below). `$HOME/.okta/okta.yaml` as a configuration file and location. We will continue that practice with read-only friendly okta-aws-cli application values. -#### Before +#### Before (without friendly labels) ``` -? Choose an IdP: [Use arrows to move, type to filter] +? Choose an IdP: + + > Type to filter... + > Fed App 1 Label Fed App 2 Label Fed App 3 Label Fed App 4 Label -? Choose a Role: [Use arrows to move, type to filter] + (esc to cancel) + +? Choose a Role: + + > Type to filter... + > arn:aws:iam::123456789012:role/admin arn:aws:iam::123456789012:role/ops + + (esc to cancel) ``` #### Example `$HOME/.okta/okta.yaml` @@ -620,18 +661,28 @@ awscli: "arn:aws:iam::.*:role/operator": "Ops" ``` -#### After +#### After (with friendly labels from okta.yaml) ``` -? Choose an IdP: [Use arrows to move, type to filter] +? Choose an IdP: + + > Type to filter... + > Data Production Data Development Marketing Production Marketing Development -? Choose a Role: [Use arrows to move, type to filter] + (esc to cancel) + +? Choose a Role: + + > Type to filter... + > Admin Ops + + (esc to cancel) ``` ### Configuration by profile name From 016ef9b9c71c4a2873c12922db4f32b6a8c64239 Mon Sep 17 00:00:00 2001 From: Pranav RK Date: Thu, 12 Feb 2026 15:07:03 +0530 Subject: [PATCH 5/7] chore: remove hardcoded private key --- internal/m2mauth/m2mauth_test.go | 62 ++++++++++++++++---------------- 1 file changed, 30 insertions(+), 32 deletions(-) diff --git a/internal/m2mauth/m2mauth_test.go b/internal/m2mauth/m2mauth_test.go index c43a915..5a01245 100644 --- a/internal/m2mauth/m2mauth_test.go +++ b/internal/m2mauth/m2mauth_test.go @@ -17,6 +17,10 @@ package m2mauth import ( + "crypto/rand" + "crypto/rsa" + "crypto/x509" + "encoding/pem" "net/http" "os" "regexp" @@ -27,6 +31,26 @@ import ( "github.com/stretchr/testify/require" ) +// generateTestPrivateKey creates a 2048-bit RSA private key in PKCS8 PEM format for testing +func generateTestPrivateKey() (string, error) { + privateKey, err := rsa.GenerateKey(rand.Reader, 2048) + if err != nil { + return "", err + } + + pkcs8Bytes, err := x509.MarshalPKCS8PrivateKey(privateKey) + if err != nil { + return "", err + } + + pemBlock := &pem.Block{ + Type: "PRIVATE KEY", + Bytes: pkcs8Bytes, + } + + return string(pem.EncodeToMemory(pemBlock)), nil +} + func TestMain(m *testing.M) { var reset func() reset = testutils.OsSetEnvIfBlank("OKTA_AWSCLI_ORG_DOMAIN", testutils.TestDomainName) @@ -42,38 +66,12 @@ func TestMain(m *testing.M) { reset = testutils.OsSetEnvIfBlank("OKTA_AWSCLI_KEY_ID", "kid-rock") defer reset() - // NOTE: Okta Security this is just some random PK to unit test the client - // assertion generator in this app. PK was created with - // `openssl genrsa 2048 | openssl pkcs8 -topk8 -nocrypt` - reset = testutils.OsSetEnvIfBlank("OKTA_AWSCLI_PRIVATE_KEY", ` ------BEGIN PRIVATE KEY----- -MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDb6SvsSfrP69gO -yDpdXsZsT3ydS/ggCYFV8NhbHx6VtJeoLuQp+TCJ0pc4sC0ZvnBk5r6oAubLLDgK -zqDsf8rIzg91mZPH2KfQs0bM02q+2naLkHYIVXjCFMh3ibXGWuNH/cItm9CLHJz0 -11K4LmsXUJdre4suSGDmUKOYgJqpcYHaWeEGNWcnMb7UGC+lcaXpwnkbp5ziBP6P -PC/OH9S/HVDpiuJioex/zLLeCF/jnjHnbIa5EY1I5eWDttDgCxBRe+0p8XOtI6KJ -wIUkhank99DoVp+KIcCxFW6WfQCac9/oT5I8I+j0lOtBAfQo+d2uVQd2xX80vsdM -D2zvgyUHAgMBAAECggEAP4iQDgYZljR3CV5DrnIRNX2JbRBjsS3N1fxtJXZKKcow -/n/9nzrFESxsUA5mGUfxxNT9RCECeLRfxI+J4onRFk6iHMGv9k7bvOnujIKQFm+b -TBsCXsoCx1+lwxNgFtxvSX9AuFiJ2Yb8uafz2A5hFi1McdsRjN+QTzoA6bBN/qGp -PO5PiVnfY9B9C/XAy2fWJ8JF0xZ8yBpJo9RNet241Ee0tiWwuHNpwntMT7C+K8f5 -cv5ccE+mA81ZwOrhbaIRct3HaFhV8l1j5usbvmZXlzHgOXzDfdLx/scADBbDwjmo -djxrUBvLX1gwY6xRKXwgOv4ReZZcYV6Fvk5tTmgE8QKBgQD38fwyXZn24f4gb4X3 -WXf5WUuVlQx5cMMP5WQUgSPeUKuau2g0OR9ypy3KIG4qZj0sKFEP/aD8tbKfcDEg -I+dK87nfUvvU3I+3TCgy16D8Ir7mmZimcUJ380d62I7YZSWTTRTjvrTb5S4MakoO -s++N8sty/XM3whZe1Ls0XAraRQKBgQDjDgpjg/J5d/W1pG6Ru9YsvtyK64wGLP2o -DpnQFUNNO+WR+VGBDitKvdzSsEinfSI3Reklydn+jzTt5BVNUvughfqX/fTb+QN1 -7meHr8FPEPlLgKyLkmq9E6yZWuvOeMgjV7/P4Pwh66+rU7GVm14P7VEA1UOYmjvu -LJWjnw182wKBgQDOjGyefHEdRIhR9vWv531VYDjiBEdfBzvICz1DA42gzq0V+lbF -Ymy7M1+myTtc4MzG81MMMiohOy/xOCIEd0RfoQfPba7SVWb3uF6odA7s2/kR2xRa -W3GWwThjsvHUfPY/bnAfhSffI10oBIdrFiRSqNcpFNAdu/asyySkaqSzzQKBgFhS -PN5LFEYF0NFwfgY4b+6F69oqGBTK6Xy2+UQFEWH4u6tVtUujTFnNkxlts0VbmrSv -gCrP4vlvkWI8R8EFV5Ywp7L5+YabzanRK/qO9n4gFyk0i2nbcaPNBGW/BV0ShJ+i -4Z0mYk17laDqdHjCsAs4ADt3ucyhqlBSjX7RPvjjAoGAHoR+FJglKaY2U82VV5pK -sa8YdiJHAaJyd3olYNzq2QuxQOWN4d+BitVWPmM+IQkaBigESxTIam+n5/qHiVyV -XNY+9eUj7XwoMVz03BISN8TEmDlRyyQYHffRUF69wDLlSY1PG4k/9uED50YsQZAm -oO62j9Objbi/ntr/BSQIpYE= ------END PRIVATE KEY-----`) + // Generate a fresh RSA key for testing JWT signing + privateKey, err := generateTestPrivateKey() + if err != nil { + panic("failed to generate test private key: " + err.Error()) + } + reset = testutils.OsSetEnvIfBlank("OKTA_AWSCLI_PRIVATE_KEY", privateKey) defer reset() os.Exit(m.Run()) From e85f55029f86530613883cf83fc7e61c0216cc8a Mon Sep 17 00:00:00 2001 From: Pranav RK Date: Fri, 13 Feb 2026 08:31:27 +0530 Subject: [PATCH 6/7] test: add tests for the picker --- internal/picker/picker.go | 5 +- internal/picker/picker_test.go | 480 +++++++++++++++++++++++++++++++++ 2 files changed, 481 insertions(+), 4 deletions(-) create mode 100644 internal/picker/picker_test.go diff --git a/internal/picker/picker.go b/internal/picker/picker.go index d65f659..fe33038 100644 --- a/internal/picker/picker.go +++ b/internal/picker/picker.go @@ -88,12 +88,9 @@ func New(title string, items []string) Model { ti.TextStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("252")) searchKeys := make([]string, len(items)) + filtered := make([]int, len(items)) for i, item := range items { searchKeys[i] = extractSearchKey(item) - } - - filtered := make([]int, len(items)) - for i := range items { filtered[i] = i } diff --git a/internal/picker/picker_test.go b/internal/picker/picker_test.go new file mode 100644 index 0000000..7860c48 --- /dev/null +++ b/internal/picker/picker_test.go @@ -0,0 +1,480 @@ +/* + * Copyright (c) 2026-Present, Okta, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package picker + +import ( + "testing" + + tea "github.com/charmbracelet/bubbletea" + "github.com/stretchr/testify/require" +) + +func TestExtractSearchKey(t *testing.T) { + tests := []struct { + name string + input string + expected string + }{ + { + name: "ARN with role", + input: "arn:aws:iam::123456789012:role/AdminRole", + expected: "AdminRole", + }, + { + name: "ARN with SAML provider", + input: "arn:aws:iam::123456789012:saml-provider/Okta", + expected: "Okta", + }, + { + name: "simple string without slash", + input: "DataProduction", + expected: "DataProduction", + }, + { + name: "friendly label with spaces", + input: "Data Production Environment", + expected: "Data Production Environment", + }, + { + name: "path with multiple slashes", + input: "a/b/c/d/LastPart", + expected: "LastPart", + }, + { + name: "empty string", + input: "", + expected: "", + }, + { + name: "trailing slash", + input: "something/", + expected: "something/", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := extractSearchKey(tt.input) + require.Equal(t, tt.expected, result) + }) + } +} + +func TestNewModel(t *testing.T) { + items := []string{ + "arn:aws:iam::123:role/Admin", + "arn:aws:iam::123:role/Developer", + "arn:aws:iam::456:role/ReadOnly", + } + + m := New("Choose a Role:", items) + + require.Equal(t, "Choose a Role:", m.title) + require.Equal(t, items, m.items) + require.Len(t, m.searchKeys, 3) + require.Equal(t, "Admin", m.searchKeys[0]) + require.Equal(t, "Developer", m.searchKeys[1]) + require.Equal(t, "ReadOnly", m.searchKeys[2]) + require.Len(t, m.filtered, 3) + require.Equal(t, 0, m.cursor) + require.Empty(t, m.selected) + require.False(t, m.quitting) + require.False(t, m.cancelled) +} + +func TestModelFilter(t *testing.T) { + items := []string{ + "arn:aws:iam::123:role/AdminRole", + "arn:aws:iam::123:role/DeveloperRole", + "arn:aws:iam::456:role/ReadOnlyRole", + "arn:aws:iam::456:role/AdminAccess", + } + + m := New("Choose a Role:", items) + + require.Len(t, m.filtered, 4) + + // Simulate typing "admin" + m.textInput.SetValue("admin") + m.filter() + + // Should match "AdminRole" and "AdminAccess" + require.Len(t, m.filtered, 2) + + // Verify the filtered indices point to correct items + for _, idx := range m.filtered { + searchKey := m.searchKeys[idx] + require.Contains(t, []string{"AdminRole", "AdminAccess"}, searchKey) + } +} + +func TestModelFilterCaseInsensitive(t *testing.T) { + items := []string{ + "arn:aws:iam::123:role/AdminRole", + "arn:aws:iam::123:role/adminaccess", + "arn:aws:iam::456:role/ADMINISTRATOR", + } + + m := New("Choose a Role:", items) + + // Fuzzy search is case-insensitive + m.textInput.SetValue("ADMIN") + m.filter() + + require.Len(t, m.filtered, 3) +} + +func TestModelFilterNoMatches(t *testing.T) { + items := []string{ + "arn:aws:iam::123:role/Admin", + "arn:aws:iam::123:role/Developer", + } + + m := New("Choose a Role:", items) + + m.textInput.SetValue("xyz123") + m.filter() + + require.Len(t, m.filtered, 0) +} + +func TestModelFilterClearQuery(t *testing.T) { + items := []string{ + "arn:aws:iam::123:role/Admin", + "arn:aws:iam::123:role/Developer", + } + + m := New("Choose a Role:", items) + + // Filter to one item + m.textInput.SetValue("admin") + m.filter() + require.Len(t, m.filtered, 1) + + // Clear filter + m.textInput.SetValue("") + m.filter() + require.Len(t, m.filtered, 2) +} + +func TestModelUpdateKeyNavigation(t *testing.T) { + items := []string{ + "arn:aws:iam::123:role/Admin", + "arn:aws:iam::123:role/Developer", + "arn:aws:iam::456:role/ReadOnly", + } + + m := New("Choose a Role:", items) + require.Equal(t, 0, m.cursor) + + // Move down + newModel, _ := m.Update(tea.KeyMsg{Type: tea.KeyDown}) + m = newModel.(Model) + require.Equal(t, 1, m.cursor) + + // Move down again + newModel, _ = m.Update(tea.KeyMsg{Type: tea.KeyDown}) + m = newModel.(Model) + require.Equal(t, 2, m.cursor) + + // Try to move past the end + newModel, _ = m.Update(tea.KeyMsg{Type: tea.KeyDown}) + m = newModel.(Model) + require.Equal(t, 2, m.cursor) + + // Move up + newModel, _ = m.Update(tea.KeyMsg{Type: tea.KeyUp}) + m = newModel.(Model) + require.Equal(t, 1, m.cursor) + + // Move to beginning + newModel, _ = m.Update(tea.KeyMsg{Type: tea.KeyHome}) + m = newModel.(Model) + require.Equal(t, 0, m.cursor) + + // Try to move before the beginning + newModel, _ = m.Update(tea.KeyMsg{Type: tea.KeyUp}) + m = newModel.(Model) + require.Equal(t, 0, m.cursor) + + // Move to end + newModel, _ = m.Update(tea.KeyMsg{Type: tea.KeyEnd}) + m = newModel.(Model) + require.Equal(t, 2, m.cursor) +} + +func TestModelUpdateEnterSelection(t *testing.T) { + items := []string{ + "arn:aws:iam::123:role/Admin", + "arn:aws:iam::123:role/Developer", + } + + m := New("Choose a Role:", items) + + // Move to second item + newModel, _ := m.Update(tea.KeyMsg{Type: tea.KeyDown}) + m = newModel.(Model) + + // Press enter + newModel, _ = m.Update(tea.KeyMsg{Type: tea.KeyEnter}) + m = newModel.(Model) + + require.True(t, m.quitting) + require.False(t, m.cancelled) + require.Equal(t, "arn:aws:iam::123:role/Developer", m.selected) +} + +func TestModelUpdateEscCancel(t *testing.T) { + items := []string{ + "arn:aws:iam::123:role/Admin", + } + + m := New("Choose a Role:", items) + + // Press escape + newModel, _ := m.Update(tea.KeyMsg{Type: tea.KeyEsc}) + m = newModel.(Model) + + require.True(t, m.quitting) + require.True(t, m.cancelled) + require.Empty(t, m.selected) +} + +func TestModelUpdateCtrlCCancel(t *testing.T) { + items := []string{ + "arn:aws:iam::123:role/Admin", + } + + m := New("Choose a Role:", items) + + // Press ctrl+c + newModel, _ := m.Update(tea.KeyMsg{Type: tea.KeyCtrlC}) + m = newModel.(Model) + + require.True(t, m.quitting) + require.True(t, m.cancelled) +} + +func TestModelSelectedAndCancelled(t *testing.T) { + items := []string{"item1", "item2"} + m := New("Title", items) + + require.Empty(t, m.Selected()) + require.False(t, m.Cancelled()) + + // Simulate selection + m.selected = "item1" + require.Equal(t, "item1", m.Selected()) + + // Simulate cancellation + m.cancelled = true + require.True(t, m.Cancelled()) +} + +func TestModelViewNotQuitting(t *testing.T) { + items := []string{ + "arn:aws:iam::123:role/Admin", + "arn:aws:iam::123:role/Developer", + } + + m := New("Choose a Role:", items) + view := m.View() + + // Should contain title + require.Contains(t, view, "Choose a Role:") + + // Should contain items + require.Contains(t, view, "Admin") + require.Contains(t, view, "Developer") + + // Should contain navigation hints + require.Contains(t, view, "navigate") + require.Contains(t, view, "select") + require.Contains(t, view, "cancel") + + // Should show item count + require.Contains(t, view, "2/2") +} + +func TestModelViewQuitting(t *testing.T) { + items := []string{"item1"} + m := New("Title", items) + m.quitting = true + + view := m.View() + require.Empty(t, view) +} + +func TestModelViewNoMatches(t *testing.T) { + items := []string{"item1", "item2"} + m := New("Title", items) + + m.textInput.SetValue("xyz") + m.filter() + + view := m.View() + require.Contains(t, view, "No matches found") + require.Contains(t, view, "0/2") +} + +func TestModelPageUpPageDown(t *testing.T) { + // Create a list larger than maxVisible + items := make([]string, 30) + for i := 0; i < 30; i++ { + items[i] = "item" + string(rune('A'+i)) + } + + m := New("Choose:", items) + m.maxVisible = 10 + require.Equal(t, 0, m.cursor) + + // Page down + newModel, _ := m.Update(tea.KeyMsg{Type: tea.KeyPgDown}) + m = newModel.(Model) + require.Equal(t, 10, m.cursor) + + // Page down again + newModel, _ = m.Update(tea.KeyMsg{Type: tea.KeyPgDown}) + m = newModel.(Model) + require.Equal(t, 20, m.cursor) + + // Page down - should stop at last item + newModel, _ = m.Update(tea.KeyMsg{Type: tea.KeyPgDown}) + m = newModel.(Model) + require.Equal(t, 29, m.cursor) + + // Page up + newModel, _ = m.Update(tea.KeyMsg{Type: tea.KeyPgUp}) + m = newModel.(Model) + require.Equal(t, 19, m.cursor) + + // Page up multiple times to reach beginning + for i := 0; i < 5; i++ { + newModel, _ = m.Update(tea.KeyMsg{Type: tea.KeyPgUp}) + m = newModel.(Model) + } + require.Equal(t, 0, m.cursor) +} + +func TestModelFilterThenSelect(t *testing.T) { + items := []string{ + "arn:aws:iam::123:role/AdminRole", + "arn:aws:iam::123:role/DeveloperRole", + "arn:aws:iam::456:role/ReadOnlyRole", + } + + m := New("Choose a Role:", items) + + // Filter to "dev" + m.textInput.SetValue("dev") + m.filter() + m.cursor = 0 // Reset cursor after filter + + require.Len(t, m.filtered, 1) + + // Press enter to select the filtered item + newModel, _ := m.Update(tea.KeyMsg{Type: tea.KeyEnter}) + m = newModel.(Model) + + require.Equal(t, "arn:aws:iam::123:role/DeveloperRole", m.selected) +} + +func TestModelWindowSizeUpdate(t *testing.T) { + items := []string{"item1", "item2"} + m := New("Title", items) + + // Simulate window size message + newModel, _ := m.Update(tea.WindowSizeMsg{Width: 80, Height: 24}) + m = newModel.(Model) + + require.Equal(t, 24, m.windowHeight) + require.Equal(t, 15, m.maxVisible) // min(15, 24-6) = 15 +} + +func TestModelWindowSizeSmall(t *testing.T) { + items := []string{"item1", "item2"} + m := New("Title", items) + + // Simulate small window + newModel, _ := m.Update(tea.WindowSizeMsg{Width: 80, Height: 8}) + m = newModel.(Model) + + require.Equal(t, 3, m.maxVisible) // min(15, 8-6) = 2, but min is 3 +} + +func TestPickSingleItem(t *testing.T) { + items := []string{"only-one-item"} + + // Pick should return the single item without running the UI + result, err := Pick("Choose:", items) + + require.NoError(t, err) + require.Equal(t, "only-one-item", result) +} + +func TestPickEmptyItems(t *testing.T) { + items := []string{} + + _, err := Pick("Choose:", items) + + require.Error(t, err) + require.Contains(t, err.Error(), "no items to select from") +} + +func TestFuzzyMatchOrdering(t *testing.T) { + items := []string{ + "arn:aws:iam::123:role/ProductionAdmin", + "arn:aws:iam::123:role/Admin", + "arn:aws:iam::123:role/AdminBackup", + } + + m := New("Choose:", items) + + m.textInput.SetValue("admin") + m.filter() + + // Should have all 3 matches + require.Len(t, m.filtered, 3) + + // The fuzzy library scores exact/shorter matches higher + // "Admin" should be ranked higher than "ProductionAdmin" + firstMatch := m.items[m.filtered[0]] + require.Contains(t, firstMatch, "Admin") +} + +func TestSearchKeyPreservesOriginalForDisplay(t *testing.T) { + items := []string{ + "arn:aws:iam::123456789012:role/MyAdminRole", + } + + m := New("Choose:", items) + + // Search key should be just the role name + require.Equal(t, "MyAdminRole", m.searchKeys[0]) + + // But items should preserve full ARN + require.Equal(t, "arn:aws:iam::123456789012:role/MyAdminRole", m.items[0]) + + // After filtering, selected item should be full ARN + m.textInput.SetValue("admin") + m.filter() + + newModel, _ := m.Update(tea.KeyMsg{Type: tea.KeyEnter}) + m = newModel.(Model) + + require.Equal(t, "arn:aws:iam::123456789012:role/MyAdminRole", m.selected) +} From ae24f6b8f2434eabb0ffc8aa41c3aceb463047e1 Mon Sep 17 00:00:00 2001 From: Pranav RK Date: Fri, 13 Feb 2026 08:58:00 +0530 Subject: [PATCH 7/7] docs: add examples and demo --- .github/assets/demo.gif | Bin 0 -> 5519049 bytes README.md | 18 ++-------- examples/picker_demo.go | 72 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+), 16 deletions(-) create mode 100644 .github/assets/demo.gif create mode 100644 examples/picker_demo.go diff --git a/.github/assets/demo.gif b/.github/assets/demo.gif new file mode 100644 index 0000000000000000000000000000000000000000..d7e0b9495de363a5815187faeb44cfdcb075a5a5 GIT binary patch literal 5519049 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