UnpackProblemPackage 题目包解包
(c *cli.Context)
| 76 | |
| 77 | // UnpackProblemPackage 题目包解包 |
| 78 | func 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 访问题目包信息 |
| 121 | func ReadProblemInfo(c *cli.Context) error { |
nothing calls this directly
no test coverage detected