@form8ion/github
v2.0.0
Published
form8ion plugin for projects using GitHub as host for their git repository
Downloads
2,942
Readme
github
form8ion plugin for projects using GitHub as host for their git repository
Table of Contents
Features
Creation of GitHub repository
When authentication is provided, a repository will be created on GitHub, assuming one does not already exist.
Configuration of GitHub Repository Settings
This plugin configures repository settings by generating the settings file for use by repository-settings/app. The settings in the file will be applied, along with those in the account-level file, once the generated file is pushed to GitHub in the default branch, assuming you have the repository-settings app installed for your account.
Usage
Installation
$ npm install @form8ion/github --save-prod
Enabling actions against the GitHub API
This plugin leverages the .netrc strategy for octokit. Be sure to add your personal access token to leverage the GitHub API integration benefits of this plugin.
Enabling repository configuration with repository-settings/app
- Be sure to install for the user or organization account that you are scaffolding the new project for.
- Enable the settings app for all repositories in the account
Account-level settings
The settings file generated by this tool assumes that it is extending an account level config
- Ensure that you have created a
.github
repository in your account - Create an account-level settings file
in the
.github
repository at the location.github/settings.yml
within the repository- for an organization account, this is a good example
- for a user account, this is a good example
Example
Import
import any from '@travi/any';
import {lift, promptConstants, scaffold, test} from '@form8ion/github';
Execute
const projectRoot = process.cwd();
await scaffold(
{
projectRoot,
projectName: 'foo',
visibility: any.fromList(['Public', 'Private']),
description: any.sentence()
},
{
prompt: async ({id}) => {
const {questionNames, ids} = promptConstants;
const expectedPromptId = ids.GITHUB_DETAILS;
if (expectedPromptId === id) {
return {[questionNames[expectedPromptId].GITHUB_ACCOUNT]: any.word()};
}
throw new Error(`Unknown prompt with ID: ${id}`);
}
}
);
if (await test({projectRoot})) {
await lift({
projectRoot,
vcs: {owner: 'account-name', name: 'repository-name'},
results: {
projectDetails: {homepage: any.url()},
tags: any.listOf(any.word),
nextSteps: any.listOf(() => ({summary: any.sentence(), description: any.sentence()}))
}
});
}
Contributing
Dependencies
$ nvm install
$ npm install
Verification
$ npm test