2222#define REMOTE_BUFSIZE 8
2323#define ASSET_BUFSIZE 8
2424
25- char opt_draft = 0 ;
26- char opt_prerelease = 0 ;
27- char * opt_remote ;
28- const char * opt_github_token = NULL ;
29- const char * * opt_assets ;
30-
3125const char * argv0 ;
3226const char * base_url = "https://api.github.com" ;
3327
3428int main (int argc , char * argv [])
3529{
3630 struct arguments args = parse_options (argc , argv );
37- printf ("draft: %s\npre: %s\ntok: %s\ngen: %s\nrem: %s\n" ,
38- args .draft ? "yes" : "no" ,
39- args .prerelease ? "yes" : "no" ,
40- args .token ,
41- args .generate_token ? "yes" : "no" ,
42- args .remote );
43- printf ("assets:\n" );
44- for (int i = 0 ; args .assets [i ]; i ++ )
45- printf ("%s\n" , args .assets [i ]);
46- return 0 ;
47-
4831 argv0 = argv [0 ];
49- int n_assets ;
50- /* int result = parse_options(argc, argv, &n_assets); */
51- /* if (result) */
52- /* return result; */
5332
5433 // initialize git
5534 git_libgit2_init ();
@@ -82,10 +61,10 @@ int main(int argc, char *argv[])
8261
8362 // set the preferred remote
8463 FILE * remote_file ;
85- if (opt_remote )
64+ if (args . remote )
8665 {
8766 // get from command-line option
88- if (git_remote_lookup (& preferred_remote , repo , opt_remote ))
67+ if (git_remote_lookup (& preferred_remote , repo , args . remote ))
8968 {
9069 h_git_error ();
9170 return 1 ;
@@ -200,13 +179,13 @@ int main(int argc, char *argv[])
200179 if (access (".hubrelease_message" , F_OK ) != -1 )
201180 {
202181 // user already wrote the message
203- if (opt_draft )
182+ if (args . draft )
204183 {
205184 fprintf (stderr , ERR "--draft set with pre-written release message\n" );
206185 return 1 ;
207186 }
208187 }
209- else if (opt_draft )
188+ else if (args . draft )
210189 {
211190 // write tag message to release message file
212191 FILE * release_message = fopen (".hubrelease_message" , "w" );
@@ -255,10 +234,10 @@ int main(int argc, char *argv[])
255234 }
256235
257236 // ensure token exists
258- if (!opt_github_token )
237+ if (!args . token )
259238 // not passed on command line
260- opt_github_token = getenv ("HUBRELEASE_GITHUB_TOKEN" );
261- if (!opt_github_token )
239+ args . token = getenv ("HUBRELEASE_GITHUB_TOKEN" );
240+ if (!args . token )
262241 {
263242 // not passed through env var
264243 fprintf (stderr , ERR "No GitHub token supplied\n" );
@@ -288,7 +267,7 @@ int main(int argc, char *argv[])
288267 // set headers
289268 struct curl_slist * chunk = NULL ;
290269 char * auth_header = malloc (MAX_HEADER * sizeof (char ));
291- sprintf (auth_header , "Authorization: token %s" , opt_github_token );
270+ sprintf (auth_header , "Authorization: token %s" , args . token );
292271 chunk = curl_slist_append (chunk , auth_header );
293272 curl_easy_setopt (curl , CURLOPT_HTTPHEADER , chunk );
294273
@@ -324,8 +303,8 @@ int main(int argc, char *argv[])
324303 "tag_name" , git_tag_name (head_tag ),
325304 "name" , name ,
326305 "body" , body ,
327- "draft" , opt_draft ,
328- "prerelease" , opt_prerelease );
306+ "draft" , args . draft ,
307+ "prerelease" , args . prerelease );
329308 char * data = json_dumps (data_json , JSON_INDENT (4 ));
330309 curl_easy_setopt (curl , CURLOPT_POSTFIELDS , data );
331310
@@ -378,7 +357,7 @@ int main(int argc, char *argv[])
378357 printf ("%s\n" , html_url );
379358
380359 // upload assets
381- if (n_assets > 0 )
360+ if (args . assets )
382361 {
383362 // get upload url
384363 json_t * upload_field = json_object_get (root , "upload_url" );
@@ -389,24 +368,24 @@ int main(int argc, char *argv[])
389368 base_upload_url [len - n ] = '\0' ;
390369
391370 // get asset files
392- for (int i = 0 ; i < n_assets ; i ++ )
371+ for (int i = 0 ; args . assets [ i ] ; i ++ )
393372 {
394- fprintf (stderr , INFO "Uploading asset %s\n" , opt_assets [i ]);
373+ fprintf (stderr , INFO "Uploading asset %s\n" , args . assets [i ]);
395374 struct stat asset_stat ;
396- if (stat (opt_assets [i ], & asset_stat ) == -1 )
375+ if (stat (args . assets [i ], & asset_stat ) == -1 )
397376 {
398- fprintf (stderr , ERR "Error with asset %s:\n" , opt_assets [i ]);
377+ fprintf (stderr , ERR "Error with asset %s:\n" , args . assets [i ]);
399378 perror (argv0 );
400379 continue ;
401380 }
402381 if (asset_stat .st_size == 0 )
403382 {
404- fprintf (stderr , ERR "Empty asset file: %s\n" , opt_assets [i ]);
383+ fprintf (stderr , ERR "Empty asset file: %s\n" , args . assets [i ]);
405384 return 1 ;
406385 }
407386
408- char * upload_url = malloc ((strlen (base_upload_url ) + strlen (opt_assets [i ]) + strlen ("?name=" )) * sizeof (char ));
409- sprintf (upload_url , "%s?name=%s" , base_upload_url , opt_assets [i ]);
387+ char * upload_url = malloc ((strlen (base_upload_url ) + strlen (args . assets [i ]) + strlen ("?name=" )) * sizeof (char ));
388+ sprintf (upload_url , "%s?name=%s" , base_upload_url , args . assets [i ]);
410389
411390 // sanitize url
412391 // TODO do this properly
@@ -438,7 +417,7 @@ int main(int argc, char *argv[])
438417 chunk = curl_slist_append (chunk , "Content-Type: application/gzip" );
439418
440419 char * auth_header = malloc (MAX_HEADER * sizeof (char ));
441- sprintf (auth_header , "Authorization: token %s" , opt_github_token );
420+ sprintf (auth_header , "Authorization: token %s" , args . token );
442421 chunk = curl_slist_append (chunk , auth_header );
443422 curl_easy_setopt (curl , CURLOPT_HTTPHEADER , chunk );
444423
@@ -453,7 +432,7 @@ int main(int argc, char *argv[])
453432 curl_easy_setopt (curl , CURLOPT_USERAGENT , "libcurl-agent/1.0" );
454433
455434 // tell curl to upload the file
456- FILE * asset_file = fopen (opt_assets [i ], "r" );
435+ FILE * asset_file = fopen (args . assets [i ], "r" );
457436
458437 curl_easy_setopt (curl , CURLOPT_UPLOAD , 1 );
459438 curl_easy_setopt (curl , CURLOPT_READDATA , asset_file );
@@ -501,72 +480,3 @@ int main(int argc, char *argv[])
501480 }
502481 }
503482}
504-
505- /* int parse_options(int argc, char *argv[], int *n_assets) */
506- /* { */
507- /* *n_assets = 0; */
508- /* int asset_bufsize = 0; */
509- /* opt_assets = malloc(asset_bufsize * sizeof(char*)); */
510- /* for (int i = 1; i < argc; i++) */
511- /* { */
512- /* if (strcmp(argv[i], "--draft") == 0) */
513- /* opt_draft = 1; */
514- /* if (strcmp(argv[i], "--prerelease") == 0) */
515- /* opt_prerelease = 1; */
516- /* if (strcmp(argv[i], "--token") == 0) */
517- /* { */
518- /* if (argv[i + 1][0] == '-' || !argv[i + 1]) */
519- /* { */
520- /* fprintf(stderr, ERR "Option %s requires argument\n", argv[i]); */
521- /* return 1; */
522- /* } */
523- /* char *arg_github_token = malloc(strlen(argv[i + 1]) * sizeof(char)); */
524- /* strcpy(arg_github_token, argv[i + 1]); */
525- /* opt_github_token = arg_github_token; */
526- /* } */
527- /* if (strcmp(argv[i], "--generate-token") == 0) */
528- /* { */
529- /* puts(github_generate_token()); */
530- /* return 0; */
531- /* } */
532- /* if (strcmp(argv[i], "--remote") == 0) */
533- /* { */
534- /* if (argv[i + 1][0] == '-' || !argv[i + 1]) */
535- /* { */
536- /* fprintf(stderr, ERR "Option %s requires argument\n", argv[i]); */
537- /* return 1; */
538- /* } */
539- /* opt_remote = malloc(strlen(argv[i + 1]) * sizeof(char)); */
540- /* strcpy(opt_remote, argv[i + 1]); */
541- /* } */
542- /* if (strcmp(argv[i], "--assets") == 0) */
543- /* { */
544- /* if (argv[i + 1][0] == '-' || !argv[i + 1]) */
545- /* { */
546- /* fprintf(stderr, ERR "Option %s requires argument\n", argv[i]); */
547- /* return 1; */
548- /* } */
549-
550- /* i++; */
551- /* for (i; i < argc && argv[i][0] != '-'; i++) */
552- /* { */
553- /* char dup = 0; */
554- /* for (int j = 0; j < *n_assets; j++) */
555- /* { */
556- /* if (strcmp(opt_assets[j], argv[i]) == 0) */
557- /* dup = 1; */
558- /* } */
559- /* if (dup) */
560- /* continue; */
561-
562- /* if (*n_assets + 1 > asset_bufsize) */
563- /* { */
564- /* asset_bufsize += ASSET_BUFSIZE; */
565- /* opt_assets = realloc(opt_assets, asset_bufsize * sizeof(char*)); */
566- /* } */
567- /* opt_assets[(*n_assets)++] = argv[i]; */
568- /* } */
569- /* } */
570- /* } */
571- /* return 0; */
572- /* } */
0 commit comments