This project highlights the usage of GitHub in Cameroon. It is based on the CodeAfrica initiative and it's updated and deployed to the Silicon Mountain site. Using GitHub's API it searches for users who have Cameroon or a Cameroonian city listed on their profile. This is an imperfect method but it shows the usage of GitHub in Cameroon. We feel that this provides a good proxy about where opensource and modern software practices is growing in Cameroon.
These scripts will generate github-cm list. We use this to generate a Map with MapBox and deployed to Silicon Mountain site
Feel free to check out the license, and make contributions through pull requests.
Install pip, python, mapbox-studio on your Linux/Mac OS distro
$ dnf install python pip | apt-get install python pip | brew install python pip
Create virtualenv and install pip.
$ pip install -r requirements.pip
- Create
secret.pybased on your GitHub details. - Edit
secret.pywith aclientIDandsecretIDfrom your github profile/auth page - Add your username and password (in clear) to
secret.py
$ ./auth.py
export the GITHUB_TOKEN as suggested.
remove secret.py
- Run the following python scripts.
$ ./step1_search_by_location.py && ./step2_cleanup_users.py && ./step3_extend_users.py && ./step4_cleanup_dates.py && ./step5_export_for_map.py
This generates the github-users.csv
Install Node.js and Node Package Manager
$ sudo apt install nodejs
$ sudo apt install npm
Modify sortJSON and change the sort parameter if necessary
var dataFile = JSON.parse(fs.readFileSync('step4.json'));
....
dataFile = sortUsersBy('repos', dataFile);
fs.appendFileSync('sortedUserData.json', JSON.stringify(dataFile));repos can be modified to any key that exit in the JSON file.
datafile string object that holds the formated data.
Run node sortJSON to produce a sorted JSON file using repos as key.
The output JSON file sortedUserData.json, can then be formated with any JSON formatter
The parameters in the BuildProfileUsingData() function can be modified eg.
const userDataObject = JSON.parse(fs.readFileSync('sortedUserData.json').toString());
...
function BuildProfileUsingData(index, username, fullname, repos, location, followers, avatar) {...}index auto counter
username a key in the JSON file (eg userDataObject[index].username)
fullname, repos ... keys in JSON file
Run node JSONParser. This outputs the file users.md
github-cm is licensed under The Apache-2 License.