88 "mime/multipart"
99 "os"
1010 "path/filepath"
11- "strings"
1211
1312 "github.com/exercism/cli/api"
1413 "github.com/exercism/cli/config"
@@ -125,6 +124,8 @@ func runSubmit(cfg config.Config, flags *pflag.FlagSet, args []string) error {
125124 exerciseDir = dir
126125 }
127126
127+ exercise := workspace .NewExerciseFromDir (exerciseDir )
128+
128129 solution , err := workspace .NewSolution (exerciseDir )
129130 if err != nil {
130131 return err
@@ -143,7 +144,7 @@ func runSubmit(cfg config.Config, flags *pflag.FlagSet, args []string) error {
143144 return fmt .Errorf (msg , BinaryName , solution .Exercise , solution .Track )
144145 }
145146
146- paths : = make ([]string , 0 , len (args ))
147+ exercise . Documents = make ([]workspace. Document , 0 , len (args ))
147148 for _ , file := range args {
148149 // Don't submit empty files
149150 info , err := os .Stat (file )
@@ -161,10 +162,14 @@ func runSubmit(cfg config.Config, flags *pflag.FlagSet, args []string) error {
161162 fmt .Fprintf (Err , msg , file )
162163 continue
163164 }
164- paths = append (paths , file )
165+ doc , err := workspace .NewDocument (exercise .Filepath (), file )
166+ if err != nil {
167+ return err
168+ }
169+ exercise .Documents = append (exercise .Documents , doc )
165170 }
166171
167- if len (paths ) == 0 {
172+ if len (exercise . Documents ) == 0 {
168173 msg := `
169174
170175 No files found to submit.
@@ -176,18 +181,14 @@ func runSubmit(cfg config.Config, flags *pflag.FlagSet, args []string) error {
176181 body := & bytes.Buffer {}
177182 writer := multipart .NewWriter (body )
178183
179- for _ , path := range paths {
180- file , err := os .Open (path )
184+ for _ , doc := range exercise . Documents {
185+ file , err := os .Open (doc . Filepath () )
181186 if err != nil {
182187 return err
183188 }
184189 defer file .Close ()
185190
186- dirname := fmt .Sprintf ("%s%s%s" , string (os .PathSeparator ), solution .Exercise , string (os .PathSeparator ))
187- pieces := strings .Split (path , dirname )
188- filename := pieces [len (pieces )- 1 ]
189-
190- part , err := writer .CreateFormFile ("files[]" , filename )
191+ part , err := writer .CreateFormFile ("files[]" , doc .Path ())
191192 if err != nil {
192193 return err
193194 }
0 commit comments