Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Include Github https repository getter utility #243

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions api/javascript/github-https-repository-getter/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# github-repo-getter

* Download Enterprise Repository from GitHub through the CLI using HTTPS;

* Command Line utility that automatically downloads a Repository @branch from your enterprise organization.

* This package uses HTTPS instead of GIT to retrieve repositories. This allows you to retrieve projects securely from within restricted networks by whitelisting a machine IP egress at the network firewall level after SSHing into that machine.

## USAGE

**Installation**

* npm i -g github-repo-getter

**Prompts**

* <user>$: `github-repo-getter`

* Enter GitHub username.

* Enter Organization name.

* Enter Repository name.

* Enter Branch name.

* Enter personal access token

> You should now have that repository in your local filesystem.
34 changes: 34 additions & 0 deletions api/javascript/github-https-repository-getter/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#!/usr/bin/env node

const chalk = require('chalk');
const clear = require('clear');
const figlet = require('figlet');

const files = require('./lib/files');
const inquirer = require('./lib/inquirer');
const github = require('./lib/github');
const CLI = require('clui');
var Spinner = CLI.Spinner;

const run = async () => {
clear();

console.log(
chalk.yellow(
figlet.textSync('GitHub Repo Getter', {
horizontalLayout: 'full'
})
)
);

const gitHubMeta = await inquirer.askGithubMeta();
const spiner = new Spinner('Retrieving your Project, please wait...');
spiner.start();

github.getRepo(gitHubMeta, spiner).then(function(repo) {
console.log("Got Project: ", gitHubMeta.repo)
spiner.stop();
Comment on lines +25 to +30
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
const spiner = new Spinner('Retrieving your Project, please wait...');
spiner.start();
github.getRepo(gitHubMeta, spiner).then(function(repo) {
console.log("Got Project: ", gitHubMeta.repo)
spiner.stop();
const spinner = new Spinner('Retrieving your Project, please wait...');
spinner.start();
github.getRepo(gitHubMeta, spinner).then(function(repo) {
console.log("Got Project: ", gitHubMeta.repo)
spinner.stop();

})
}

run();
19 changes: 19 additions & 0 deletions api/javascript/github-https-repository-getter/lib/files.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
const fs = require('fs');
const path = require('path');


const getCurrentDirectoryBase = () => {
return path.basename(process.cwd());
}

const directoryExists = (filePath) => {
try {
return fs.statSync(filePath).isDirectory();
} catch (err) {
return false;
}
}


module.exports.getCurrentDirectoryBase = getCurrentDirectoryBase;
module.exports.directoryExists = directoryExists;
32 changes: 32 additions & 0 deletions api/javascript/github-https-repository-getter/lib/github.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
var download = require("download");
var request = require('request');

var getRepo = (inputs, spiner) => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
var getRepo = (inputs, spiner) => {
var getRepo = (inputs, spinner) => {

return new Promise(function(resolve, reject) {
var auth = "Bearer " + inputs.pat;

const options = {
"headers": {
"authorization": auth,
"accept": "application/zip",
"User-Agent": inputs.userAgent
}
}

var uri = "https://github.com/" + inputs.org + "/" + inputs.repo + "/archive/" + inputs.branch + ".zip"

download(uri, './', options, function(err) {
console.log(err)

reject(err);
}).then(data => {
console.log("Success!");

resolve(data);
});
});
}



module.exports.getRepo = getRepo;
70 changes: 70 additions & 0 deletions api/javascript/github-https-repository-getter/lib/inquirer.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
const inquirer = require('inquirer');
const files = require('./files');



const askGithubMeta = () => {
const metaInput = [{
name: 'userAgent',
type: 'input',
message: 'Enter your GitHub Username.',
validate: function(value) {
if (value.length) {
return true;
} else {
return 'Enter your GitHub Username.';
}
}
}, {
name: 'org',
type: 'input',
message: 'Enter the name of your GitHub Organization. (Found in the url)',
validate: function(value) {
if (value.length) {
return true;
} else {
return 'Enter the name of your GitHub Organization. (Found in the url)';
}
}
},
{
name: 'repo',
type: 'input',
message: 'Enter the name of your GitHub Repository. (Found in the url)',
validate: function(value) {
if (value.length) {
return true;
} else {
return 'Enter the name of your GitHub Repository. (Found in the url)';
}
}
},
{
name: 'branch',
type: 'input',
message: 'Enter the branch name of your GitHub Repository.',
validate: function(value) {
if (value.length) {
return true;
} else {
return 'Enter the branch name of your GitHub Repository.';
}
}
},
{
name: 'pat',
type: 'password',
message: 'Enter your valid GitHub Personal Access Token.',
validate: function(value) {
if (value.length) {
return true;
} else {
return 'Enter your valid GitHub Personal Access Token.';
}
}
}
];
return inquirer.prompt(metaInput);
}

module.exports.askGithubMeta = askGithubMeta;
Loading