Skip to content

Commit

Permalink
added profile override functionality
Browse files Browse the repository at this point in the history
  • Loading branch information
rkoval committed Aug 2, 2021
1 parent 70ddd14 commit cd3a621
Show file tree
Hide file tree
Showing 88 changed files with 2,869 additions and 79 deletions.
6 changes: 6 additions & 0 deletions aliases/aliases.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package aliases
import "os"

var OverrideAwsRegion string
var OverrideAwsProfile string
var Search string

func init() {
Expand All @@ -11,6 +12,11 @@ func init() {
OverrideAwsRegion = "$"
}

OverrideAwsProfile = os.Getenv("ALFRED_AWS_CONSOLE_SERVICES_OVERRIDE_AWS_PROFILE_ALIAS")
if OverrideAwsProfile == "" {
OverrideAwsProfile = "@"
}

Search = os.Getenv("ALFRED_AWS_CONSOLE_SERVICES_WORKFLOW_SEARCH_ALIAS")
if Search == "" {
Search = ","
Expand Down
83 changes: 83 additions & 0 deletions awsconfig/profiles.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
package awsconfig

import (
"log"
"os"

"github.com/aws/aws-sdk-go-v2/config"
"gopkg.in/ini.v1"
)

type Profile struct {
Name string
Region string
}

var awsProfiles []Profile

func GetAwsProfiles() []Profile {
if awsProfiles == nil || len(awsProfiles) <= 0 {
loadAwsProfiles()
}
return awsProfiles
}

func loadAwsProfiles() {
credentialsIniFile, err := ini.Load(GetAwsCredentialsFilePath())
if err != nil {
log.Println(err)
}
configIniFile, err := ini.Load(GetAwsProfileFilePath())
if err != nil {
log.Println(err)
}

awsProfiles = nil
if credentialsIniFile != nil {
for _, section := range credentialsIniFile.Sections() {
if section.Name() == ini.DefaultSection {
// AWS does not specify anything useful in the root section
continue
}
profile := Profile{
Name: section.Name(),
}

if configIniFile != nil {
var sectionName string
if profile.Name == "default" {
sectionName = profile.Name
} else {
// all other non-"default" profiles have special prefix
sectionName = "profile " + profile.Name
}
configProfileSection, _ := configIniFile.GetSection(sectionName)
if configProfileSection != nil {
regionKey, _ := configProfileSection.GetKey("region")
if regionKey != nil {
profile.Region = regionKey.Value()
}
}
}
awsProfiles = append(awsProfiles, profile)
}
}
}

func GetAwsCredentialsFilePath() string {
// see https://docs.aws.amazon.com/sdkref/latest/guide/file-location.html
path, _ := os.LookupEnv("AWS_SHARED_CREDENTIALS_FILE")
if path == "" {
path = config.DefaultSharedCredentialsFilename()
}
return path
}

func GetAwsProfileFilePath() string {
// see https://docs.aws.amazon.com/sdkref/latest/guide/file-location.html
path, _ := os.LookupEnv("AWS_CONFIG_FILE")
if path == "" {
path = config.DefaultSharedConfigFilename()
}
return path
}
2 changes: 1 addition & 1 deletion awsworkflow/regions.go → awsconfig/regions.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package awsworkflow
package awsconfig

type Region struct {
Name string
Expand Down
25 changes: 23 additions & 2 deletions awsworkflow/aws.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,32 @@ import (
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/config"
aw "github.com/deanishe/awgo"
"github.com/rkoval/alfred-aws-console-services-workflow/awsconfig"
"github.com/rkoval/alfred-aws-console-services-workflow/util"
)

func InitAWS(transport http.RoundTripper) aws.Config {
cfg, err := config.LoadDefaultConfig(context.TODO())
func InitAWS(transport http.RoundTripper, profile *awsconfig.Profile, region *awsconfig.Region) aws.Config {
profileLoadOptionsFunc := func(o *config.LoadOptions) error {
return nil
}
regionLoadOptionsFunc := func(o *config.LoadOptions) error {
return nil
}
if profile != nil {
profileLoadOptionsFunc = config.WithSharedConfigProfile(profile.Name)
if profile.Region != "" {
regionLoadOptionsFunc = config.WithRegion(profile.Region)
}
}
if region != nil {
regionLoadOptionsFunc = config.WithRegion(region.Name)
}

cfg, err := config.LoadDefaultConfig(
context.TODO(),
profileLoadOptionsFunc,
regionLoadOptionsFunc,
)
if err != nil {
panic(err)
}
Expand Down
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,6 @@ require (
github.com/stretchr/testify v1.6.1
golang.org/x/text v0.3.6 // indirect
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
gopkg.in/ini.v1 v1.62.0 // indirect
gopkg.in/yaml.v2 v2.2.8
)
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,8 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/ini.v1 v1.62.0 h1:duBzk771uxoUuOlyRLkHsygud9+5lrlGjdFBb4mSKDU=
gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
Expand Down
5 changes: 1 addition & 4 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import (

aw "github.com/deanishe/awgo"
"github.com/deanishe/awgo/update"
"github.com/rkoval/alfred-aws-console-services-workflow/awsworkflow"
"github.com/rkoval/alfred-aws-console-services-workflow/workflow"
)

Expand All @@ -29,9 +28,7 @@ func init() {
func main() {
wf.Run(func() {
log.Printf("running workflow with query: `%s`", query)
cfg := awsworkflow.InitAWS(nil)
query = strings.TrimLeft(query, " ")

workflow.Run(wf, query, cfg, forceFetch, openAll, ymlPath)
workflow.Run(wf, query, nil, forceFetch, openAll, ymlPath)
})
}
4 changes: 3 additions & 1 deletion parsers/.snapshots/TestParser-#00
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
HasTrailingWhitespace: (bool) false,
HasOpenAll: (bool) false,
HasDefaultSearchAlias: (bool) false,
RegionOverride: (*awsworkflow.Region)(<nil>),
regionOverride: (*awsconfig.Region)(<nil>),
RegionQuery: (*string)(<nil>),
ProfileOverride: (*awsconfig.Profile)(<nil>),
ProfileQuery: (*string)(<nil>),
RemainingQuery: (string) ""
})
4 changes: 3 additions & 1 deletion parsers/.snapshots/TestParser-$
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
HasTrailingWhitespace: (bool) false,
HasOpenAll: (bool) false,
HasDefaultSearchAlias: (bool) false,
RegionOverride: (*awsworkflow.Region)(<nil>),
regionOverride: (*awsconfig.Region)(<nil>),
RegionQuery: (*string)(""),
ProfileOverride: (*awsconfig.Profile)(<nil>),
ProfileQuery: (*string)(<nil>),
RemainingQuery: (string) ""
})
4 changes: 3 additions & 1 deletion parsers/.snapshots/TestParser-$us
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
HasTrailingWhitespace: (bool) false,
HasOpenAll: (bool) false,
HasDefaultSearchAlias: (bool) false,
RegionOverride: (*awsworkflow.Region)(<nil>),
regionOverride: (*awsconfig.Region)(<nil>),
RegionQuery: (*string)((len=2) "us"),
ProfileOverride: (*awsconfig.Profile)(<nil>),
ProfileQuery: (*string)(<nil>),
RemainingQuery: (string) ""
})
4 changes: 3 additions & 1 deletion parsers/.snapshots/TestParser-$us-west-2
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,12 @@
HasTrailingWhitespace: (bool) false,
HasOpenAll: (bool) false,
HasDefaultSearchAlias: (bool) false,
RegionOverride: (*awsworkflow.Region)({
regionOverride: (*awsconfig.Region)({
Name: (string) (len=9) "us-west-2",
Description: (string) (len=16) "US West (Oregon)"
}),
RegionQuery: (*string)((len=9) "us-west-2"),
ProfileOverride: (*awsconfig.Profile)(<nil>),
ProfileQuery: (*string)(<nil>),
RemainingQuery: (string) ""
})
13 changes: 13 additions & 0 deletions parsers/.snapshots/TestParser-@
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
(*parsers.Query)({
RawQuery: (string) (len=1) "@",
Service: (*awsworkflow.AwsService)(<nil>),
SubService: (*awsworkflow.AwsService)(<nil>),
HasTrailingWhitespace: (bool) false,
HasOpenAll: (bool) false,
HasDefaultSearchAlias: (bool) false,
regionOverride: (*awsconfig.Region)(<nil>),
RegionQuery: (*string)(<nil>),
ProfileOverride: (*awsconfig.Profile)(<nil>),
ProfileQuery: (*string)(""),
RemainingQuery: (string) ""
})
13 changes: 13 additions & 0 deletions parsers/.snapshots/TestParser-@prof
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
(*parsers.Query)({
RawQuery: (string) (len=5) "@prof",
Service: (*awsworkflow.AwsService)(<nil>),
SubService: (*awsworkflow.AwsService)(<nil>),
HasTrailingWhitespace: (bool) false,
HasOpenAll: (bool) false,
HasDefaultSearchAlias: (bool) false,
regionOverride: (*awsconfig.Region)(<nil>),
RegionQuery: (*string)(<nil>),
ProfileOverride: (*awsconfig.Profile)(<nil>),
ProfileQuery: (*string)((len=4) "prof"),
RemainingQuery: (string) ""
})
13 changes: 13 additions & 0 deletions parsers/.snapshots/TestParser-@profile
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
(*parsers.Query)({
RawQuery: (string) (len=8) "@profile",
Service: (*awsworkflow.AwsService)(<nil>),
SubService: (*awsworkflow.AwsService)(<nil>),
HasTrailingWhitespace: (bool) false,
HasOpenAll: (bool) false,
HasDefaultSearchAlias: (bool) false,
regionOverride: (*awsconfig.Region)(<nil>),
RegionQuery: (*string)(<nil>),
ProfileOverride: (*awsconfig.Profile)(<nil>),
ProfileQuery: (*string)((len=7) "profile"),
RemainingQuery: (string) ""
})
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,9 @@
HasTrailingWhitespace: (bool) false,
HasOpenAll: (bool) true,
HasDefaultSearchAlias: (bool) false,
RegionOverride: (*awsworkflow.Region)(<nil>),
regionOverride: (*awsconfig.Region)(<nil>),
RegionQuery: (*string)(<nil>),
ProfileOverride: (*awsconfig.Profile)(<nil>),
ProfileQuery: (*string)(<nil>),
RemainingQuery: (string) ""
})
4 changes: 3 additions & 1 deletion parsers/.snapshots/TestParser-_
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
HasTrailingWhitespace: (bool) true,
HasOpenAll: (bool) false,
HasDefaultSearchAlias: (bool) false,
RegionOverride: (*awsworkflow.Region)(<nil>),
regionOverride: (*awsconfig.Region)(<nil>),
RegionQuery: (*string)(<nil>),
ProfileOverride: (*awsconfig.Profile)(<nil>),
ProfileQuery: (*string)(<nil>),
RemainingQuery: (string) ""
})
4 changes: 3 additions & 1 deletion parsers/.snapshots/TestParser-___
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
HasTrailingWhitespace: (bool) true,
HasOpenAll: (bool) false,
HasDefaultSearchAlias: (bool) false,
RegionOverride: (*awsworkflow.Region)(<nil>),
regionOverride: (*awsconfig.Region)(<nil>),
RegionQuery: (*string)(<nil>),
ProfileOverride: (*awsconfig.Profile)(<nil>),
ProfileQuery: (*string)(<nil>),
RemainingQuery: (string) ""
})
4 changes: 3 additions & 1 deletion parsers/.snapshots/TestParser-______elasticbeanstalk______
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,9 @@
HasTrailingWhitespace: (bool) true,
HasOpenAll: (bool) false,
HasDefaultSearchAlias: (bool) false,
RegionOverride: (*awsworkflow.Region)(<nil>),
regionOverride: (*awsconfig.Region)(<nil>),
RegionQuery: (*string)(<nil>),
ProfileOverride: (*awsconfig.Profile)(<nil>),
ProfileQuery: (*string)(<nil>),
RemainingQuery: (string) ""
})
4 changes: 3 additions & 1 deletion parsers/.snapshots/TestParser-_elasticbeanstalk
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,9 @@
HasTrailingWhitespace: (bool) false,
HasOpenAll: (bool) false,
HasDefaultSearchAlias: (bool) false,
RegionOverride: (*awsworkflow.Region)(<nil>),
regionOverride: (*awsconfig.Region)(<nil>),
RegionQuery: (*string)(<nil>),
ProfileOverride: (*awsconfig.Profile)(<nil>),
ProfileQuery: (*string)(<nil>),
RemainingQuery: (string) ""
})
4 changes: 3 additions & 1 deletion parsers/.snapshots/TestParser-_elasticbeanstalk_
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,9 @@
HasTrailingWhitespace: (bool) true,
HasOpenAll: (bool) false,
HasDefaultSearchAlias: (bool) false,
RegionOverride: (*awsworkflow.Region)(<nil>),
regionOverride: (*awsconfig.Region)(<nil>),
RegionQuery: (*string)(<nil>),
ProfileOverride: (*awsconfig.Profile)(<nil>),
ProfileQuery: (*string)(<nil>),
RemainingQuery: (string) ""
})
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,9 @@
HasTrailingWhitespace: (bool) true,
HasOpenAll: (bool) false,
HasDefaultSearchAlias: (bool) true,
RegionOverride: (*awsworkflow.Region)(<nil>),
regionOverride: (*awsconfig.Region)(<nil>),
RegionQuery: (*string)(<nil>),
ProfileOverride: (*awsconfig.Profile)(<nil>),
ProfileQuery: (*string)(<nil>),
RemainingQuery: (string) (len=22) "search term more hello"
})
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,9 @@
HasTrailingWhitespace: (bool) false,
HasOpenAll: (bool) false,
HasDefaultSearchAlias: (bool) false,
RegionOverride: (*awsworkflow.Region)(<nil>),
regionOverride: (*awsconfig.Region)(<nil>),
RegionQuery: (*string)(<nil>),
ProfileOverride: (*awsconfig.Profile)(<nil>),
ProfileQuery: (*string)(<nil>),
RemainingQuery: (string) (len=33) "subservice search term more hello"
})
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,9 @@
HasTrailingWhitespace: (bool) true,
HasOpenAll: (bool) false,
HasDefaultSearchAlias: (bool) false,
RegionOverride: (*awsworkflow.Region)(<nil>),
regionOverride: (*awsconfig.Region)(<nil>),
RegionQuery: (*string)(<nil>),
ProfileOverride: (*awsconfig.Profile)(<nil>),
ProfileQuery: (*string)(<nil>),
RemainingQuery: (string) (len=33) "subservice search term more hello"
})
4 changes: 3 additions & 1 deletion parsers/.snapshots/TestParser-asdf_asdf
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
HasTrailingWhitespace: (bool) false,
HasOpenAll: (bool) false,
HasDefaultSearchAlias: (bool) false,
RegionOverride: (*awsworkflow.Region)(<nil>),
regionOverride: (*awsconfig.Region)(<nil>),
RegionQuery: (*string)(<nil>),
ProfileOverride: (*awsconfig.Profile)(<nil>),
ProfileQuery: (*string)(<nil>),
RemainingQuery: (string) (len=9) "asdf asdf"
})
4 changes: 3 additions & 1 deletion parsers/.snapshots/TestParser-asdf_asdf_asdf_
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
HasTrailingWhitespace: (bool) true,
HasOpenAll: (bool) false,
HasDefaultSearchAlias: (bool) false,
RegionOverride: (*awsworkflow.Region)(<nil>),
regionOverride: (*awsconfig.Region)(<nil>),
RegionQuery: (*string)(<nil>),
ProfileOverride: (*awsconfig.Profile)(<nil>),
ProfileQuery: (*string)(<nil>),
RemainingQuery: (string) (len=14) "asdf asdf asdf"
})
Loading

0 comments on commit cd3a621

Please sign in to comment.