github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/cmd/distpack/archive.go (about)

     1  // Copyright 2023 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package main
     6  
     7  import (
     8  	"github.com/shogo82148/std/io/fs"
     9  	"github.com/shogo82148/std/time"
    10  )
    11  
    12  // Archiveは、書き込むためのアーカイブを表します:ファイルの集合体です。
    13  // ディレクトリはファイルに含まれており、明示的にリストされていません。
    14  type Archive struct {
    15  	Files []File
    16  }
    17  
    18  // Fileはアーカイブに書き込む単一のファイルを表します。
    19  type File struct {
    20  	Name string
    21  	Time time.Time
    22  	Mode fs.FileMode
    23  	Size int64
    24  	Src  string
    25  }
    26  
    27  // Infoはファイルに関するFileInfoを返します。tar.FileInfoHeaderやzip.FileInfoHeaderと組み合わせて使用します。
    28  func (f *File) Info() fs.FileInfo
    29  
    30  // NewArchiveはディレクトリdirに含まれるすべてのファイルを含む新しいアーカイブを返します。
    31  // アーカイブはAddやFilterなどのメソッドを使って後から修正することができます。
    32  func NewArchive(dir string) (*Archive, error)
    33  
    34  // Addは指定された名前と情報を持つファイルをアーカイブに追加します。
    35  // ファイルの内容はオペレーティングシステムのファイルsrcから取得します。
    36  // 1回以上Addを呼び出した後、アーカイブのファイルを再ソートするためにSortを呼び出す必要があります。
    37  func (a *Archive) Add(name, src string, info fs.FileInfo)
    38  
    39  // Sort sorts the files in the archive.
    40  // It is only necessary to call Sort after calling Add or RenameGoMod.
    41  // NewArchive returns a sorted archive, and the other methods
    42  // preserve the sorting of the archive.
    43  func (a *Archive) Sort()
    44  
    45  // CloneはArchiveのコピーを返します。
    46  // コピーに対して行われるAddやFilterなどのメソッド呼び出しは、元のデータに影響を与えません。
    47  // また、元のデータに対する呼び出しも、コピーには影響しません。
    48  func (a *Archive) Clone() *Archive
    49  
    50  // AddPrefixはアーカイブ内のすべてのファイル名に接頭辞を追加します。
    51  func (a *Archive) AddPrefix(prefix string)
    52  
    53  // Filterはkeep(name)がfalseを返すアーカイブからファイルを除外します。
    54  func (a *Archive) Filter(keep func(name string) bool)
    55  
    56  // SetModeはアーカイブ内のすべてのファイルのモードを変更します
    57  // モードは(name, m)になります。ここで、mはファイルの現在のモードです。
    58  func (a *Archive) SetMode(mode func(name string, m fs.FileMode) fs.FileMode)
    59  
    60  // Removeはアーカイブから任意のパターンにマッチするファイルを削除します。
    61  // パターンはpath.Matchの文法を使用しており、**/で始まるか/**で終わることができます。
    62  // これにより、メインのマッチングの前や後に任意のパス要素(パス要素がない場合も含む)がマッチします。
    63  func (a *Archive) Remove(patterns ...string)
    64  
    65  // SetTimeはアーカイブ内のすべてのファイルの変更時刻をtに設定します。
    66  func (a *Archive) SetTime(t time.Time)
    67  
    68  // RenameGoModはアーカイブ内のgo.modファイルを_go.modに名前変更します。
    69  // モジュール形式では、他のgo.modファイルを含むことができないため、この名前変更が必要です。
    70  func (a *Archive) RenameGoMod()