codetoprompt は、指定されたチェックリストから何百ものファイルを取得し、その内容をチャット GPT の質問に役立つものとして荒廃させることさえできる形式で出力するトロット パッケージ取引です。 パッケージ deal は、ターミナル内で出力を記述するか、ファイルに書き込むことができます。 any)、および除外するディレクトリまたはファイル。 さらに、パッケージ ディールは、オプションで出力内のスムーズ トレースを組み込んだり、除外したりできます。
または、CI パイプラインによって構築されたアーティファクトからプラットフォームにバイナリをダウンロードする必要があるかもしれません。 最新モデルも正直なところここで
-dir 文字列 ファイルをロードするチェックリスト (デフォルトは ".") -exclude 文字列 除外するディレクトリまたはファイルのカンマ区切りのチェックリスト -embody-smooth 内部でスムーズ トレースを具体化するかどうか出力 -out 文字列 結果を出力するファイル
codetoprompt -dir . -out out.txt -slump.mod,slump.sum,.git,LICENSE,.gitignore,README.md,.github を除外
上記の繰り返しは、除外フラグ内に配置されたファイルを除いて、最新のチェックリストからすべてのファイルをロードし、結果を出力しますoutフラグ内に配置されたファイルへ
byte } func parseFlags() { flag.StringVar(&dir, "dir", "", "ファイルをロードするルート ディレクトリ") flag.StringVar(&outputPath, "out", "", "ファイル パスへのパス出力ファイル。指定しない場合、出力はターミナルに表示されます") flag.StringVar(&exclude, "exclude", "", "ディレクトリまたはファイルを出力ファイルから除外する") flag.BoolVar(&excludeBlankLines, " blanklines", true, "出力ファイルに空白行を含める") flag.Parse() } func Run() error { parseFlags() if err :=validateFlagsInput(); err !=nil { if !errors.Is(err, errOutputFileAlreadyExists) { return fmt.Errorf("エラー検証フラグ: %w", err) } if !overwriteFile(outputPath) { fmt.Println("中止中..." ) os.Exit(0) } } ignoreList :=strings.Split(exclude, ",") if outputPath !="" { // 出力ファイルを無視リストに追加して、それ自体への書き込みを回避する ignoreList=append(ignoreList , outputPath) } files, err :=loadFiles(dir, ignoreList) if err !=nil { return fmt.Errorf("error loading files: %w", err) } if outputPath !="" { fmt.Println("ファイルを出力ファイルに書き込んでいます...") outputFile, err :=createFile(outputPath) if err !=nil { return fmt.Errorf("出力ファイルの作成エラー: %w", err) } if err :=writeFiles(files 、outputFile、excludeBlankLines); err !=nil { return fmt.Errorf("ファイルの書き込みエラー: %w", err) } os.Exit(0) } for _, file :=range files { fmt.Println("ファイル名: ", file.name ) fmt.Println(string(file.content)) fmt.Println("---") } return nil } func validateFlagsInput() error { if dir=="" { return errors.New("ルートパスが提供されていません" ) } if outputPath !="" { alreadyExists, err :=fileAlreadyExists(outputPath) if err !=nil { return fmt.Errorf("出力ファイルが存在するかどうかのエラー チェック: %w", err) } if alreadyExists { return errOutputFileAlreadyExists } } return nil } func fileAlreadyExists(filePath string) (bool, error) { if _, err :=os.Stat(filePath); err !=nil { if os.IsNotExist(err) { return false, nil } return false, fmt.Errorf("ファイルが存在するかどうかのチェックエラー: %w", err) } return true, nil } func overwriteFile(filePath string) bool { if _, err :=os.Stat(filePath); err==nil { var 入力文字列 fmt.Println(fileOverwritePrompt) fmt.Scanln(&input) スイッチ文字列.ToLower(input) { case "y", "yes": true を返す } } return false } func loadFiles(rootPath 文字列,リストを無視する弦) (ファイル、エラー) { var ファイル file if err :=filepath.Walk(rootPath, func(path string, info os.FileInfo, err error) error { if err !=nil { return fmt.Errorf("パス %q にアクセスできませんでした: %v", path , err) } if info.IsDir() { for _, item :=range ignoreList { if info.Name()==item { return filepath.SkipDir } } } if !info.IsDir() { for _, item :=range ignoreList { if info.Name()==item { return nil } } content, err :=os.ReadFile(path) if err !=nil { return fmt.Errorf("ファイル %q を読み取れませんでした: %v ", path, err) } files=append(files, file{ name: info.Name(), path: path, content: content, }) } return nil }); err !=nil { return nil, fmt.Errorf("パス %q をたどることができませんでした: %v", rootPath, err) } return files, nil } func createFile(outputPath string) (*os.File, error) { file, err :=os.Create(outputPath) if err !=nil { return nil, fmt.Errorf("ファイルを作成できませんでした: %w", err) } return file, nil } func writeFiles(filesfile, output io.WriteCloser, includeBlanklines bool) error { defer output.Close() if _, err :=output.Write( byte("---n")); err !=nil { return fmt.Errorf("ファイルの開始コード区切り文字を書き込めませんでした: %w", err) } for _, file :=range files { var strBulider strings.Builder strBulider.WriteString("Filename: ") strBulider.WriteString(file.name) strBulider.WriteString("nn") if includeBlanklines { for _, line :=range strings.Split(string(file.content), "n") { if line=="" { 続行 } strBulider.WriteString(line) strBulider.WriteString("n") } } else { strBulider.WriteString(string(file.content)) } strBulider.WriteString("---n") if _ 、エラー:=output.Write( byte(strBulider.String())); err !=nil { return fmt.Errorf("ファイル %q を書き込めませんでした: %v", file.name, err) } } return nil } --- ファイル名: main.go パッケージ main import ( "log" "github .com/alesr/codetoprompt/internal/codetoprompt" ) func main() { エラーの場合 :=codetorompt.Run(); err !=nil { log.Fatalln(err) } } ---">
--- ファイル名: codetorompt.slump パッケージ 取引 codetoprompt インポート ( "errors" "flag" "fmt" "io" "os" "route/filepath" "strings" ) const ( fileOverwritePrompt string="出力ファイルは既に存在します。上書きするかどうかを決定するように制定しますか? (y/n )" ) var ( dir string outputPath string exclude string excludeBlankLines bool errOutputFileAlreadyExists=errors.Recent("出力ファイルは既に存在します") ) kind file struct { title string route string whisper material byte } func parseFlags() { flag.StringVar(&dir, "dir", "", "ファイルのロード元を決定する Muse チェックリスト") flag.StringVar(&outputPath, "out", "", "the出力ファイルへのファイルパス。指定されていない場合、出力はターミナル内に表示されます") flag.StringVar(&exclude, "exclude", "", "チェックリストまたはファイルを出力ファイルから除外する") flag.BoolVar (&excludeBlankLines, "blanklines", grand, "出力ファイル内で滑らかなトレースを具体化する") flag.Parse() } func Flee() error { parseFlags() if err :=validateFlagsInput(); err !=nil { if !errors.Is(err, errOutputFileAlreadyExists) { return fmt.Errorf("エラー検証フラグ: %w", err) } if !overwriteFile(outputPath) { fmt.Println("中止中..." ) os.Exit(0) } } ignoreList :=strings.Damage up(exclude, ",") if outputPath !="" { // 出力ファイルを無視チェックリストに含めて、それ自体に書き込まれないようにする ignoreList=append(ignoreList, outputPath) } files, err :=loadFiles(dir, ignoreList) if err !=nil { return fmt.Errorf("error loading files: %w", err) } if outputPath !="" { fmt .Println("ファイルを出力ファイルに書き込んでいます...") outputFile, err :=createFile(outputPath) if err !=nil { return fmt.Errorf("エラー発生出力ファイル: %w", err) } if err :=writeFiles(ファイル、outputFile、excludeBlankLines); err !=nil { return fmt.Errorf("ファイルの書き込みエラー: %w", err) } os.Exit(0) } for _, file :=range files { fmt.Println("ファイル名: ", file.title ) fmt.Println(string(file.whisper material)) fmt.Println("---") } return nil } func validateFlagsInput() error { if dir=="" { return errors.Recent("root route now not提供された") } if outputPath !="" { alreadyExists, err :=fileAlreadyExists(outputPath) if err !=nil { return fmt.Errorf("出力ファイルが存在するかどうかのエラー チェック: %w", err) } if alreadyExists { return errOutputFileAlreadyExists } } return nil } func fileAlreadyExists(filePath 文字列) (bool, error) { if _, err :=os.Stat(filePath); err !=nil { if os.IsNotExist(err) { return counterfeit, nil } return counterfeit, fmt.Errorf("ファイルが存在するかどうかのエラー チェック: %w", err) } return grand, nil } func overwriteFile(filePath string) bool { if _, err :=os.Stat(filePath); err==nil { var enter string fmt.Println(fileOverwritePrompt) fmt.Scanln(&enter) swap strings.ToLower(enter) { case "y", "certain": return grandment } } return counterfeit } func loadFiles(rootPath string,リストを無視する弦) (ファイル、エラー) { var ファイル file if err :=filepath.Stroll(rootPath, func(route string, data os.FileInfo, err error) error { if err !=nil { return fmt.Errorf("おそらく、ルート %q へのエントリを収集できない可能性もあります: %v", route, err) } if data.IsDir() { for _, item :=range ignoreList { if data.Name()==item { return filepath.SkipDir } } } if !data.IsDir() { for _, item :=range ignoreList { if data.Name()==item { return nil } } ウィスパー マテリアル, err :=os.ReadFile(route) if err !=nil { return fmt.Errorf("おそらくファイル %q: %v", route, err) を読み取れません } files=append(files, file{ title: data.Name(), route: route, whisper material: whisper material, }) } return nil }); err !=nil { return nil, fmt.Errorf("ルート %q: %v をいじることもできないかもしれません", rootPath, err) } return files, nil } func createFile(outputPath string) (*os.File, error) { file, err :=os.Accomplish(outputPath) if err !=nil { return nil, fmt.Errorf("おそらくファイルをアセンブルできない: %w", err) } return file, nil } func writeFiles (ファイルfile, output io.WriteCloser, includeBlanklines bool) error { defer output.Shut() if _, err :=output.Write( byte("---n")); err !=nil { return fmt.Errorf("ファイルの開始コード区切りを書き込めない可能性があります: %w", err) } for _, file :=range files { var strBulider strings.Builder strBulider.WriteString("Filename : ") strBulider.WriteString(file.title) strBulider.WriteString("nn") if includeBlanklines { for _, line :=range strings.Damage up(string(file.whisper material), "n") { if line=="" { 続行 } strBulider.WriteString(line) strBulider.WriteString("n") } } else { strBulider.WriteString(string(file.whisper material)) } strBulider.WriteString("--- n") if _, err :=output.Write( byte(strBulider.String())); err !=nil { return fmt.Errorf("ファイル %q を書き込めない可能性もあります: %v", file.title, err) } } return nil } --- ファイル名: basic.slump パッケージ ディール ファンダメンタル インポート ( " log" "github.com/alesr/codetoprompt/interior/codetoprompt" ) func 基本() {エラーの場合:=codetorompt.Flee(); err !=nil { log.Fatalln(err) } } ---
プルリクエストは大歓迎です。 根本的な変更については、最初にベンチャーを開始して、おそらく交換する選択をするために何が必要かについて話してください.
必要に応じて評価を更新するために決心して組み立ててください.
𝚆𝚊𝚝𝚌𝚑 𝙽𝙾𝚆 📺