#!/usr/bin/perl use 5.011; use warnings; # original by bliako on 27/05/2019 PM node_id=11100309 # values imported by Config::Tiny by Aldebaran # repo_name supplied to STDIN use Net::GitHub; use Data::Dumper; use Config::Tiny; my $ini_path = qw( /home/bob/Documents/html_template_data/3.values.ini ); say "ini path is $ini_path"; my $sub_hash = "my_github"; my $Config = Config::Tiny->new; $Config = Config::Tiny->read( $ini_path, 'utf8' ); say Dumper $Config; my $user = $Config->{$sub_hash}{'username'}; my $pass = $Config->{$sub_hash}{'password'}; print "$0 : enter value for reponame: "; my $repo_name = ; chomp($repo_name); my $git = Net::GitHub->new( login => $user, pass => $pass ); say "username is $user"; my $reposinfo = $git->repos->list($user); print Dumper($reposinfo); my %reposlist = map { lc $_->{'full_name'} =~ s|^${user}/||r => $_ } @$reposinfo; print "Repos: " . join( ",", keys %reposlist ) . "\n"; if ( !defined $reposlist{ lc $repo_name } ) { print "$0 : creating new repository '$repo_name' ...\n"; my $ret = undef; eval { $ret = $git->repos->create( { name => $repo_name, description => "change this to suit", } ); }; if ($@) { print STDERR "$0 : failed to create repository '$repo_name' : $@\n"; exit(1); } } __END__ #### my %reposlist = map { lc $_->{'full_name'} =~ s|^${user}/||r => $_ } @$reposinfo; print "Repos: " . join( ",", keys %reposlist ) . "\n"; #### 'created_at' => '2019-02-26T07:24:14Z', 'keys_url' => 'https://api.github.com/repos/TBlazer66/SSCCE/keys{/key_id}', 'subscribers_url' => 'https://api.github.com/repos/TBlazer66/SSCCE/subscribers', 'branches_url' => 'https://api.github.com/repos/TBlazer66/SSCCE/branches{/branch}', 'releases_url' => 'https://api.github.com/repos/TBlazer66/SSCCE/releases{/id}',