App-ModuleBuildTiny

 view release on metacpan or  search on metacpan

lib/App/ModuleBuildTiny.pm  view on Meta::CPAN

	if ($opts{bump}) {
		bump_versions(%opts);
		$files{'Changes'}++;
		push @dirty, 'Changes';
	}

	insert_options(\%opts, $config);
	my $dist = App::ModuleBuildTiny::Dist->new(%opts, regenerate => \%files);
	my @generated = grep { $files{$_} } $dist->files;
	for my $filename (@generated) {
		say "Updating $filename" if $opts{verbose};
		write_binary($filename, $dist->get_file($filename)) if !$opts{dry_run};
	}

	if ($opts{commit}) {
		require Git::Wrapper;
		my $git = Git::Wrapper->new('.');
		if ($opts{bump}) {
			push @dirty, 'lib';
			push @dirty, 'script' if -d 'script';
		}
		my $allowed = join '|', map qr{^\Q$_\E$}, @dirty;
		my @modified = grep /$allowed/, $git->ls_files({ modified => 1 });

		if (@modified) {
			my @changes = $dist->get_changes;
			my $version = 'v' . $dist->version;
			my $message = $opts{message} || ($opts{bump} ? join '', $version, "\n\n", @changes : 'Regenerate');
			$git->commit({ m => $message }, @dirty);
		} else {
			say "No modifications to commit";
		}
	}
}

my %prompt_for = (
	open => \&prompt,
	yn => \&prompt_yn,
);

my @config_items = (

lib/App/ModuleBuildTiny.pm  view on Meta::CPAN


		if (!$opts{json}) {
			my @phases = qw/build test configure runtime/;
			push @phases, 'develop' if $opts{author};

			my $reqs = $prereqs->merged_requirements(\@phases);
			$reqs->clear_requirement('perl');

			my @modules = sort { lc $a cmp lc $b } $reqs->required_modules;
			if ($opts{versions}) {
				say "$_ = ", $reqs->requirements_for_module($_) for @modules;
			}
			else {
				say for @modules;
			}
		}
		else {
			print JSON::MaybeXS->new->ascii->canonical->pretty->encode($prereqs->as_string_hash);
		}
		return 0;
	},
	regenerate => sub {
		my @arguments = @_;
		my $config = get_config;

lib/App/ModuleBuildTiny.pm  view on Meta::CPAN

				ask($config, $item, $default);
			}
			delete $config->{$_} for @delete_config;
			write_json($config_file, $config);
		}
		elsif ($mode eq 'get') {
			my ($key, $value) = @arguments;
			my ($item) = grep { $_->[0] eq $key } @config_items;
			die "No such known key $key" if not $item;
			my (undef, $description, $type, $default) = @{$item};
			say show_item($config, $key, $type);
		}
		elsif ($mode eq 'set') {
			my ($key, $value) = @arguments;
			my $item = grep { $_->[0] eq lc $key } @config_items;
			die "No such known key $key" if not $item;
			if ($item->[2] eq 'yn') {
				$config->{$key} = $boolean{$value} // die "Unknown boolean value '$value'\n";
			} else {
				$config->{$key} = $value;
			}
			write_json($config_file, $config);
		}
		elsif ($mode eq 'list') {
			for my $item (@config_items) {
				my ($key, $description, $type, $default) = @{$item};
				say "$key: " . show_item($config, $key, $type);
			}
		}
		elsif ($mode eq 'reset') {
			return not unlink $config_file;
		}
		return 0;
	},
	config => sub {
		my @arguments = @_;
		my $settings = get_settings;

lib/App/ModuleBuildTiny.pm  view on Meta::CPAN

				my ($key) = @{$item};
				$config->{$key} = $settings->{$key} if exists $settings->{$key};
			}
			write_json($config_file, $config);
		}
		elsif ($mode eq 'get') {
			my ($key, $value) = @arguments;
			my ($item) = grep { $_->[0] eq $key } @config_items;
			die "No such known key $key" if not $item;
			my (undef, $description, $type, $default) = @{$item};
			say show_item($config, $key, $type);
		}
		elsif ($mode eq 'set') {
			my ($key, $value) = @arguments;
			my $item = grep { $_->[0] eq lc $key } @config_items;
			die "No such known key $key" if not $item;
			$config->{$key} = $boolean{$value} // die "Unknown boolean value '$value'\n";
			write_json($config_file, $config);
		}
		elsif ($mode eq 'list') {
			for my $item (@items) {
				my ($key, $description, $type, $default) = @{$item};
				say "$key: " . show_item($config, $key, $type);
			}
		}
		elsif ($mode eq 'reset') {
			return not unlink $config_file;
		}
		return 0;
	},
	mint => sub {
		my @arguments = @_;

lib/App/ModuleBuildTiny.pm  view on Meta::CPAN

			require Git::Wrapper;
			my $git = Git::Wrapper->new('.');
			$git->init;
			$git->add(@regenerate_files, 'Changes', 'MANIFEST.SKIP', 'dist.json', '.gitignore', $module_file, grep -e, 'metamerge.json');
			$git->commit({ message => 'Initial commit' });
		}

		return 0;
	},
	version => sub {
		say $VERSION;
	},
);

sub modulebuildtiny {
	my ($action, @arguments) = @_;
	die "No action given\n" unless defined $action;
	my $call = $actions{$action};
	die "No such action '$action' known\n" if not $call;
	return $call->(@arguments);
}

lib/App/ModuleBuildTiny/Dist.pm  view on Meta::CPAN

	$self->write_dir($dir, $opts{verbose});
	local $CWD = $dir;
	my $ret = !!1;
	if ($opts{build}) {
		system $Config{perlpath}, 'Build.PL' and ($opts{allow_failure} or die "Could not run Build.PL");
		system $Config{perlpath}, 'Build' and ($opts{allow_failure} or die "Could not run Build");
		my @extralib = map { rel2abs("blib/$_") } 'arch', 'lib';
		local @PERL5LIB = (@extralib, @PERL5LIB);
		local @PATH = (rel2abs(catdir('blib', 'script')), @PATH);
		for my $command (@{ $opts{commands} }) {
			say join ' ', @{$command} if $opts{verbose};
			$ret &&= not system @{$command};
		}
	}
	else {
		for my $command (@{ $opts{commands} }) {
			say join ' ', @{$command} if $opts{verbose};
			$ret &&= not system @{$command};
		}
	}
	return $ret;
}

for my $method (qw/meta license/) {
	no strict 'refs';
	*$method = sub { my $self = shift; return $self->{$method}; };
}

script/mbtiny  view on Meta::CPAN

		$self->{_mbth_head1_content} .= $text;
		return;
	}

	if (defined $self->{_mbth_subcommand_name}) {
		$self->{_mbth_subcommand_name} .= $text;
		return;
	}

	if (delete $self->{_mbth_print_desc}) {
		$self->output_fh->say($1) if $text =~ /^([^.(]+)/;
	}
}

__END__

=head1 NAME

mbtiny - A standalone authoring script for Module::Build::Tiny

=head1 SYNOPSIS



( run in 0.408 second using v1.01-cache-2.11-cpan-d7a12ab2c7f )