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

Function UnpackProblemPackage

client/packmgr/package.go:78–118  ·  view source on GitHub ↗

UnpackProblemPackage 题目包解包

(c *cli.Context)

Source from the content-addressed store, hash-verified

76
77// UnpackProblemPackage 题目包解包
78func UnpackProblemPackage(c *cli.Context) error {
79 packageFile := c.Args().Get(0)
80 workDir := c.Args().Get(1)
81 // 如果路径存在目录或者文件
82 if _, err := os.Stat(workDir); err == nil {
83 return errors.Errorf("work directory (%s) path exisis", workDir)
84 }
85 // 创建目录
86 if err := os.MkdirAll(workDir, 0775); err != nil {
87 return err
88 }
89 if c.Bool("no-validate") {
90 log.Println("[warn] package validation had been disabled!")
91 }
92 // 检查是否为题目包
93 isDeerPack, err := utils.IsProblemPackage(packageFile)
94 if err != nil {
95 return err
96 }
97 isZip, err := utils.IsZipFile(packageFile)
98 if err != nil {
99 return err
100 }
101 // 解包
102 if isDeerPack {
103 if _, _, err := problems.ReadProblemInfo(packageFile, true, !c.Bool("no-validate"), workDir); err != nil {
104 return err
105 }
106 } else if isZip {
107 if _, _, err := problems.ReadProblemInfoZip(packageFile, true, !c.Bool("no-validate"), workDir); err != nil {
108 return err
109 }
110 // clean meta file
111 _ = os.Remove(path.Join(workDir, ".sign"))
112 _ = os.Remove(path.Join(workDir, ".gpg"))
113 } else {
114 return errors.Errorf("not a deer-executor problem package file")
115 }
116 fmt.Println("Done.")
117 return nil
118}
119
120// ReadProblemInfo 访问题目包信息
121func ReadProblemInfo(c *cli.Context) error {

Callers

nothing calls this directly

Calls 5

IsProblemPackageFunction · 0.92
IsZipFileFunction · 0.92
ReadProblemInfoFunction · 0.92
ReadProblemInfoZipFunction · 0.92
ErrorfMethod · 0.80

Tested by

no test coverage detected