How to Get list of All Environment Variables’ key Used in a Golang Module or Project

In this article we’re about to write a program which helps us to get the all environment variables which is used in your project.

Why I created this program?
So recently in my current company we’ve decided to separate the modules which is not dependen…


This content originally appeared on DEV Community and was authored by kuldeep_singh

In this article we're about to write a program which helps us to get the all environment variables which is used in your project.

Why I created this program?
So recently in my current company we've decided to separate the modules which is not dependent on anycode, because the project structure was become larger that's why we decided to separate modules.

We moved code successfully but now comes problem how will you gonna get how many environment variables that separated module needed to run without causing any runtime issue.

So we decided to write a script to get the list of used environment variables used in that module.

How we are going to achieve this let's see the steps we needed to get the list of environment variables from module

  1. We're about to use command line argument which is going to be path of the module or project
  2. Reading module repository recursively using the filepath.Walk() function and only extracting the golang files full path.
  3. Here comes the main part, we're going to use regular expression for that because we know pattern of accessing environment variables in golang which is os.Getenv() function.

So let's start Writing Code Now:

Step 1.



    dirPath := os.Args[1]

    if &dirPath == nil {
        fmt.Println("Argument can't be nil..")
        os.Exit(2)
    }

Step 2.


err := filepath.Walk(dirPath,
        func(path string, d os.FileInfo, err error) error {
            if err != nil {
                return err
            }

            f := strings.Split(d.Name(), ".")
            if f[len(f)-1] == "go" {
                dir = append(dir, path)
            }
            return nil
        })
    if err != nil {
        fmt.Println("Error to open directries..")
        return
    }

Step 3.


for _, f := range dir {
        file, err := os.Open(f)
        if err != nil {
            e := ErrorArray{
                Err:  err,
                File: f,
            }
            ErrArr = append(ErrArr, e)
        }

        scanner := bufio.NewScanner(file)
        scanner.Split(bufio.ScanLines)
        for scanner.Scan() {
            re := regexp.MustCompile(`os.Getenv(.*)`)
            en := re.FindString(scanner.Text())
            if len(en) == 0 {
                continue
            }
            if strings.Contains(en, "+") {
                n := strings.Split(en, "+")
                for _, v := range n {
                    if strings.Contains(v, "os.Getenv") {
                        str := Replaced(v)
                        _, exists := MapArr[str]
                        if exists {
                            MapArr[str]++
                            continue
                        }
                        MapArr[str] = 1
                    }

                }
                continue
            } else if strings.Contains(en, ",") {
                n := strings.Split(en, ",")
                for _, v := range n {
                    if strings.Contains(v, "os.Getenv") {
                        str := Replaced(v)
                        _, exists := MapArr[str]
                        if exists {
                            MapArr[str]++
                            continue
                        }
                        MapArr[str] = 1
                    }

                }
                continue
            }
            str := Replaced(en)
            _, exists := MapArr[str]
            if exists {
                MapArr[str]++
                continue
            }
            MapArr[str] = 1
        }
        file.Close()
    }

If Have Any Queries Then Lemme Know
Read More : https://kdsingh4.blogspot.com/2021/10/how-to-get-list-of-all-environment.html

Also Subscribe My Channel To Support Me : https://www.youtube.com/channel/UCXhmNqWQ50zitqIdTgS7s8Q


This content originally appeared on DEV Community and was authored by kuldeep_singh


Print Share Comment Cite Upload Translate Updates
APA

kuldeep_singh | Sciencx (2021-10-09T09:29:32+00:00) How to Get list of All Environment Variables’ key Used in a Golang Module or Project. Retrieved from https://www.scien.cx/2021/10/09/how-to-get-list-of-all-environment-variables-key-used-in-a-golang-module-or-project/

MLA
" » How to Get list of All Environment Variables’ key Used in a Golang Module or Project." kuldeep_singh | Sciencx - Saturday October 9, 2021, https://www.scien.cx/2021/10/09/how-to-get-list-of-all-environment-variables-key-used-in-a-golang-module-or-project/
HARVARD
kuldeep_singh | Sciencx Saturday October 9, 2021 » How to Get list of All Environment Variables’ key Used in a Golang Module or Project., viewed ,<https://www.scien.cx/2021/10/09/how-to-get-list-of-all-environment-variables-key-used-in-a-golang-module-or-project/>
VANCOUVER
kuldeep_singh | Sciencx - » How to Get list of All Environment Variables’ key Used in a Golang Module or Project. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2021/10/09/how-to-get-list-of-all-environment-variables-key-used-in-a-golang-module-or-project/
CHICAGO
" » How to Get list of All Environment Variables’ key Used in a Golang Module or Project." kuldeep_singh | Sciencx - Accessed . https://www.scien.cx/2021/10/09/how-to-get-list-of-all-environment-variables-key-used-in-a-golang-module-or-project/
IEEE
" » How to Get list of All Environment Variables’ key Used in a Golang Module or Project." kuldeep_singh | Sciencx [Online]. Available: https://www.scien.cx/2021/10/09/how-to-get-list-of-all-environment-variables-key-used-in-a-golang-module-or-project/. [Accessed: ]
rf:citation
» How to Get list of All Environment Variables’ key Used in a Golang Module or Project | kuldeep_singh | Sciencx | https://www.scien.cx/2021/10/09/how-to-get-list-of-all-environment-variables-key-used-in-a-golang-module-or-project/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.