Skip to content

Commit

Permalink
- refactor code to remove harcoded values
Browse files Browse the repository at this point in the history
- create constants file for packages
  • Loading branch information
aanamshaikh committed Feb 15, 2023
1 parent bc6c1b4 commit a3cfae0
Show file tree
Hide file tree
Showing 11 changed files with 143 additions and 85 deletions.
5 changes: 5 additions & 0 deletions cmd/constants.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package cmd

const (
localstackEndpoint string = "http://localhost:4566"
)
2 changes: 1 addition & 1 deletion cmd/localstackpopulator.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ func init() {
func getSession(profile, region string) (*session.Session, error) {
sess, err := session.NewSessionWithOptions(session.Options{Config: aws.Config{
//TODO: remove hardcoded enpoint
Endpoint: aws.String("http://localhost:4566"),
Endpoint: aws.String(localstackEndpoint),
Region: aws.String(region),
S3ForcePathStyle: aws.Bool(true),
},
Expand Down
10 changes: 5 additions & 5 deletions cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ func run(cmd *cobra.Command, args []string) {
app := view.NewApp()

// TODO pass the AWS session instead of profiles and regions
if err := app.Init(profiles, regions, ctx); err != nil {
if err := app.Init(ctx, profiles, regions); err != nil {
panic(fmt.Sprintf("app init failed -- %v", err))
}
if err := app.Run(); err != nil {
Expand All @@ -85,9 +85,9 @@ func readAndValidateProfile() []string {
fmt.Printf("Profile '%v' not found, would you like to pick one from profiles[%v,..] ["+color.Colorize("y", color.Cyan)+"/"+color.Colorize("n", color.Red)+"]: ", color.Colorize(profile, color.Red), profiles[0])
fmt.Scanln(&input)
switch input {
case "y", "Y", "yes", "YES":
case internal.LowercaseY, internal.UppercaseY, internal.LowercaseYes, internal.UppercaseYes:
break loop
case "n", "N", "no", "NO":
case internal.LowercaseN, internal.UppercaseN, internal.LowercaseNo, internal.UppercaseNo:
fmt.Printf("Profile '%v' not found, exiting..", profile)
os.Exit(0)
}
Expand All @@ -106,9 +106,9 @@ func readAndValidateRegion() []string {
fmt.Printf("Region '%v' not found, would you like to pick one from regions[%v,..] ["+color.Colorize("y", color.Cyan)+"/"+color.Colorize("n", color.Red)+"]: ", color.Colorize(region, color.Red), regions[0])
fmt.Scanln(&input)
switch input {
case "y", "Y", "yes", "YES":
case internal.LowercaseY, internal.UppercaseY, internal.LowercaseYes, internal.UppercaseYes:
break loop
case "n", "N", "no", "NO":
case internal.LowercaseN, internal.UppercaseN, internal.LowercaseNo, internal.UppercaseNo:
fmt.Printf("Region '%v' not found, exiting..", region)
os.Exit(0)
}
Expand Down
37 changes: 19 additions & 18 deletions internal/config/alias.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"path/filepath"
"sync"

"github.com/one2nc/cloud-lens/internal"
"github.com/rs/zerolog/log"
"gopkg.in/yaml.v2"
)
Expand Down Expand Up @@ -128,24 +129,24 @@ func (a *Aliases) loadDefaultAliases() {
a.mx.Lock()
defer a.mx.Unlock()

a.declare("ec2", "Ec2", "EC2")
a.declare("s3", "S3")
a.declare("sg", "SG")
a.declare("iam:u", "IAM:U")
a.declare("ebs", "EBS")
a.declare("iam:u", "IAM:U", "iam", "IAM")
a.declare("iam:g", "IAM:G")
a.declare("iam:r", "IAM:R")
a.declare("ec2:s", "EC2:S")
a.declare("ec2:i", "EC2:I")
a.declare("sqs", "SQS")
a.declare("vpc", "VPC")
a.declare("subnet", "SUBNET")
a.declare("lambda", "LAMBDA")

a.declare("help", "h", "?")
a.declare("quit", "q", "q!", "Q")
a.declare("aliases", "alias", "a")
a.declare(internal.LowercaseEc2, internal.UppercaseEc2)
a.declare(internal.LowercaseS3, internal.UppercaseS3)
a.declare(internal.LowercaseSg, internal.UppercaseSg)
a.declare(internal.LowercaseIamUser, internal.UppercaseIamUser)
a.declare(internal.LowercaseEBS, internal.UppercaseEBS)
a.declare(internal.LowercaseIamUser, internal.UppercaseIamUser, internal.LowercaseIam, internal.UppercaseIam)
a.declare(internal.LowercaseIamGroup,internal.UppercaseIamGroup)
a.declare(internal.LowercaseIamRole, internal.UppercaseIamRole)
a.declare(internal.LowercaseEc2Snapshot, internal.UppercaseEc2Snapshot)
a.declare(internal.LowercaseEc2Image, internal.UppercaseEc2Image)
a.declare(internal.LowercaseSQS, internal.UppercaseSQS)
a.declare(internal.LowercaseVPC, internal.UppercaseVPC)
a.declare(internal.LowercaseSubnet,internal.UppercaseSubnet)
a.declare(internal.LowercaseLamda,internal.UppercaseLamda)

a.declare(internal.Help, internal.QuestionMark,internal.LowercaseH)
a.declare(internal.Quit,internal.LowercaseQ,internal.QFactorial,internal.UppercaseQ)
// a.declare(internal.Alias,internal.Aliases, internal.LowercaseA)
}

// Save alias to disk.
Expand Down
2 changes: 1 addition & 1 deletion internal/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ var config Config
func GetSession(profile, region string) (*session.Session, error) {
sess, err := session.NewSessionWithOptions(session.Options{Config: aws.Config{
//TODO: remove hardcoded enpoint
Endpoint: aws.String("http://localhost:4566"),
Endpoint: aws.String(localstackEndpoint),
Region: aws.String(region),
S3ForcePathStyle: aws.Bool(true),
},
Expand Down
5 changes: 5 additions & 0 deletions internal/config/constants.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package config

const (
localstackEndpoint string = "http://localhost:4566"
)
72 changes: 72 additions & 0 deletions internal/constants.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
package internal

// ContextKey represents context key.
type ContextKey string

// A collection of context keys.
const (
KeyFactory ContextKey = "factory"
KeyApp ContextKey = "app"
KeyActiveProfile ContextKey = "active-profile"
KeyActiveRegion ContextKey = "active-region"
KeySession ContextKey = "session"
BucketName ContextKey = "bucket_name"
ObjectName ContextKey = "object_name"
FolderName ContextKey = "folder_name"
KeyAliases ContextKey = "aliases"
UserName ContextKey = "user_name"
GroupName ContextKey = "group_name"
RoleName ContextKey = "role_name"
VpcId ContextKey = "vpc_id"
LowercaseY string = "y"
UppercaseY string = "Y"
LowercaseYes string = "yes"
UppercaseYes string = "YES"
LowercaseN string = "n"
UppercaseN string = "N"
LowercaseNo string = "no"
UppercaseNo string = "NO"
LowercaseEc2 string = "ec2"
UppercaseEc2 string = "Ec2"
LowercaseS3 string = "s3"
UppercaseS3 string = "S3"
LowercaseEBS string = "ebs"
UppercaseEBS string = "EBS"
LowercaseSg string = "sg"
UppercaseSg string = "SG"
LowercaseIamUser string = "iam:u"
UppercaseIamUser string = "IAM:U"
LowercaseIam string = "iam"
UppercaseIam string = "IAM"
LowercaseIamGroup string = "iam:g"
UppercaseIamGroup string = "IAM:g"
LowercaseIamRole string = "iam:r"
UppercaseIamRole string = "IAM:R"
LowercaseEc2Snapshot string = "ec2:S"
UppercaseEc2Snapshot string = "Ec2:S"
LowercaseEc2Image string = "ec2:i"
UppercaseEc2Image string = "Ec2:I"
LowercaseSQS string = "sqs"
UppercaseSQS string = "SQS"
LowercaseVPC string = "vpc"
UppercaseVPC string = "VPC"
LowercaseSubnet string = "subnet"
UppercaseSubnet string = "SUBNET"
LowercaseLamda string = "lambda"
UppercaseLamda string = "LAMBDA"
Help string = "help"
LowercaseH string = "h"
QuestionMark string = "?"
Quit string = "quit"
LowercaseQ string = "q"
UppercaseQ string = "Q"
QFactorial string = "q!"
Aliases string = "aliases"
Alias string = "alias"
LowercaseA string = "a"
Object string = "OBJ"
UserPolicy string = "User Policy"
UserGroupPolicy string = "User Group Policy"
RolePolicy string = "Role Policy"
GroupUsers string = "Group Users"
)
24 changes: 0 additions & 24 deletions internal/keys.go

This file was deleted.

41 changes: 19 additions & 22 deletions internal/model/registry.go
Original file line number Diff line number Diff line change
@@ -1,84 +1,81 @@
package model

import (
"github.com/one2nc/cloud-lens/internal"
"github.com/one2nc/cloud-lens/internal/dao"
"github.com/one2nc/cloud-lens/internal/render"
)

var Registry = map[string]ResourceMeta{
"ec2": {
internal.LowercaseEc2: {
DAO: &dao.EC2{},
Renderer: &render.EC2{},
},
"s3": {
internal.LowercaseS3: {
DAO: &dao.S3{},
Renderer: &render.S3{},
},
"sg": {
internal.LowercaseSg: {
DAO: &dao.SG{},
Renderer: &render.SG{},
},
"OBJ": {
internal.Object: {
DAO: &dao.BObj{},
Renderer: &render.BObj{},
},
"iam:u": {
internal.LowercaseIamUser: {
DAO: &dao.IAMU{},
Renderer: &render.IAMU{},
},
"iam:g": {
internal.LowercaseIamGroup: {
DAO: &dao.IAMUG{},
Renderer: &render.IAMUG{},
},
"iam:r": {
internal.LowercaseIamRole: {
DAO: &dao.IamRole{},
Renderer: &render.IamRole{},
},
"User Policy": {
internal.UserPolicy: {
DAO: &dao.IAMUP{},
Renderer: &render.IamUserPloicy{},
},
"ebs": {
internal.LowercaseEBS: {
DAO: &dao.EBS{},
Renderer: &render.EBS{},
},
"User Group Policy": {
internal.UserGroupPolicy: {
DAO: &dao.IAMUGP{},
Renderer: &render.IamUserGroupPloicy{},
},
"Role Policy": {
internal.RolePolicy: {
DAO: &dao.IamRolePloicy{},
Renderer: &render.IamRolePloicy{},
},
"Group Users": {
internal.GroupUsers: {
DAO: &dao.IamGroupUser{},
Renderer: &render.IamGroupUser{},
},
"ec2:s": {
internal.LowercaseEc2Snapshot: {
DAO: &dao.EC2S{},
Renderer: &render.EC2S{},
},
"ec2:i": {
internal.LowercaseEc2Image: {
DAO: &dao.EC2I{},
Renderer: &render.EC2I{},
},

"sqs": {
internal.LowercaseSQS: {
DAO: &dao.SQS{},
Renderer: &render.SQS{},
},

"vpc": {
internal.LowercaseVPC: {
DAO: &dao.VPC{},
Renderer: &render.VPC{},
},

"subnet": {
internal.LowercaseSubnet: {
DAO: &dao.Subnet{},
Renderer: &render.Subnet{},
},

"lambda": {
internal.LowercaseLamda: {
DAO: &dao.Lambda{},
Renderer: &render.Lambda{},
},
Expand Down
2 changes: 1 addition & 1 deletion internal/view/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ func NewApp() *App {
}

// TODO keep context param at first place always
func (a *App) Init(profiles, regions []string, ctx context.Context) error {
func (a *App) Init(ctx context.Context,profiles, regions []string) error {
ctx = context.WithValue(ctx, internal.KeyActiveProfile, profiles[0])
ctx = context.WithValue(ctx, internal.KeyActiveRegion, regions[0])
ctx = context.WithValue(ctx, internal.KeyApp, a)
Expand Down
28 changes: 15 additions & 13 deletions internal/view/registrar.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package view

import "github.com/one2nc/cloud-lens/internal"

func loadCustomViewers() MetaViewers {
m := make(MetaViewers, 5)
coreViewers(m)
Expand All @@ -8,43 +10,43 @@ func loadCustomViewers() MetaViewers {

func coreViewers(vv MetaViewers) {
// TODO create consts instead of hardcoded
vv["ec2"] = MetaViewer{
vv[internal.LowercaseEc2] = MetaViewer{
viewerFn: NewEC2,
}
vv["s3"] = MetaViewer{
vv[internal.LowercaseS3] = MetaViewer{
viewerFn: NewS3,
}
vv["sg"] = MetaViewer{
vv[internal.LowercaseSg] = MetaViewer{
viewerFn: NewSG,
}
vv["iam:u"] = MetaViewer{
vv[internal.LowercaseIamUser] = MetaViewer{
viewerFn: NewIAMU,
}
vv["ebs"] = MetaViewer{
vv[internal.LowercaseEBS] = MetaViewer{
viewerFn: NewEBS,
}
vv["iam:g"] = MetaViewer{
vv[internal.LowercaseIamGroup] = MetaViewer{
viewerFn: NewIAMUG,
}
vv["iam:r"] = MetaViewer{
vv[internal.LowercaseIamRole] = MetaViewer{
viewerFn: NewIamRole,
}
vv["ec2:s"] = MetaViewer{
vv[internal.LowercaseEc2Snapshot] = MetaViewer{
viewerFn: NewEC2S,
}
vv["ec2:i"] = MetaViewer{
vv[internal.LowercaseEc2Image] = MetaViewer{
viewerFn: NewEC2I,
}
vv["sqs"] = MetaViewer{
vv[internal.LowercaseSQS] = MetaViewer{
viewerFn: NewEC2I,
}
vv["vpc"] = MetaViewer{
vv[internal.LowercaseVPC] = MetaViewer{
viewerFn: NewVPC,
}
vv["subnet"] = MetaViewer{
vv[internal.LowercaseSubnet] = MetaViewer{
viewerFn: NewSubnet,
}
vv["lambda"] = MetaViewer{
vv[internal.LowercaseLamda] = MetaViewer{
viewerFn: NewLambda,
}
}

0 comments on commit a3cfae0

Please sign in to comment.