使用GO为您的Flutter Project创建自定义目录和文件
#编程 #教程 #go #flutter

作为一名扑朔迷离的开发人员,必须一直为您的项目创建目录和文件确实很麻烦。根据您喜欢使用的体系结构,每个颤音项目通常都会具有类似的目录或文件。

在本教程中,我们将学习如何使用GO为您的新Flutter项目生成自定义目录和文件。 𧾻

什么是Golang? ð

golang是一种静态键入的编译编程语言,旨在简单,效率和易用性。它由Google工程师创建,并于2009年首次发布。Golang通常用于各种类型的应用程序,包括Web开发,系统编程,云服务,网络服务等。

我们将利用Golang的系统编程功能来创建所需的目录和文件。系统编程是软件开发的专业领域,专注于创建与基础硬件和操作系统紧密相互作用的程序。

设置Golang

如果您已经在系统上设置了SDK设置,则可以跳过此步骤。如果您是Golang的新手,则需要从其official website下载并安装SDK。 Golang SDK可用于MACOS,Linux和Windows。下载和安装SDK后,运行此命令以验证SDK是否已成功安装。

go version

这应该打印出您系统上当前安装的SDK版本。

重要包装

我们将利用Golang中一些内置包装。我们将使用的重要软件包之一是os软件包。该软件包允许我们将文件和目录作为实体操纵。

fmt软件包允许我们在GO中广泛打印和格式。


编写我们的代码ð—¾â»»

首先,我们将创建一个名为generator.go的新文件,该文件将包含我们程序的所有必要功能。

首先,我们导入所有必要的软件包:

package main

import(
   "fmt"
   "os"
)

var directories map[string][]string = map[string][string]{
   "features": {},
   "shared": {},
   "theme": {
     "colors.dart",
     "theme.dart",
     "styles.dart"
   },
  "utils": {
     "storage.dart",
     "utils.dart",
     "validator.dart"
  },
  "/features/auth": {},
  "features/auth/views": {},
}
  • import语句用于导入我们程序运行所需的所有必要软件包。

  • 我们创建了一个键值变量,名为map[string][]string类型的目录。键表示目录的名称,值表示要在目录中创建的文件列表。

func CreateDirectory(path string) error {
   _, err := os.Stat(path)

   if err == nil {
     return nil
   }

   if os.IsNotExist(err) {
     err := os.MkdirAll(path, os.ModePerm)
     if err != nil {
       return err
     }
   }

   return nil
}
  • 我们创建了一个名为CreateDirectory的函数,该函数将字符串path作为参数。 path字符串代表我们要创建所有自定义目录的父目录。
  • os.Stat函数用于获取我们目录的文件信息。
  • os.IsNotExist函数用于检查目录是否已经存在。如果不存在,请使用os.MkdirAll(path, os.ModePerm)函数创建一个新目录。
  • os.MkdirAll提出了两个论点。第一个参数是应创建目录的路径,第二个参数是创建目录所需的权限。
func CreateDartFile(path, filename string) error {
   _, err := os.Create(fmt.Sprintf("/%v/%v", path, filename))

   if err != nil {
     return err
   }

   return nil
}
  • 我们创建了一个名为CreateDartFile的新函数,该功能需要两个参数。第一个参数是应创建文件的路径,第二个参数代表文件名。
  • os.Create函数采用一个参数,该参数指定了应创建文件的目录。
  • fmt.Sprintf用于组合路径和文件名,然后返回字符串。
  • os.Create返回两个值。第一个值表示文件,第二个值如果未成功创建文件,则返回错误。
  • 我们检查os.Create功能是否会引发错误并将其返回到CreateDartFile函数。
  • 如果os.Create没有丢失错误,我们返回nil

接下来,我们将查看我们的main函数。

func main() {
  if len(os.Args) != 2 {
    fmt.Println("Please provide a parent directory")
    os.Exit(1)
  }

  parentPath := os.Args[1]

  for directory, files := range directories {
    err := CreateDirectory(fmt.Sprintf("/%v/%v", parentPath, directory))
    if err != nil {
       fmt.Printf("Failed to create directory: %v\n", directory)
    }

    for _, fileName := range files {
       err := CreateDartFile(fmt.Sprintf("/%v/%v", parentPath, directory), fileName)
       if err != nil {
         fmt.Printf("Failed to create file: %v\n", fileName)
       }
    }
  }

  fmt.Println("All directories & files generated successfully 🚀")
}
  • 当我们从终端运行go run时,使用os.Args函数来指定目录。该参数代表将创建我们所有自定义目录的父目录。
  • 创建一个新的变量parentPath,以从终端保存指定的目录。
  • 使用for循环通过目录变量迭代并使用您先前创建的CreateDirectory函数创建每个目录。
  • CreateDirectory采用一个参数,该参数代表应创建目录的完整路径。我们将parentPathdirectory字符串结合在一起以获取完整的路径。
  • 创建另一个for循环以通过目录映射中的每个文件迭代。
  • 使用我们之前创建的CreateDartFile函数来创建每个文件。将完整的路径和文件名作为参数传递给函数。

接下来,在您的文档文件夹中创建一个名为test_app的新的flutter项目。

Create flutter project

现在,我们需要运行我们的Generator.go文件以为我们的Flutter Project生成我们的自定义目录。打开终端并键入go run generator.go ~/documents/test_app/lib

Terminal

您应该看到消息“成功生成的所有目录和文件”。

Flutter project

是的!我们所有的自定义目录和文件均已成功生成。

结论ð

我们已经学会了如何为我们的Flutter项目生成自定义目录和文件。您可以调整此GO代码并使用它,但是必须为您的项目创建自定义目录或文件。