MCPcopy Create free account
hub / github.com/exercism/cli / runSubmit

Function runSubmit

cmd/submit.go:61–124  ·  view source on GitHub ↗
(cfg config.Config, flags *pflag.FlagSet, args []string)

Source from the content-addressed store, hash-verified

59}
60
61func runSubmit(cfg config.Config, flags *pflag.FlagSet, args []string) error {
62 if err := validateUserConfig(cfg.UserViperConfig); err != nil {
63 return err
64 }
65
66 ctx := newSubmitCmdContext(cfg.UserViperConfig, flags)
67
68 if err := ctx.validator.filesExistAndNotADir(args); err != nil {
69 return err
70 }
71
72 submitPaths, err := ctx.evaluatedSymlinks(args)
73 if err != nil {
74 return err
75 }
76
77 submitPaths = ctx.removeDuplicatePaths(submitPaths)
78
79 if err = ctx.validator.filesBelongToSameExercise(submitPaths); err != nil {
80 return err
81 }
82
83 exercise, err := ctx.exercise(submitPaths[0])
84 if err != nil {
85 return err
86 }
87
88 if err = ctx.migrateLegacyMetadata(exercise); err != nil {
89 return err
90 }
91
92 if err = ctx.validator.fileSizesWithinMax(submitPaths); err != nil {
93 return err
94 }
95
96 documents, err := ctx.documents(submitPaths, exercise)
97 if err != nil {
98 return err
99 }
100
101 if err = ctx.validator.submissionNotEmpty(documents); err != nil {
102 return err
103 }
104
105 metadata, err := ctx.metadata(exercise)
106 if err != nil {
107 return err
108 }
109
110 if err := ctx.validator.metadataMatchesExercise(metadata, exercise); err != nil {
111 return err
112 }
113
114 if err := ctx.validator.isRequestor(metadata); err != nil {
115 return err
116 }
117
118 if err := ctx.submit(metadata, documents); err != nil {

Callers 15

submit.goFile · 0.85
TestSubmitWithoutTokenFunction · 0.85
TestSubmitFilesAndDirFunction · 0.85
TestDuplicateFilesFunction · 0.85
TestSubmitFilesFunction · 0.85
TestSubmitWithEmptyFileFunction · 0.85

Calls 15

validateUserConfigFunction · 0.85
newSubmitCmdContextFunction · 0.85
filesExistAndNotADirMethod · 0.80
evaluatedSymlinksMethod · 0.80
removeDuplicatePathsMethod · 0.80
exerciseMethod · 0.80
migrateLegacyMetadataMethod · 0.80
fileSizesWithinMaxMethod · 0.80
documentsMethod · 0.80
submissionNotEmptyMethod · 0.80

Tested by 15

TestSubmitWithoutTokenFunction · 0.68
TestSubmitFilesAndDirFunction · 0.68
TestDuplicateFilesFunction · 0.68
TestSubmitFilesFunction · 0.68
TestSubmitWithEmptyFileFunction · 0.68
TestSubmitOnlyEmptyFileFunction · 0.68