Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/gfldex/raku-meta6-bin

Create and check META6.json files and module skeletons.
https://github.com/gfldex/raku-meta6-bin

perl6 skeleton

Last synced: 3 months ago
JSON representation

Create and check META6.json files and module skeletons.

Awesome Lists containing this project

README

        

# META6::bin
[![Build Status](https://travis-ci.org/gfldex/raku-meta6-bin.svg?branch=master)](https://travis-ci.org/gfldex/raku-meta6-bin)

Create and check META6.json files and module skeletons.

Depends on `git` and `curl` in `$PATH` and got a timeout of 60s for each call
to both. Those are used to setup a git and github repo.

Module skeletons include basic directories, `META6.json`, `t/meta.t`,
`.travis.yml` and a `README.md`. The latter includes a link to
[travis-ci](https://travis-ci.org/).

# SYNOPSIS

meta6 --create --name= --force
meta6 --check
meta6 --create-cfg-dir --force
meta6 --new-module= --force --skip-git --skip-github
meta6 --fork-module=
meta6 --add-dep=>
meta6 --pull-request
meta6 --issues --module= --closed --one-line --url --deps --verbose
meta6 --set-license="license name or URL"
meta6 --add-author="Another T. Author "
meta6 --release --version=1.2.3

## Use as a Module

use v6.c;

use META6::bin :HELPER;

&META6::bin::try-to-fetch-url.wrap({
say "checking URL: ⟨$_⟩";
callsame;
});

META6::bin::MAIN(:check);

# General Options

--meta6-file= # defaults to ./META6.json

# Create Options

--name
--description
--version # defaults to 0.0.1
--perl # defaults to 6.c
--author # defaults to user/name from ~/.gitconfig
--auth # defaults to credentials/username from ~/.gitconfig

# New Module Options

--new-module=
--description="some text" # added both META6.json and README.md
--base-dir # the $*CWD for all local file operations

Will create a new module project in a new directory with a name prefixed with
`create.prefix` (default `raku-`), setup git, push it to github (See Github
below). The skeleton from the config dir `~/.meta6` will be applied (see Config
Dir below).

# Fork Module Options

--fork-module= # module name as to be found in the ecosystem

This will seach a module by name in the ecosystem. If it's a github repo that
repo will be forked and cloned to the local FS. If there is a `META6.info` but
no `t/meta.t`, the file and its dependancy will be added and commited to the
local git repo.

# Pull Request Options

--pull-request
--title=`git log|head 1` # defaults to last commit message
--message=''
--head=master # branch in your fork
--base=master # branch in upstream repo
--repo-name # defaults to repo name provided in META6.info

Pull request need to tell github where to create the PR at. That in turn
requires a proper `META6.json` to get the repo name from.

# Releasing a module

To create a release on github use `--release`. The optional parameter
`--version` takes a string that is used as a version and stored in the
META6.json-file. Versions can be incremented with `+`, `++`, `+++` for the
parts of a version with the form `1.2.3`. A single `+` will change the
revision, `++` the miner version and `+++` the major.

A github-tag will be created and is the base of the release. The `source-url`
field in the META6.json is set to the tarball of the release on github.

# Config Dir

The config dir resides at `~/.meta6` and holds a folder called `skeleton` for
additional files to be copied into any new project. This is where you put your
default `LICENSE` or alternate `.gitignore`.

The config dir, a default meta6.cfg and its default subdirs are created with
`--create-cfg-dir`.

Any executable under `pre-create.d`, `post-create.d` and `post-push.d` are
sorted and executed with a timeout of 60 seconds each. Files that end in `~`
are filtered out.

The config directory can hold a `github-token.txt` file that is used to help
`curl` to connect to github. The [token](https://github.com/settings/tokens)
needs the scopes `repo`, `user/read:user` and `user/email`. Please note that
`git` itself can handle a `~/.netrc`-file and github will accept a token
instead of a password.

# Github

To be able to talk to github your git-config requires a section as follows.

[credential]
username = your-github-username