1:- module(sourcehut_main,
    2          []).    3
    4:- use_module(library(optparse)).    5:- use_module(library(http/json)).    6:- use_module(git).    7
    8:- initialization(main, main).    9
   10main(Argv) :-
   11    OptSpec =
   12    [
   13        [
   14            opt(token),
   15            meta('TOKEN'),
   16            type(atom),
   17            shortflags([t]),
   18            longflags([token]),
   19            help('OAuth2.0 Token')
   20        ]
   21    ],
   22    opt_parse(OptSpec, Argv, Opts, Args),
   23    main_(Args, Opts).
   24
   25main_([git|T], Options) :-
   26    main_git(T, Options).
   27
   28main_git([repo|T], Options) :-
   29    main_git_repo(T, Options).
   30
   31main_git([artifact|T], Options) :-
   32    main_git_artifact(T, Options).
   33
   34main_git_repo([User0, Repo0], Options) :-
   35    atom_string(User0, User),
   36    atom_string(Repo0, Repo),
   37    sourcehut_git_repository(User, Repo, Out, Options),
   38    atom_json_dict(Atom, Out, []),
   39    writeln(Atom).
   40
   41main_git_artifact([upload|T], Options) :-
   42    !,
   43    main_git_artifact_upload(T, Options).
   44main_git_artifact([delete|T], Options) :-
   45    main_git_artifact_delete(T, Options).
   46
   47main_git_artifact_upload([RepoId, Tag0, File], Options) :-
   48    atom_string(Tag0, Tag),
   49    sourcehut_git_upload_artifact(RepoId, Tag, File, Artifact, Options),
   50    atom_json_dict(Atom, Artifact, []),
   51    writeln(Atom).
   52
   53
   54main_git_artifact_delete([ArtifactId], Options) :-
   55    sourcehut_git_delete_artifact(ArtifactId, Options)