maezato
v0.14.0
Published
Clone all repositories of a given user or organization at GitHub
Downloads
83
Readme
maezato (前里)
Clone all repositories of a given user or organization at GitHub or Bitbucket, by ordering them according to fork/contributing/mine
Background for the name
The name of this project, maezato
is a tribute to the late Mr Shinken Taira (平 信賢)
from Kumejima, Okinawa, Japan, who was one of the greatest individuals for preserving
the history of the Ryukyu Martial Arts and thus enabling the students of those arts
to study them today. Without his efforts, it is very likely that several pieces of information
would have been lost for good.
Installation
Install globally with npm
, as this tool is a command line tool:
npm install --global maezato
Please note that git
should be available in the system where this tool is planned to be used.
Please note that the minimum supported version of Node.js is 22.11.0
, which is the active Long Term Support (LTS) version.
Usage
It is possible to use this tool to retrieve all public repositories for a given user from Bitbucket or GitHub. Authentication is currently used only for GitHub, while Bitbucket is used via public API interface.
This tool uses the GitHub API v4
and requires a personal API token
for authentication.
The token should be set to an environment variable called GITHUB_TOKEN
or the command line
option named --token
.
export GITHUB_TOKEN=123456789123456789123456789123456789
Use via command line, always with exactly two arguments and with possible options:
maezato [options] <username | @organization> <target path, defaults to current directory>
The cloning of a given repository uses the ssh_url
property, hence
the SSH keys should be configured properly.
Possible command line options are:
-h, --help Help and usage instructions
-V, --version Version number
-v, --verbose Verbose output, will print which file is currently being processed
-t, --token String GitHub API personal authentication token
-a, --include-archived Include also repositories that have been archived
-O, --omit-username Omit the username directory when creating directory structure
For example getting all of the repositories of user nodejs
under ~/github
:
maezato nodejs ~/github
Another example of getting all repositories belonging to an organization called koodiklinikka
in the current folder:
maezato @koodiklinikka
Directory structure and git remotes
<target path>/
<username or organization name>/
contributing/
[repositories that are not owned nor forks]
forks/
[fork repositories ...]
mine/
[repositories which the user owns but are not forks]
The fork repositories will have several git remote urls:
origin
is the given fork repositoryupstream
is the repository from which this is a direct fork
There remote urls can be seen with the git
command:
git remote -v
Contributing
First thing to do is to file an issue. Then possibly open a Pull Request for solving the given issue. ESLint is used for linting the code and tape for unit testing. Please use them by doing:
npm install
npm run lint
npm test
"A Beginner's Guide to Open Source: The Best Advice for Making your First Contribution".
Also there is a blog post about "45 Github Issues Dos and Don’ts".
Linting is done with ESLint and can be executed with npm run lint
.
There should be no errors appearing after any JavaScript file changes.
Unit tests are written with tape
and can be executed with npm test
.
Code coverage is inspected with c8
and
can current status can be seen after running npm test
.
Please make sure it is over 90% at all times.
Version history
License
Licensed under the MIT license.
Copyright (c) Juga Paazmaya [email protected]