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)