MCPcopy Create free account
hub / github.com/SignTools/SignTools / writeArchive

Method writeArchive

src/storage/job.go:30–85  ·  view source on GitHub ↗
(returnJobId string, writer io.Writer)

Source from the content-addressed store, hash-verified

28}
29
30func (j *signJob) writeArchive(returnJobId string, writer io.Writer) error {
31 app, ok := Apps.Get(j.appId)
32 if !ok {
33 return errors.New("invalid app id")
34 }
35 profile, ok := Profiles.GetById(j.profileId)
36 if !ok {
37 return errors.New("invalid profile id")
38 }
39 w := tar.NewWriter(writer)
40 defer w.Close()
41 files, err := profile.GetFiles()
42 if err != nil {
43 return errors.WithMessage(err, "get profile files")
44 }
45 files = append(files, []fileGetter{
46 {name: "id.txt", f2: func() (string, error) { return returnJobId, nil }},
47 {name: "args.txt", f2: func() (string, error) { return app.GetString(AppSignArgs) }},
48 {name: "user_bundle_id.txt", f2: func() (string, error) { return app.GetString(AppUserBundleId) }},
49 }...)
50 if bundleName, err := app.GetString(AppBundleName); err == nil {
51 files = append(files, fileGetter{name: "bundle_name.txt", f2: func() (string, error) { return bundleName, nil }})
52 } else if !os.IsNotExist(err) {
53 return err
54 }
55 if tweaks, err := app.ReadDir(TweaksDir); err == nil {
56 if err := w.WriteHeader(&tar.Header{
57 Name: string(TweaksDir),
58 Typeflag: tar.TypeDir,
59 Mode: 0700,
60 }); err != nil {
61 return err
62 }
63 for _, tweak := range tweaks {
64 tweakPath := FSName(path.Join(string(TweaksDir), tweak.Name()))
65 files = append(files, []fileGetter{
66 {name: string(tweakPath), f1: func() (ReadonlyFile, error) { return app.GetFile(tweakPath) }},
67 }...)
68 }
69 } else if !os.IsNotExist(err) {
70 return err
71 }
72
73 for _, file := range files {
74 if err := tarPackage(w, &file); err != nil {
75 // sabotage the archive to nudge the client that something is wrong
76 w.WriteHeader(&tar.Header{
77 Name: "ERROR",
78 Mode: 0600,
79 Size: 1024,
80 })
81 return errors.WithMessage(err, "tar package")
82 }
83 }
84 return nil
85}
86
87func tarPackage(w *tar.Writer, fileGen *fileGetter) error {

Callers 1

TakeLastJobMethod · 0.80

Calls 9

FSNameTypeAlias · 0.85
tarPackageFunction · 0.85
NewMethod · 0.80
GetFilesMethod · 0.65
GetStringMethod · 0.65
ReadDirMethod · 0.65
GetFileMethod · 0.65
GetMethod · 0.45
GetByIdMethod · 0.45

Tested by

no test coverage detected