Cloning GitHub repositories with Total.js

Tue Mar 07 2017 17:47:56 GMT+0100 (Central European Standard Time), Peter Širka

Cloning GitHub repositories with Total.js

With this solution you can clone private/public repositories from GitHub to your server. I use the same solution in Total.js Membership.

  • operations are supported in Total.js +v2.4.0

First step

  • install git terminal app
  • create a directory /your-app/github/
  • then create a Personal access token on GitHub:

Personal access token

Create a bash script

We have to create a bash script which clones the repository and removes unwanted files.

/your-app/github.sh:

# remove all files in the target directory
rm -rf $2

# clone the repo
git clone $1

# update permissions
chmod -R 777 $2

# remove unwanted files
cd $2
rm -rf .git
rm -f .gitignore
rm -f .npmignore

Create an operation

Create an operation file e.g. /your-app/definitions/operations.js:

const Exec = require('child_process').exec;

// This operation clones GitHub repositories
NEWOPERATION('clone', function(error, value, callback) {

    // value.directory
    // value.url

    OPTIONS.cwd = F.path.root('/github/');

    Exec('bash {0} {1} {2}'.format(F.path.root('github.sh'), value.url, value.directory), OPTIONS, function(err, response) {
        err && error.push(err);
        callback(F.path.root('/github/' + value.directory));
    });
});

How to use it?

You can execute the code below anywhere in your Total.js application:

// without the Access Token
OPERATION('clone', { directory: 'jComponent', url: 'https://github.com/totaljs/jComponent.git' }, console.log);

// with the Access Token
OPERATION('clone', { directory: 'MyRepository', url: 'https://USERNAME:TOKEN@github.com/blablabla/blablabla.git' }, console.log);

Tags

Follow us

Latest blogs
Flow v6 is here!
Thu Mar 07 2019 11:53:54 GMT+0100 (Central European Standard Time)
A critical security fix
Wed Feb 13 2019 22:15:39 GMT+0100 (Central European Standard Time)
New release: Total.js v3.2
Wed Feb 13 2019 22:14:39 GMT+0100 (Central European Standard Time)
Total.js Wiki v2
Fri Jan 04 2019 22:15:01 GMT+0100 (Central European Standard Time)
Total Year 2018
Thu Jan 03 2019 21:14:00 GMT+0100 (Central European Standard Time)

Latest comments
Nice tip
Mauro Junior
Thu Sep 20 2018 21:41:02 GMT+0200 (Central European Summer Time)
Not only for Total.js. You can communicate with different websocket servers.
Peter Širka
Mon Apr 23 2018 20:08:20 GMT+0200 (Central European Summer Time)
Marko: you need to create a buffer with this codepage and write byte-to-byte string. I recommend ...
Peter Širka
Mon Apr 23 2018 20:06:21 GMT+0200 (Central European Summer Time)
Is WEBSOCKETCLIENT only for internal ws connections between totaljs apps?
Stelios Stephanua
Fri Mar 16 2018 06:04:22 GMT+0100 (Central European Standard Time)
Total.js is amazing! ;)
Leonardo Hessel
Tue Dec 19 2017 19:51:15 GMT+0100 (Central European Standard Time)

Pixabay


Read more

Flow v6 is here!

News: We have released a new version of Flow. This version brings great new features and UI improvements.

Thu Mar 07 2019 11:53:54 GMT+0100 (Central European Standard Time)
A critical security fix

News: We were notified about the critical security bug in Total.js framework. Read a prevention.

Wed Feb 13 2019 22:15:39 GMT+0100 (Central European Standard Time)
New release: Total.js v3.2

News: This new release brings a critical security fix and small new improvements. Update Total.js now.

Wed Feb 13 2019 22:14:39 GMT+0100 (Central European Standard Time)
Total.js Wiki v2

Products: I have released a new version of Total.js Wiki. New version brings new improvements.

Fri Jan 04 2019 22:15:01 GMT+0100 (Central European Standard Time)
Total Year 2018

Business: Last year was perfect for Total.js platform. Total.js platform grows up and it has great results.

Thu Jan 03 2019 21:14:00 GMT+0100 (Central European Standard Time)
Total.js Code Editor v1

Products: Try our real-time collaboration tool for Total Developers. Code Editor offers great features for development.

Fri Dec 07 2018 22:55:13 GMT+0100 (Central European Standard Time)