npm 之 gh-home

2019-06-05  本文已影响0人  织雪纱奈

功能

实现的是打开 github 页面功能

meow 是命令行辅助工具
gh-home --help 可以打印出传递的文本
并且 cli.input[0] 把 -- 配置的参数给去掉了
比如 gh-home --lang en 123
cli.input[0] 是 123 而不是 --lang


const meow = require('meow');
const gitRemoteOriginUrl = require('git-remote-origin-url');
const gitRemoteUpstreamUrl = require('git-remote-upstream-url');
const githubUrlFromGit = require('github-url-from-git');
const open = require('open');
const execa = require('execa');

const cli = meow(`
    Usage
      $ gh-home [repo | user/repo]

    Examples
      $ gh-home
      $ gh-home myrepo
      $ gh-home avajs/ava
`);

const repo = cli.input[0];

(async () => {
    if (repo) {
          // 如果包含/ 直接打开
        if (repo.includes('/')) {
            await open(`https://github.com/${repo}`);
        } else {
                  // 不包含 前面自动加用户
            const {stdout: user} = await execa('git', ['config', '--global', 'github.user']);
            await open(`https://github.com/${user}/${repo}`);
        }
    } else {
        let url;
        try {
            try {
               // 如果是git remote 仓库
                url = await gitRemoteUpstreamUrl();
            } catch (_) {
                url = await gitRemoteOriginUrl();
            }

            url = githubUrlFromGit(url);
        } catch (_) {
            console.error('Couldn\'t find the remote origin or upstream. Ensure it\'s set and you\'re in a repo.\n\n  $ git remote add origin https://github.com/user/repo.git');
            process.exit(1);
        }

        if (!url) {
            console.error('Couldn\'t find the repo\'s GitHub URL. Ensure you are inside a Git repo that points to GitHub.');
            process.exit(1);
        }
              
        await open(url);
    }
})();

上一篇下一篇

猜你喜欢

热点阅读