Skip to content

Commit 5c3f357

Browse files
authored
Merge pull request #92 from Cloud-Code-AI/91-add-functionality-to-specify-output-folder
feat: Specify custom folder
2 parents 732b3bd + dd8b75c commit 5c3f357

File tree

5 files changed

+37
-13
lines changed

5 files changed

+37
-13
lines changed

.gitignore

+2-1
Original file line numberDiff line numberDiff line change
@@ -159,4 +159,5 @@ cython_debug/
159159
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
160160
#.idea/
161161
output/
162-
main
162+
main
163+
cloudstate-*

cmd/build.MD

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
## Steps to Build release binaries
2+
3+
```
4+
# For Windows 64-bit
5+
GOOS=windows GOARCH=amd64 go build -o cloudstate-windows.exe ./cmd/main.go
6+
7+
# For macOS 64-bit
8+
GOOS=darwin GOARCH=amd64 go build -o cloudstate-macos ./cmd/main.go
9+
10+
# For Linux 64-bit
11+
GOOS=linux GOARCH=amd64 go build -o cloudstate-linux ./cmd/main.go
12+
13+
```

cmd/main.go

+11-8
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ var (
1212
cloudProvider *string
1313
resourceType *string
1414
region *string
15+
outputFolder *string
1516
)
1617

1718
func main() {
@@ -29,10 +30,12 @@ func main() {
2930
cloudProvider = gatherCmd.String("provider", "", "The cloud provider to interact with (e.g., 'aws', 'gcp', 'azure')")
3031
resourceType = gatherCmd.String("resource", "", "The type of resource to fetch (e.g., 'vm', 'storage', 'network')")
3132
region = gatherCmd.String("region", "", "The region for which the data should be fetched (e.g 'us-east-1', 'ap-south-1')")
33+
outputFolder = gatherCmd.String("out-folder", "", "Specific folder in which data should be stored. Default: ./output/")
3234
gatherCmd.Parse(os.Args[2:])
3335
gather()
3436
case "report":
3537
cloudProvider = reportCmd.String("provider", "", "The cloud provider to interact with (e.g., 'aws', 'gcp', 'azure')")
38+
outputFolder = reportCmd.String("out-folder", "", "Specific folder in which data should be stored. Default: ./output/")
3639
reportCmd.Parse(os.Args[2:])
3740
generateReport()
3841
default:
@@ -52,11 +55,11 @@ func gather() {
5255
// Handle the cloud region based on the input
5356
switch *cloudProvider {
5457
case "aws":
55-
handleAWS(*region, *resourceType)
58+
handleAWS(*region, *resourceType, *outputFolder)
5659
case "gcp":
57-
handleGCP(*region, *resourceType)
60+
handleGCP(*region, *resourceType, *outputFolder)
5861
case "azure":
59-
handleAzure(*region, *resourceType)
62+
handleAzure(*region, *resourceType, *outputFolder)
6063
default:
6164
fmt.Println("Unsupported cloud provider")
6265
}
@@ -66,7 +69,7 @@ func generateReport() {
6669
// Handle the cloud region based on the input
6770
switch *cloudProvider {
6871
case "aws":
69-
awshandler.GenerateAWSReport()
72+
awshandler.GenerateAWSReport(*outputFolder)
7073
case "gcp":
7174
fmt.Println("Report generation not implemented yet for gcp")
7275
case "azure":
@@ -76,20 +79,20 @@ func generateReport() {
7679
}
7780
}
7881

79-
func handleAWS(region, resourceType string) {
82+
func handleAWS(region, resourceType string, outFolder string) {
8083
// Implement AWS-specific logic here
8184
fmt.Printf("Provider: AWS \nregion: %s \n", region)
82-
awshandler.StoreAWSData(region)
85+
awshandler.StoreAWSData(region, outFolder)
8386

8487
}
8588

86-
func handleGCP(region, resourceType string) {
89+
func handleGCP(region, resourceType string, outFolder string) {
8790
// Implement GCP-specific logic here
8891
fmt.Printf("Provider: GCP \n region: %s on resource: %s\n", region, resourceType)
8992

9093
}
9194

92-
func handleAzure(region, resourceType string) {
95+
func handleAzure(region, resourceType string, outFolder string) {
9396
// Implement Azure-specific logic here
9497
fmt.Printf("Provider: Azure \n region: %s on resource: %s\n", region, resourceType)
9598

services/awshandler/generatereport.go

+6-2
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,13 @@ import (
99
"github.com/Cloud-Code-AI/cloudstate/services/utils"
1010
)
1111

12-
func GenerateAWSReport() {
12+
func GenerateAWSReport(outFolder string) {
1313
// Get the most recent data stored for a provider
14-
dir := "./output/aws/"
14+
15+
if outFolder == "" {
16+
outFolder = "output"
17+
}
18+
dir := outFolder + "/aws/"
1519

1620
// Compiles and list all the stats in a single file.
1721
regionStats := make(map[string]map[string]interface{})

services/awshandler/initialize.go

+5-2
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ type BasicTemplate struct {
4343
Data interface{} `json:"data"`
4444
}
4545

46-
func StoreAWSData(region string) {
46+
func StoreAWSData(region string, outFolder string) {
4747

4848
var regions []string
4949

@@ -56,7 +56,10 @@ func StoreAWSData(region string) {
5656
}
5757

5858
// parentpath := "output/aws/" + time.Now().Format("2006-01-02T15:04:05") + "/"
59-
parentpath := "output/aws/"
59+
if outFolder == "" {
60+
outFolder = "output"
61+
}
62+
parentpath := outFolder + "/aws/"
6063

6164
for _, region := range regions {
6265
sdkConfig, err := config.LoadDefaultConfig(

0 commit comments

Comments
 (0)