MCPcopy Create free account
hub / github.com/LanceLRQ/deer-executor / InitProblemWorkDir

Function InitProblemWorkDir

client/generate/problem.go:66–111  ·  view source on GitHub ↗

InitProblemWorkDir 创建一个题目工作目录

(c *cli.Context)

Source from the content-addressed store, hash-verified

64
65// InitProblemWorkDir 创建一个题目工作目录
66func InitProblemWorkDir(c *cli.Context) error {
67 workDir := c.Args().Get(0)
68 // 如果路径存在目录或者文件
69 if _, err := os.Stat(workDir); err == nil {
70 return errors.Errorf("work directory (%s) path exisis", workDir)
71 }
72 // 创建目录
73 if err := os.MkdirAll(workDir, 0775); err != nil {
74 return err
75 }
76 example := c.String("name")
77 if example != "" {
78 packageFile := path.Join("./lib/example", example)
79 // 检查题目包是否存在
80 yes, err := utils.IsProblemPackage(packageFile)
81 if err != nil {
82 return err
83 }
84 if !yes {
85 return errors.Errorf("not a problem package")
86 }
87 // 如果指定了对应的模板
88 if _, _, err := problems.ReadProblemInfo(packageFile, true, true, workDir); err != nil {
89 return err
90 }
91 } else {
92 // 创建文件夹
93 dirs := []string{"answers", "cases", "bin", "codes", "generators"}
94 for _, dirname := range dirs {
95 err := os.MkdirAll(path.Join(workDir, dirname), 0775)
96 if err != nil {
97 return err
98 }
99 }
100 /// 创建配置
101 config, err := makeProblmConfig()
102 if err != nil {
103 return err
104 }
105 // 写入到文件
106 if err = ioutil.WriteFile(path.Join(workDir, "problem.json"), []byte(utils.ObjectToJSONStringFormatted(config)), 0664); err != nil {
107 return err
108 }
109 }
110 return nil
111}

Callers

nothing calls this directly

Calls 6

IsProblemPackageFunction · 0.92
ReadProblemInfoFunction · 0.92
makeProblmConfigFunction · 0.85
ErrorfMethod · 0.80
StringMethod · 0.65

Tested by

no test coverage detected