1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- 'use strict';
- const shell = require('shelljs');
- const githubUsername = require('github-username');
- const nameCache = new Map();
- const emailCache = new Map();
- /**
- * @mixin
- * @alias actions/user
- */
- const user = module.exports;
- user.git = {};
- user.github = {};
- /**
- * Retrieves user's name from Git in the global scope or the project scope
- * (it'll take what Git will use in the current context)
- * @return {String} configured git name or undefined
- */
- user.git.name = () => {
- let name = nameCache.get(process.cwd());
- if (name) {
- return name;
- }
- if (shell.which('git')) {
- name = shell.exec('git config --get user.name', {silent: true}).stdout.trim();
- nameCache.set(process.cwd(), name);
- }
- return name;
- };
- /**
- * Retrieves user's email from Git in the global scope or the project scope
- * (it'll take what Git will use in the current context)
- * @return {String} configured git email or undefined
- */
- user.git.email = () => {
- let email = emailCache.get(process.cwd());
- if (email) {
- return email;
- }
- if (shell.which('git')) {
- email = shell.exec('git config --get user.email', {silent: true}).stdout.trim();
- emailCache.set(process.cwd(), email);
- }
- return email;
- };
- /**
- * Retrieves GitHub's username from the GitHub API
- * @return {Promise} Resolved with the GitHub username or rejected if unable to
- * get the information
- */
- user.github.username = () => githubUsername(user.git.email());
|