Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // ConfigCommand ... ConfigCommand = &cobra.Command{ Use: "config", Aliases: []string{"c"}, Short: "设置答题配置", Run: func(cmd *cobra.Command, args []string) { xcolor.Success(internal.NewApp().Render()) }, } // ConfigPathCommand ... ConfigPathCommand = &cobra.Command{ Use: "path", Short: "答题配置: 设置答题文件生成目录", Run: func(cmd *cobra.Command, args []string) { if len(args) == 0 { xcolor.Fail(config.SymbolError, "请输入答题文件生成目录, e.g. leet config path ~/leet") return } app := internal.NewApp() if err := app.SetPath(args[0]); err != nil { xcolor.Fail(config.SymbolError, err.Error()) return } xcolor.Success(app.Render()) }, } // ConfigLangCommand ... ConfigLangCommand = &cobra.Command{ Use: "lang", Short: "答题配置: 设置答题文件默认语言", Run: func(cmd *cobra.Command, args []string) { if len(args) == 0 { xcolor.Fail(config.SymbolError, "答题文件默认语言, e.g. leet config lang golang") return } app := internal.NewApp() if err := app.SetLang(args[0]); err != nil { xcolor.Fail(config.SymbolError, err.Error()) return } xcolor.Success(app.Render()) }, } )
View Source
var ( // ListCommand ... ListCommand = &cobra.Command{ Use: "list", Aliases: []string{"l"}, Short: "查询答题列表, e.g. leet list two-sum", Run: func(cmd *cobra.Command, args []string) { defer func(begin time.Time) { xcolor.Success( config.SymbolTime, fmt.Sprintf("耗时: %s", time.Now().Sub(begin).String()), ) }(time.Now()) list, err := internal.NewApp().GetQuestionList() if err != nil { xcolor.Fail(config.SymbolError, err.Error()) return } matchs := make([][]interface{}, 0) text, num := "", int64(0) if len(args) > 0 { text, num = args[0], int64(xconvert.ToUint(args[0])) } index := 1 for _, v := range list { if strings.Contains(v.Fid, text) || strings.Contains(v.Title, text) || strings.Contains(v.Slug, text) || v.Qid == num { matchs = append(matchs, []interface{}{ index, v.Fid, v.Title, v.Slug, v.Level.String(), }) index++ } } xcolor.Success(xtable.New(matchs).Style(xtable.Dashed).Border(true).Header([]string{ "#", "ID", "标题", "标识", "难度", }).Text()) }, } )
View Source
var ( // QuestionCommand ... QuestionCommand = &cobra.Command{ Use: "question", Aliases: []string{"q"}, Short: "生成答题文件, e.g. leet question two-sum", Run: func(cmd *cobra.Command, args []string) { if len(args) == 0 { xcolor.Fail(config.SymbolError, "请输入题目标识或ID") return } defer func(begin time.Time) { xcolor.Success( config.SymbolTime, fmt.Sprintf("耗时: %s", time.Now().Sub(begin).String()), ) }(time.Now()) app := internal.NewApp() list, err := app.GetQuestionList() if err != nil { xcolor.Fail(config.SymbolError, err.Error()) return } question := &config.Question{} text, num := args[0], int64(xconvert.ToUint(args[0])) for _, v := range list { if v.Slug == text || v.Qid == num { question = v break } } if question.Qid == 0 { xcolor.Fail(config.SymbolError, "未匹配到题目") return } xcolor.Success( config.SymbolNotice, fmt.Sprintf("匹配题目: %d. %s (%s)", question.Qid, question.Title, question.Link), ) detail, err := app.GetQuestionDetail(question.Slug) if err != nil { xcolor.Fail(config.SymbolError, err.Error()) return } question.Detail = detail lang := "" if app.Lang != "" && xutil.IsContains(detail.LangList, app.Lang) { lang = app.Lang } else { xcolor.Success( config.SymbolNotice, fmt.Sprintf("支持的编程语言是: [%s]", strings.Join(detail.LangList, ", ")), ) line := liner.NewLiner() defer line.Close() line.SetCtrlCAborts(true) line.SetCompleter(func(line string) []string { list := make([]string, 0) for _, v := range detail.LangList { if strings.HasPrefix(v, strings.ToLower(line)) { list = append(list, v) } } return list }) text, err := line.Prompt(config.SymbolNotice + " 输入编程语言: ") if err == liner.ErrPromptAborted { os.Exit(0) } if !xutil.IsContains(detail.LangList, text) { xcolor.Fail(config.SymbolError, "无效的编程语言") return } lang = text } xcolor.Success(config.SymbolNotice, fmt.Sprintf("使用的编程语言是: %s", lang)) if err := app.GenerateQuestion(question, app.Path, lang); err != nil { xcolor.Fail(config.SymbolError, err.Error()) return } xcolor.Success(config.SymbolSuccess, "生成答题文件成功") }, } )
View Source
var ( // RecordCommand ... RecordCommand = &cobra.Command{ Use: "record", Aliases: []string{"r"}, Short: "生成答题纪录文件", Run: func(cmd *cobra.Command, args []string) { defer func(begin time.Time) { xcolor.Success( config.SymbolTime, fmt.Sprintf("耗时: %s", time.Now().Sub(begin).String()), ) }(time.Now()) app := internal.NewApp() list, err := app.GetQuestionList() if err != nil { xcolor.Fail(config.SymbolError, err.Error()) return } if err := app.GenerateRecord(list, app.Path); err != nil { xcolor.Fail(config.SymbolError, err.Error()) return } xcolor.Success(config.SymbolSuccess, "生成答题纪录文件成功") }, } )
View Source
var ( // TagCommand ... TagCommand = &cobra.Command{ Use: "tag", Aliases: []string{"t"}, Short: "生成答题标签文件", Run: func(cmd *cobra.Command, args []string) { defer func(begin time.Time) { xcolor.Success( config.SymbolTime, fmt.Sprintf("耗时: %s", time.Now().Sub(begin).String()), ) }(time.Now()) app := internal.NewApp() tagList, err := app.GetTagList() if err != nil { xcolor.Fail(config.SymbolError, err.Error()) return } tagMap, err := app.GetTagQuestionMap(app) if err != nil { xcolor.Fail(config.SymbolError, err.Error()) return } if err := app.GenerateTag(tagList, tagMap, app.Path); err != nil { xcolor.Fail(config.SymbolError, err.Error()) return } xcolor.Success(config.SymbolSuccess, "生成答题标签文件成功") }, } )
Functions ¶
This section is empty.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.