Skip to content

form8ion plugin for projects using GitHub as host for their git repository

License

Notifications You must be signed in to change notification settings

form8ion/github

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

github

form8ion plugin for projects using GitHub as host for their git repository

Node CI Workflow Status Codecov SLSA Level 2

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

MIT license npm Try @form8ion/github on RunKit node

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

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

Commitizen friendly Conventional Commits semantic-release: angular Renovate PRs Welcome

Dependencies

$ nvm install
$ npm install

Verification

$ npm test