├── .github └── workflows │ └── main.yml ├── .gitignore ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── github_stats.svg ├── old-anim-time.txt ├── package-lock.json ├── package.json ├── src ├── github.js ├── theme.js ├── themes.json └── utils.js ├── template.svg ├── themes ├── atom.svg ├── default.svg ├── dracula.svg ├── github.svg ├── googledark.svg ├── googlelight.svg ├── hacker.svg ├── monokai.svg ├── powershell.svg └── ubuntu.svg └── updater.js /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | # This is a basic workflow to help you get started with Actions 2 | 3 | name: Update Github Stats 4 | 5 | # Controls when the workflow will run 6 | on: 7 | # Triggers the workflow on push or pull request events but only for the main branch 8 | schedule: 9 | - cron: "47 2 * * *" 10 | 11 | # Allows you to run this workflow manually from the Actions tab 12 | workflow_dispatch: 13 | 14 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel 15 | jobs: 16 | # This workflow contains a single job called "build" 17 | build: 18 | # The type of runner that the job will run on 19 | runs-on: ubuntu-latest 20 | 21 | strategy: 22 | matrix: 23 | node-version: [14.x] 24 | 25 | # Steps represent a sequence of tasks that will be executed as part of the job 26 | steps: 27 | # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it 28 | - uses: actions/checkout@v2 29 | - name: Use Node.js ${{ matrix.node-version }} 30 | uses: actions/setup-node@v2 31 | with: 32 | node-version: ${{ matrix.node-version }} 33 | cache: 'npm' 34 | 35 | # Install requirements 36 | - name: Install requirements 37 | run: | 38 | npm install 39 | 40 | - name: Github Configurations 41 | run: | 42 | git config --global user.name "Github Actions" 43 | git config --global user.email "action@github.com" 44 | git pull 45 | 46 | - name: Update Template 47 | run: | 48 | node updater.js ${{ github.repository_owner }} atom 49 | env: 50 | GHT: ${{ secrets.GHT }} 51 | 52 | # Commiting 53 | - name: commiting changed svg template 54 | run: | 55 | git add . 56 | git commit -m "Github Stats updated 🎉" || echo 57 | git push 58 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | backups 2 | __pycache__ 3 | .vscode 4 | node_modules 5 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, religion, or sexual identity 10 | and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | * Demonstrating empathy and kindness toward other people 21 | * Being respectful of differing opinions, viewpoints, and experiences 22 | * Giving and gracefully accepting constructive feedback 23 | * Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | * Focusing on what is best not just for us as individuals, but for the 26 | overall community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | * The use of sexualized language or imagery, and sexual attention or 31 | advances of any kind 32 | * Trolling, insulting or derogatory comments, and personal or political attacks 33 | * Public or private harassment 34 | * Publishing others' private information, such as a physical or email 35 | address, without their explicit permission 36 | * Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | . 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series 86 | of actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or 93 | permanent ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within 113 | the community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.0, available at 119 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. 120 | 121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 122 | enforcement ladder](https://github.com/mozilla/diversity). 123 | 124 | [homepage]: https://www.contributor-covenant.org 125 | 126 | For answers to common questions about this code of conduct, see the FAQ at 127 | https://www.contributor-covenant.org/faq. Translations are available at 128 | https://www.contributor-covenant.org/translations. 129 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 YOGESHWARAN R 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

GitHub Stats Terminal Style

2 |

Dynamically Generate GitHub Stats as like Terminal Interface

3 | 4 |

5 | 6 | Update Github Stats 7 | 8 |

9 | 10 |

11 | 12 |

13 | 14 | ## Usage 15 | 16 | 1. Create a New Repository using this Template or click [here](https://github.com/yogeshwaran01/github-stats-terminal-style/generate) to create. 17 | 2. Create the personal Acess token. Checkout this [link](https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token) to create personal access token. 18 | 3. Add a New Repository secret to your repo. Name of the secret is must be `GHT` and valve is your personal access token. Checkout this [link](https://docs.github.com/en/actions/reference/encrypted-secrets) to add new repositiry secret. 19 | 20 | The File `github_stats.svg` is svg image of your github stats. you can copy the link of the image and use it any where. By default it update daily at `2:47 UTC` you can also can this by change the cron in `/.github/workflows/main.yml` by using [Cron Generator](https://crontab.guru/). 21 | 22 | ## Themes 23 | 24 | Now only Nine themes are only available. By default, ubuntu theme. you can change the theme by change the command in file `/.github/workflows/main.yml`. 25 | 26 | ```bash 27 | node updater.js ${{ github.repository_owner }} 28 | ``` 29 | 30 | For random theme, need not to mention any arguments 31 | 32 | | **Theme Sample** | **Theme Name** | **Theme Sample** | **ThemeName** | 33 | | :-------------------------------------------------------------------: | :------------: | :------------------------------:| :-------------: | 34 | | ubuntu | ubuntu | hacker | hacker | 35 | | atom | atom | googledark | googledark | 36 | | default | default | googlelight | googlelight | 37 | | dracula | dracula | monokai | monokai | 38 | | github | github | powershell | powershell | 39 | 40 | ## Contributions 41 | 42 | Contributions, issue and pull requests are welcome 43 | 44 | ## Credits 45 | 46 | Svg Generated from [termtosvg](https://github.com/nbedos/termtosvg) 47 | -------------------------------------------------------------------------------- /github_stats.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 74 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | DrakeAxelrod 107 | : 108 | ~ 109 | $ 110 | 111 | 112 | 113 | DrakeAxelrod 114 | : 115 | ~ 116 | $ w 117 | 118 | 119 | 120 | DrakeAxelrod 121 | : 122 | ~ 123 | $ wh 124 | 125 | 126 | 127 | DrakeAxelrod 128 | : 129 | ~ 130 | $ who 131 | 132 | 133 | 134 | DrakeAxelrod 135 | : 136 | ~ 137 | $ whoa 138 | 139 | 140 | 141 | DrakeAxelrod 142 | : 143 | ~ 144 | $ whoam 145 | 146 | 147 | 148 | DrakeAxelrod 149 | : 150 | ~ 151 | $ whoami 152 | 153 | 154 | 155 | DrakeAxelrod 156 | : 157 | ~ 158 | $ whoami 159 | 160 | 161 | 162 | 163 | 164 | Drake Axelrod 165 | 166 | 167 | DrakeAxelrod 168 | : 169 | ~ 170 | $ g 171 | 172 | 173 | 174 | DrakeAxelrod 175 | : 176 | ~ 177 | $ gi 178 | 179 | 180 | 181 | DrakeAxelrod 182 | : 183 | ~ 184 | $ git 185 | 186 | 187 | 188 | DrakeAxelrod 189 | : 190 | ~ 191 | $ git 192 | 193 | 194 | 195 | DrakeAxelrod 196 | : 197 | ~ 198 | $ git s 199 | 200 | 201 | 202 | DrakeAxelrod 203 | : 204 | ~ 205 | $ git st 206 | 207 | 208 | 209 | DrakeAxelrod 210 | : 211 | ~ 212 | $ git sta 213 | 214 | 215 | 216 | DrakeAxelrod 217 | : 218 | ~ 219 | $ git stat 220 | 221 | 222 | 223 | DrakeAxelrod 224 | : 225 | ~ 226 | $ git statu 227 | 228 | 229 | 230 | DrakeAxelrod 231 | : 232 | ~ 233 | $ git status 234 | 235 | 236 | 237 | DrakeAxelrod 238 | : 239 | ~ 240 | $ git status 241 | 242 | 243 | GitHub Status 244 | 245 | 246 | ╔═══════════════╤════════════╗ 247 | 248 | 249 | 250 | Title 251 | 252 | Count 253 | 254 | 255 | 256 | ╟───────────────┼────────────╢ 257 | 258 | 259 | 260 | Stars 261 | 262 | 1170 263 | 264 | 265 | 266 | 267 | Forks 268 | 269 | 20 270 | 271 | 272 | 273 | 274 | Commits 275 | 276 | 2042 277 | 278 | 279 | 280 | 281 | Followers 282 | 283 | 44 284 | 285 | 286 | 287 | 288 | Pull Requests 289 | 290 | 85 291 | 292 | 293 | 294 | 295 | Issues 296 | 297 | 30 298 | 299 | 300 | 301 | 302 | Repository 303 | 304 | 43 305 | 306 | 307 | 308 | 309 | Gists 310 | 311 | 5 312 | 313 | 314 | 315 | ╚═══════════════╧════════════╝ 316 | 317 | 318 | DrakeAxelrod 319 | : 320 | ~ 321 | $ u 322 | 323 | 324 | 325 | DrakeAxelrod 326 | : 327 | ~ 328 | $ up 329 | 330 | 331 | 332 | DrakeAxelrod 333 | : 334 | ~ 335 | $ upt 336 | 337 | 338 | 339 | DrakeAxelrod 340 | : 341 | ~ 342 | $ upti 343 | 344 | 345 | 346 | DrakeAxelrod 347 | : 348 | ~ 349 | $ uptim 350 | 351 | 352 | 353 | DrakeAxelrod 354 | : 355 | ~ 356 | $ uptime 357 | 358 | 359 | 360 | DrakeAxelrod 361 | : 362 | ~ 363 | $ uptime 364 | 365 | 366 | 1608 367 | 368 | 369 | DrakeAxelrod 370 | : 371 | ~ 372 | $ e 373 | 374 | 375 | 376 | DrakeAxelrod 377 | : 378 | ~ 379 | $ ex 380 | 381 | 382 | 383 | DrakeAxelrod 384 | : 385 | ~ 386 | $ exi 387 | 388 | 389 | 390 | DrakeAxelrod 391 | : 392 | ~ 393 | $ exit 394 | 395 | 396 | 397 | DrakeAxelrod 398 | : 399 | ~ 400 | $ exit 401 | 402 | 403 | exit 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511 | 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | 520 | 521 | 522 | 523 | 524 | 525 | 526 | 527 | 528 | 529 | 530 | 531 | 532 | 533 | 534 | 535 | 536 | 537 | 538 | 539 | 540 | 541 | 542 | 543 | 544 | 545 | 546 | 547 | 548 | 549 | 550 | 551 | 552 | 553 | 554 | 555 | 556 | 557 | 558 | 559 | 560 | 561 | 562 | 563 | 564 | 565 | 566 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | 589 | 590 | 591 | 592 | 593 | 594 | 595 | 596 | 597 | 598 | 599 | 600 | 601 | 602 | 603 | 604 | 605 | 606 | 607 | 608 | 609 | 610 | 611 | 612 | 613 | 614 | 615 | 616 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 642 | 643 | 644 | 645 | 646 | 647 | 648 | 649 | 650 | 651 | 652 | 653 | 654 | 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 | 664 | 665 | 666 | 667 | 668 | 669 | 670 | 671 | 672 | 673 | 674 | 675 | 676 | 677 | 678 | 679 | 680 | 681 | 682 | 683 | 684 | 685 | 686 | 687 | 688 | 689 | 690 | 691 | 692 | 693 | 694 | 695 | 696 | 697 | 698 | 699 | 700 | 701 | 702 | 703 | 704 | 705 | 706 | 707 | 708 | 709 | 710 | 711 | 712 | 713 | 714 | 715 | 716 | 717 | 718 | 719 | 720 | 721 | 722 | 723 | 724 | 725 | 726 | 727 | 728 | 729 | 730 | 731 | 732 | 733 | 734 | 735 | 736 | 737 | 738 | 739 | 740 | 741 | 742 | 743 | 744 | 745 | 746 | 747 | 748 | 749 | 750 | 751 | 752 | 753 | 754 | 755 | 756 | 757 | 758 | 759 | 760 | 761 | 762 | 763 | 764 | 765 | 766 | 767 | 768 | 769 | 770 | 771 | 772 | 773 | 774 | 775 | 776 | 777 | 778 | 779 | 780 | 781 | 782 | 783 | 784 | 785 | 786 | 787 | 788 | 789 | 790 | 791 | 792 | 793 | 794 | 795 | 796 | 797 | 798 | 799 | 800 | 801 | 802 | 803 | 804 | 805 | 806 | 807 | 808 | 809 | 810 | 811 | 812 | 813 | 814 | 815 | 816 | 817 | 818 | 819 | 820 | 821 | 822 | 823 | 824 | 825 | 826 | 827 | 828 | 829 | 830 | 831 | 832 | 833 | 834 | 835 | 836 | 837 | 838 | 839 | 840 | 841 | 842 | 843 | 844 | 845 | 846 | 847 | 848 | 849 | 850 | 851 | 852 | 853 | 854 | 855 | 856 | 857 | 858 | 859 | 860 | 861 | 862 | 863 | 864 | 865 | 866 | 867 | 868 | 869 | 870 | 871 | 872 | 873 | 874 | 875 | 876 | 877 | 878 | 879 | 880 | 881 | 882 | -------------------------------------------------------------------------------- /old-anim-time.txt: -------------------------------------------------------------------------------- 1 | animation-duration: 14558ms; 2 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "github-stats-terminal-style", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@octokit/auth-token": { 8 | "version": "2.4.5", 9 | "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.5.tgz", 10 | "integrity": "sha512-BpGYsPgJt05M7/L/5FoE1PiAbdxXFZkX/3kDYcsvd1v6UhlnE5e96dTDr0ezX/EFwciQxf3cNV0loipsURU+WA==", 11 | "requires": { 12 | "@octokit/types": "^6.0.3" 13 | } 14 | }, 15 | "@octokit/core": { 16 | "version": "3.5.1", 17 | "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.5.1.tgz", 18 | "integrity": "sha512-omncwpLVxMP+GLpLPgeGJBF6IWJFjXDS5flY5VbppePYX9XehevbDykRH9PdCdvqt9TS5AOTiDide7h0qrkHjw==", 19 | "requires": { 20 | "@octokit/auth-token": "^2.4.4", 21 | "@octokit/graphql": "^4.5.8", 22 | "@octokit/request": "^5.6.0", 23 | "@octokit/request-error": "^2.0.5", 24 | "@octokit/types": "^6.0.3", 25 | "before-after-hook": "^2.2.0", 26 | "universal-user-agent": "^6.0.0" 27 | } 28 | }, 29 | "@octokit/endpoint": { 30 | "version": "6.0.12", 31 | "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", 32 | "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", 33 | "requires": { 34 | "@octokit/types": "^6.0.3", 35 | "is-plain-object": "^5.0.0", 36 | "universal-user-agent": "^6.0.0" 37 | } 38 | }, 39 | "@octokit/graphql": { 40 | "version": "4.8.0", 41 | "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", 42 | "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", 43 | "requires": { 44 | "@octokit/request": "^5.6.0", 45 | "@octokit/types": "^6.0.3", 46 | "universal-user-agent": "^6.0.0" 47 | } 48 | }, 49 | "@octokit/openapi-types": { 50 | "version": "10.0.0", 51 | "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-10.0.0.tgz", 52 | "integrity": "sha512-k1iO2zKuEjjRS1EJb4FwSLk+iF6EGp+ZV0OMRViQoWhQ1fZTk9hg1xccZII5uyYoiqcbC73MRBmT45y1vp2PPg==" 53 | }, 54 | "@octokit/plugin-paginate-rest": { 55 | "version": "2.16.0", 56 | "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.16.0.tgz", 57 | "integrity": "sha512-8YYzALPMvEZ35kgy5pdYvQ22Roz+BIuEaedO575GwE2vb/ACDqQn0xQrTJR4tnZCJn7pi8+AWPVjrFDaERIyXQ==", 58 | "requires": { 59 | "@octokit/types": "^6.26.0" 60 | } 61 | }, 62 | "@octokit/plugin-request-log": { 63 | "version": "1.0.4", 64 | "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", 65 | "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==" 66 | }, 67 | "@octokit/plugin-rest-endpoint-methods": { 68 | "version": "5.9.0", 69 | "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.9.0.tgz", 70 | "integrity": "sha512-Rz67pg+rEJq2Qn/qfHsMiBoP7GL5NDn8Gg0ezGznZ745Ixn1gPusZYZqCXNhICYrIZaVXmusNP0iwPdphJneqQ==", 71 | "requires": { 72 | "@octokit/types": "^6.26.0", 73 | "deprecation": "^2.3.1" 74 | } 75 | }, 76 | "@octokit/request": { 77 | "version": "5.6.1", 78 | "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.1.tgz", 79 | "integrity": "sha512-Ls2cfs1OfXaOKzkcxnqw5MR6drMA/zWX/LIS/p8Yjdz7QKTPQLMsB3R+OvoxE6XnXeXEE2X7xe4G4l4X0gRiKQ==", 80 | "requires": { 81 | "@octokit/endpoint": "^6.0.1", 82 | "@octokit/request-error": "^2.1.0", 83 | "@octokit/types": "^6.16.1", 84 | "is-plain-object": "^5.0.0", 85 | "node-fetch": "^2.6.1", 86 | "universal-user-agent": "^6.0.0" 87 | } 88 | }, 89 | "@octokit/request-error": { 90 | "version": "2.1.0", 91 | "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", 92 | "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", 93 | "requires": { 94 | "@octokit/types": "^6.0.3", 95 | "deprecation": "^2.0.0", 96 | "once": "^1.4.0" 97 | } 98 | }, 99 | "@octokit/rest": { 100 | "version": "18.10.0", 101 | "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.10.0.tgz", 102 | "integrity": "sha512-esHR5OKy38bccL/sajHqZudZCvmv4yjovMJzyXlphaUo7xykmtOdILGJ3aAm0mFHmMLmPFmDMJXf39cAjNJsrw==", 103 | "requires": { 104 | "@octokit/core": "^3.5.1", 105 | "@octokit/plugin-paginate-rest": "^2.16.0", 106 | "@octokit/plugin-request-log": "^1.0.4", 107 | "@octokit/plugin-rest-endpoint-methods": "^5.9.0" 108 | } 109 | }, 110 | "@octokit/types": { 111 | "version": "6.26.0", 112 | "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.26.0.tgz", 113 | "integrity": "sha512-RDxZBAFMtqs1ZPnbUu1e7ohPNfoNhTiep4fErY7tZs995BeHu369Vsh5woMIaFbllRWEZBfvTCS4hvDnMPiHrA==", 114 | "requires": { 115 | "@octokit/openapi-types": "^10.0.0" 116 | } 117 | }, 118 | "a-sync-waterfall": { 119 | "version": "1.0.1", 120 | "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", 121 | "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==" 122 | }, 123 | "asap": { 124 | "version": "2.0.6", 125 | "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", 126 | "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" 127 | }, 128 | "before-after-hook": { 129 | "version": "2.2.2", 130 | "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", 131 | "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==" 132 | }, 133 | "commander": { 134 | "version": "5.1.0", 135 | "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", 136 | "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==" 137 | }, 138 | "deprecation": { 139 | "version": "2.3.1", 140 | "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", 141 | "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" 142 | }, 143 | "is-plain-object": { 144 | "version": "5.0.0", 145 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", 146 | "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" 147 | }, 148 | "node-fetch": { 149 | "version": "2.6.7", 150 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 151 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 152 | "requires": { 153 | "whatwg-url": "^5.0.0" 154 | } 155 | }, 156 | "nunjucks": { 157 | "version": "3.2.3", 158 | "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.3.tgz", 159 | "integrity": "sha512-psb6xjLj47+fE76JdZwskvwG4MYsQKXUtMsPh6U0YMvmyjRtKRFcxnlXGWglNybtNTNVmGdp94K62/+NjF5FDQ==", 160 | "requires": { 161 | "a-sync-waterfall": "^1.0.0", 162 | "asap": "^2.0.3", 163 | "commander": "^5.1.0" 164 | } 165 | }, 166 | "once": { 167 | "version": "1.4.0", 168 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 169 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 170 | "requires": { 171 | "wrappy": "1" 172 | } 173 | }, 174 | "tr46": { 175 | "version": "0.0.3", 176 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 177 | "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" 178 | }, 179 | "universal-user-agent": { 180 | "version": "6.0.0", 181 | "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", 182 | "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" 183 | }, 184 | "webidl-conversions": { 185 | "version": "3.0.1", 186 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 187 | "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" 188 | }, 189 | "whatwg-url": { 190 | "version": "5.0.0", 191 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 192 | "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", 193 | "requires": { 194 | "tr46": "~0.0.3", 195 | "webidl-conversions": "^3.0.0" 196 | } 197 | }, 198 | "wrappy": { 199 | "version": "1.0.2", 200 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 201 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 202 | } 203 | } 204 | } 205 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "github-stats-terminal-style", 3 | "version": "1.0.0", 4 | "description": "Generate Github Stats as like Terminal Interface with typing effects dynamically for your profile Readme", 5 | "repository": { 6 | "type": "git", 7 | "url": "git+https://github.com/yogeshwaran01/github-stats-terminal-style.git" 8 | }, 9 | "keywords": [ 10 | "github", 11 | "github-stats", 12 | "node", 13 | "terminal", 14 | "github-stats-card" 15 | ], 16 | "author": "yogeshwaran01", 17 | "license": "MIT", 18 | "bugs": { 19 | "url": "https://github.com/yogeshwaran01/github-stats-terminal-style/issues" 20 | }, 21 | "homepage": "https://github.com/yogeshwaran01/github-stats-terminal-style#readme", 22 | "dependencies": { 23 | "@octokit/rest": "^18.10.0", 24 | "nunjucks": "^3.2.3" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/github.js: -------------------------------------------------------------------------------- 1 | const { Octokit } = require("@octokit/rest"); 2 | 3 | const { utils, align_username, align } = require("./utils") 4 | 5 | const token = process.env.GHT 6 | 7 | const octokit = new Octokit({ 8 | auth: token, 9 | log: { 10 | debug: () => { }, 11 | info: () => { }, 12 | warn: console.warn, 13 | error: console.error, 14 | }, 15 | }); 16 | 17 | 18 | function dateDiffInDays(date) { 19 | 20 | const _MS_PER_DAY = 1000 * 60 * 60 * 24; 21 | const utc1 = Date.now(); 22 | Date.now() 23 | const b = new Date(date) 24 | const utc2 = Date.UTC(b.getFullYear(), b.getMonth(), b.getDate()); 25 | 26 | return Math.floor((utc1 - utc2) / _MS_PER_DAY); 27 | } 28 | 29 | class GithubUser { 30 | constructor(username) { 31 | this.userName = username; 32 | } 33 | 34 | async getCommits() { 35 | let res = await octokit.search.commits({ 36 | q: `author:${this.userName}` 37 | }) 38 | return res.data.total_count 39 | } 40 | 41 | async getIssueAndPr(type) { 42 | let res = await octokit.search.issuesAndPullRequests({ 43 | q: `type:${type} author:${this.userName}` 44 | }) 45 | 46 | return res.data.total_count 47 | } 48 | 49 | async fetchContent() { 50 | this.userContent = await octokit.request("GET /users/{username}", { 51 | username: this.userName, 52 | }); 53 | this.repoContent = await octokit.paginate("GET /users/{owner}/repos", { 54 | owner: this.userName, 55 | }); 56 | this.name = this.userContent.data.name; 57 | this.repo = align(this.userContent.data.public_repos); 58 | this.gists = align(this.userContent.data.public_gists); 59 | this.followers = align(this.userContent.data.followers); 60 | this.createdAt = dateDiffInDays(this.userContent.data.created_at); 61 | this.starsCount = 0; 62 | this.forkCount = 0; 63 | this.repoContent.forEach(repo => { 64 | this.starsCount += repo.stargazers_count 65 | this.forkCount += repo.forks; 66 | }); 67 | this.commitsCount = await this.getCommits() 68 | this.issueCount = await this.getIssueAndPr('issue') 69 | this.prCount = await this.getIssueAndPr('pr') 70 | this.stars = align(this.starsCount); 71 | this.forks = align(this.forkCount); 72 | this.commits = align(this.commitsCount); 73 | this.issues = align(this.issueCount); 74 | this.pr = align(this.prCount); 75 | this.uptime = this.createdAt; 76 | this.username = align_username(this.userName); 77 | } 78 | } 79 | 80 | 81 | module.exports = { GithubUser } 82 | -------------------------------------------------------------------------------- /src/theme.js: -------------------------------------------------------------------------------- 1 | const THEMES = require("./themes.json") 2 | 3 | const themes = Object.keys(THEMES); 4 | 5 | let getTheme = (theme) => { 6 | theme = theme.toLowerCase() 7 | if (themes.includes(theme)) { 8 | return THEMES[theme] 9 | } else { 10 | return THEMES[themes[Math.floor(Math.random() * themes.length)]] 11 | } 12 | } 13 | 14 | module.exports = { getTheme } 15 | -------------------------------------------------------------------------------- /src/themes.json: -------------------------------------------------------------------------------- 1 | { 2 | "ubuntu": { 3 | "name": "ubuntu", 4 | "back": "#300a24", 5 | "fore": "#ffffff", 6 | "green": "#ffffff", 7 | "purple": "#ffffff", 8 | "orange": "#ffffff", 9 | "cyan": "#ffffff", 10 | "username": "#5cbe09" 11 | }, 12 | "default": { 13 | "name": "default", 14 | "back": "#272822", 15 | "fore": "#f8f8f2", 16 | "green": "#a6e22e", 17 | "purple": "#ae81ff", 18 | "orange": "#cc6633", 19 | "cyan": "#8be9fd", 20 | "username": "#f70202" 21 | }, 22 | "dracula": { 23 | "name": "dracula", 24 | "back": "#282A36", 25 | "fore": "#F8F8F2", 26 | "green": "#50fa7b", 27 | "purple": "#bd93f9", 28 | "orange": "#ffb86c", 29 | "cyan": "#8be9fd", 30 | "username": "#E356A7" 31 | }, 32 | "monokai": { 33 | "name": "monokai", 34 | "back": "#2e2e2e", 35 | "fore": "#d6d6d6", 36 | "green": "#b4d273", 37 | "purple": "#9e86c8", 38 | "orange": "#e87d3e", 39 | "cyan": "#8be9fd", 40 | "username": "#f92672" 41 | }, 42 | "atom": { 43 | "name": "atom", 44 | "back": "#161719", 45 | "fore": "#c5c8c6", 46 | "green": "#94fa36", 47 | "purple": "#b9b6fc", 48 | "orange": "#f5ffa8", 49 | "cyan": "#85befd", 50 | "username": "#fd5ff1" 51 | }, 52 | "github": { 53 | "name": "github", 54 | "back": "#f4f4f4", 55 | "fore": "#3e3e3e", 56 | "green": "#87d5a2", 57 | "purple": "#e94691", 58 | "orange": "#2e6cba", 59 | "cyan": "#666666", 60 | "username": "#de0000" 61 | }, 62 | "googledark": { 63 | "name": "googledark", 64 | "back": "#202124", 65 | "fore": "#E8EAED", 66 | "green": "#34A853", 67 | "purple": "#A142F4", 68 | "orange": "#FBBC05", 69 | "cyan": "#EA4335", 70 | "username": "#4285F4" 71 | }, 72 | "googlelight": { 73 | "name": "googlelight", 74 | "back": "#FFFFFF", 75 | "fore": "#5F6368", 76 | "green": "#34A853", 77 | "purple": "#A142F4", 78 | "orange": "#EA4335", 79 | "cyan": "#24C1E0", 80 | "username": "#4285F4" 81 | }, 82 | "powershell": { 83 | "name": "powershell", 84 | "back": "#052454", 85 | "fore": "#F6F6F7", 86 | "green": "#1CFE3C", 87 | "purple": "#D33682", 88 | "orange": "#FEFE45", 89 | "cyan": "#EF2929", 90 | "username": "#F6F6F7" 91 | }, 92 | "hacker": { 93 | "name": "hacker", 94 | "back": "#000000", 95 | "fore": "#00FF00", 96 | "green": "#00FF00", 97 | "purple": "#00FF00", 98 | "orange": "#00FF00", 99 | "cyan": "#00FF00", 100 | "username": "#00FF00" 101 | } 102 | } 103 | -------------------------------------------------------------------------------- /src/utils.js: -------------------------------------------------------------------------------- 1 | let align = (number) => { 2 | 3 | let str = number.toString() 4 | return " " + str + (" ".repeat(11 - str.length)) 5 | } 6 | 7 | let align_username = (username) => { 8 | 9 | var len = username.length 10 | 11 | if (len <= 5) { 12 | return username + "@github.com" 13 | } else if (len <= 7) { 14 | return username + "@github" 15 | } else if (len <= 10) { 16 | return username + "@git" 17 | } else if (len > 16) { 18 | return username.slice(0, 17) 19 | } else { 20 | return username 21 | } 22 | 23 | } 24 | 25 | 26 | module.exports = { align, align_username } 27 | -------------------------------------------------------------------------------- /themes/atom.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 74 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | yogeshwaran01 107 | : 108 | ~ 109 | $ 110 | 111 | 112 | 113 | yogeshwaran01 114 | : 115 | ~ 116 | $ w 117 | 118 | 119 | 120 | yogeshwaran01 121 | : 122 | ~ 123 | $ wh 124 | 125 | 126 | 127 | yogeshwaran01 128 | : 129 | ~ 130 | $ who 131 | 132 | 133 | 134 | yogeshwaran01 135 | : 136 | ~ 137 | $ whoa 138 | 139 | 140 | 141 | yogeshwaran01 142 | : 143 | ~ 144 | $ whoam 145 | 146 | 147 | 148 | yogeshwaran01 149 | : 150 | ~ 151 | $ whoami 152 | 153 | 154 | 155 | yogeshwaran01 156 | : 157 | ~ 158 | $ whoami 159 | 160 | 161 | 162 | 163 | 164 | YOGESHWARAN R 165 | 166 | 167 | yogeshwaran01 168 | : 169 | ~ 170 | $ g 171 | 172 | 173 | 174 | yogeshwaran01 175 | : 176 | ~ 177 | $ gi 178 | 179 | 180 | 181 | yogeshwaran01 182 | : 183 | ~ 184 | $ git 185 | 186 | 187 | 188 | yogeshwaran01 189 | : 190 | ~ 191 | $ git 192 | 193 | 194 | 195 | yogeshwaran01 196 | : 197 | ~ 198 | $ git s 199 | 200 | 201 | 202 | yogeshwaran01 203 | : 204 | ~ 205 | $ git st 206 | 207 | 208 | 209 | yogeshwaran01 210 | : 211 | ~ 212 | $ git sta 213 | 214 | 215 | 216 | yogeshwaran01 217 | : 218 | ~ 219 | $ git stat 220 | 221 | 222 | 223 | yogeshwaran01 224 | : 225 | ~ 226 | $ git statu 227 | 228 | 229 | 230 | yogeshwaran01 231 | : 232 | ~ 233 | $ git status 234 | 235 | 236 | 237 | yogeshwaran01 238 | : 239 | ~ 240 | $ git status 241 | 242 | 243 | GitHub Status 244 | 245 | 246 | ╔═══════════════╤════════════╗ 247 | 248 | 249 | 250 | Title 251 | 252 | Count 253 | 254 | 255 | 256 | ╟───────────────┼────────────╢ 257 | 258 | 259 | 260 | Stars 261 | 262 | 101 263 | 264 | 265 | 266 | 267 | Forks 268 | 269 | 19 270 | 271 | 272 | 273 | 274 | Commits 275 | 276 | 719 277 | 278 | 279 | 280 | 281 | Followers 282 | 283 | 13 284 | 285 | 286 | 287 | 288 | Pull Requests 289 | 290 | 42 291 | 292 | 293 | 294 | 295 | Issues 296 | 297 | 0 298 | 299 | 300 | 301 | 302 | Repository 303 | 304 | 21 305 | 306 | 307 | 308 | 309 | Gists 310 | 311 | 5 312 | 313 | 314 | 315 | ╚═══════════════╧════════════╝ 316 | 317 | 318 | yogeshwaran01 319 | : 320 | ~ 321 | $ u 322 | 323 | 324 | 325 | yogeshwaran01 326 | : 327 | ~ 328 | $ up 329 | 330 | 331 | 332 | yogeshwaran01 333 | : 334 | ~ 335 | $ upt 336 | 337 | 338 | 339 | yogeshwaran01 340 | : 341 | ~ 342 | $ upti 343 | 344 | 345 | 346 | yogeshwaran01 347 | : 348 | ~ 349 | $ uptim 350 | 351 | 352 | 353 | yogeshwaran01 354 | : 355 | ~ 356 | $ uptime 357 | 358 | 359 | 360 | yogeshwaran01 361 | : 362 | ~ 363 | $ uptime 364 | 365 | 366 | 397 367 | 368 | 369 | yogeshwaran01 370 | : 371 | ~ 372 | $ e 373 | 374 | 375 | 376 | yogeshwaran01 377 | : 378 | ~ 379 | $ ex 380 | 381 | 382 | 383 | yogeshwaran01 384 | : 385 | ~ 386 | $ exi 387 | 388 | 389 | 390 | yogeshwaran01 391 | : 392 | ~ 393 | $ exit 394 | 395 | 396 | 397 | yogeshwaran01 398 | : 399 | ~ 400 | $ exit 401 | 402 | 403 | exit 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511 | 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | 520 | 521 | 522 | 523 | 524 | 525 | 526 | 527 | 528 | 529 | 530 | 531 | 532 | 533 | 534 | 535 | 536 | 537 | 538 | 539 | 540 | 541 | 542 | 543 | 544 | 545 | 546 | 547 | 548 | 549 | 550 | 551 | 552 | 553 | 554 | 555 | 556 | 557 | 558 | 559 | 560 | 561 | 562 | 563 | 564 | 565 | 566 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | 589 | 590 | 591 | 592 | 593 | 594 | 595 | 596 | 597 | 598 | 599 | 600 | 601 | 602 | 603 | 604 | 605 | 606 | 607 | 608 | 609 | 610 | 611 | 612 | 613 | 614 | 615 | 616 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 642 | 643 | 644 | 645 | 646 | 647 | 648 | 649 | 650 | 651 | 652 | 653 | 654 | 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 | 664 | 665 | 666 | 667 | 668 | 669 | 670 | 671 | 672 | 673 | 674 | 675 | 676 | 677 | 678 | 679 | 680 | 681 | 682 | 683 | 684 | 685 | 686 | 687 | 688 | 689 | 690 | 691 | 692 | 693 | 694 | 695 | 696 | 697 | 698 | 699 | 700 | 701 | 702 | 703 | 704 | 705 | 706 | 707 | 708 | 709 | 710 | 711 | 712 | 713 | 714 | 715 | 716 | 717 | 718 | 719 | 720 | 721 | 722 | 723 | 724 | 725 | 726 | 727 | 728 | 729 | 730 | 731 | 732 | 733 | 734 | 735 | 736 | 737 | 738 | 739 | 740 | 741 | 742 | 743 | 744 | 745 | 746 | 747 | 748 | 749 | 750 | 751 | 752 | 753 | 754 | 755 | 756 | 757 | 758 | 759 | 760 | 761 | 762 | 763 | 764 | 765 | 766 | 767 | 768 | 769 | 770 | 771 | 772 | 773 | 774 | 775 | 776 | 777 | 778 | 779 | 780 | 781 | 782 | 783 | 784 | 785 | 786 | 787 | 788 | 789 | 790 | 791 | 792 | 793 | 794 | 795 | 796 | 797 | 798 | 799 | 800 | 801 | 802 | 803 | 804 | 805 | 806 | 807 | 808 | 809 | 810 | 811 | 812 | 813 | 814 | 815 | 816 | 817 | 818 | 819 | 820 | 821 | 822 | 823 | 824 | 825 | 826 | 827 | 828 | 829 | 830 | 831 | 832 | 833 | 834 | 835 | 836 | 837 | 838 | 839 | 840 | 841 | 842 | 843 | 844 | 845 | 846 | 847 | 848 | 849 | 850 | 851 | 852 | 853 | 854 | 855 | 856 | 857 | 858 | 859 | 860 | 861 | 862 | 863 | 864 | 865 | 866 | 867 | 868 | 869 | 870 | 871 | 872 | 873 | 874 | 875 | 876 | 877 | 878 | 879 | 880 | 881 | -------------------------------------------------------------------------------- /themes/default.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 74 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | yogeshwaran01 107 | : 108 | ~ 109 | $ 110 | 111 | 112 | 113 | yogeshwaran01 114 | : 115 | ~ 116 | $ w 117 | 118 | 119 | 120 | yogeshwaran01 121 | : 122 | ~ 123 | $ wh 124 | 125 | 126 | 127 | yogeshwaran01 128 | : 129 | ~ 130 | $ who 131 | 132 | 133 | 134 | yogeshwaran01 135 | : 136 | ~ 137 | $ whoa 138 | 139 | 140 | 141 | yogeshwaran01 142 | : 143 | ~ 144 | $ whoam 145 | 146 | 147 | 148 | yogeshwaran01 149 | : 150 | ~ 151 | $ whoami 152 | 153 | 154 | 155 | yogeshwaran01 156 | : 157 | ~ 158 | $ whoami 159 | 160 | 161 | 162 | 163 | 164 | YOGESHWARAN R 165 | 166 | 167 | yogeshwaran01 168 | : 169 | ~ 170 | $ g 171 | 172 | 173 | 174 | yogeshwaran01 175 | : 176 | ~ 177 | $ gi 178 | 179 | 180 | 181 | yogeshwaran01 182 | : 183 | ~ 184 | $ git 185 | 186 | 187 | 188 | yogeshwaran01 189 | : 190 | ~ 191 | $ git 192 | 193 | 194 | 195 | yogeshwaran01 196 | : 197 | ~ 198 | $ git s 199 | 200 | 201 | 202 | yogeshwaran01 203 | : 204 | ~ 205 | $ git st 206 | 207 | 208 | 209 | yogeshwaran01 210 | : 211 | ~ 212 | $ git sta 213 | 214 | 215 | 216 | yogeshwaran01 217 | : 218 | ~ 219 | $ git stat 220 | 221 | 222 | 223 | yogeshwaran01 224 | : 225 | ~ 226 | $ git statu 227 | 228 | 229 | 230 | yogeshwaran01 231 | : 232 | ~ 233 | $ git status 234 | 235 | 236 | 237 | yogeshwaran01 238 | : 239 | ~ 240 | $ git status 241 | 242 | 243 | GitHub Status 244 | 245 | 246 | ╔═══════════════╤════════════╗ 247 | 248 | 249 | 250 | Title 251 | 252 | Count 253 | 254 | 255 | 256 | ╟───────────────┼────────────╢ 257 | 258 | 259 | 260 | Stars 261 | 262 | 101 263 | 264 | 265 | 266 | 267 | Forks 268 | 269 | 19 270 | 271 | 272 | 273 | 274 | Commits 275 | 276 | 719 277 | 278 | 279 | 280 | 281 | Followers 282 | 283 | 13 284 | 285 | 286 | 287 | 288 | Pull Requests 289 | 290 | 42 291 | 292 | 293 | 294 | 295 | Issues 296 | 297 | 0 298 | 299 | 300 | 301 | 302 | Repository 303 | 304 | 21 305 | 306 | 307 | 308 | 309 | Gists 310 | 311 | 5 312 | 313 | 314 | 315 | ╚═══════════════╧════════════╝ 316 | 317 | 318 | yogeshwaran01 319 | : 320 | ~ 321 | $ u 322 | 323 | 324 | 325 | yogeshwaran01 326 | : 327 | ~ 328 | $ up 329 | 330 | 331 | 332 | yogeshwaran01 333 | : 334 | ~ 335 | $ upt 336 | 337 | 338 | 339 | yogeshwaran01 340 | : 341 | ~ 342 | $ upti 343 | 344 | 345 | 346 | yogeshwaran01 347 | : 348 | ~ 349 | $ uptim 350 | 351 | 352 | 353 | yogeshwaran01 354 | : 355 | ~ 356 | $ uptime 357 | 358 | 359 | 360 | yogeshwaran01 361 | : 362 | ~ 363 | $ uptime 364 | 365 | 366 | 397 367 | 368 | 369 | yogeshwaran01 370 | : 371 | ~ 372 | $ e 373 | 374 | 375 | 376 | yogeshwaran01 377 | : 378 | ~ 379 | $ ex 380 | 381 | 382 | 383 | yogeshwaran01 384 | : 385 | ~ 386 | $ exi 387 | 388 | 389 | 390 | yogeshwaran01 391 | : 392 | ~ 393 | $ exit 394 | 395 | 396 | 397 | yogeshwaran01 398 | : 399 | ~ 400 | $ exit 401 | 402 | 403 | exit 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511 | 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | 520 | 521 | 522 | 523 | 524 | 525 | 526 | 527 | 528 | 529 | 530 | 531 | 532 | 533 | 534 | 535 | 536 | 537 | 538 | 539 | 540 | 541 | 542 | 543 | 544 | 545 | 546 | 547 | 548 | 549 | 550 | 551 | 552 | 553 | 554 | 555 | 556 | 557 | 558 | 559 | 560 | 561 | 562 | 563 | 564 | 565 | 566 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | 589 | 590 | 591 | 592 | 593 | 594 | 595 | 596 | 597 | 598 | 599 | 600 | 601 | 602 | 603 | 604 | 605 | 606 | 607 | 608 | 609 | 610 | 611 | 612 | 613 | 614 | 615 | 616 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 642 | 643 | 644 | 645 | 646 | 647 | 648 | 649 | 650 | 651 | 652 | 653 | 654 | 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 | 664 | 665 | 666 | 667 | 668 | 669 | 670 | 671 | 672 | 673 | 674 | 675 | 676 | 677 | 678 | 679 | 680 | 681 | 682 | 683 | 684 | 685 | 686 | 687 | 688 | 689 | 690 | 691 | 692 | 693 | 694 | 695 | 696 | 697 | 698 | 699 | 700 | 701 | 702 | 703 | 704 | 705 | 706 | 707 | 708 | 709 | 710 | 711 | 712 | 713 | 714 | 715 | 716 | 717 | 718 | 719 | 720 | 721 | 722 | 723 | 724 | 725 | 726 | 727 | 728 | 729 | 730 | 731 | 732 | 733 | 734 | 735 | 736 | 737 | 738 | 739 | 740 | 741 | 742 | 743 | 744 | 745 | 746 | 747 | 748 | 749 | 750 | 751 | 752 | 753 | 754 | 755 | 756 | 757 | 758 | 759 | 760 | 761 | 762 | 763 | 764 | 765 | 766 | 767 | 768 | 769 | 770 | 771 | 772 | 773 | 774 | 775 | 776 | 777 | 778 | 779 | 780 | 781 | 782 | 783 | 784 | 785 | 786 | 787 | 788 | 789 | 790 | 791 | 792 | 793 | 794 | 795 | 796 | 797 | 798 | 799 | 800 | 801 | 802 | 803 | 804 | 805 | 806 | 807 | 808 | 809 | 810 | 811 | 812 | 813 | 814 | 815 | 816 | 817 | 818 | 819 | 820 | 821 | 822 | 823 | 824 | 825 | 826 | 827 | 828 | 829 | 830 | 831 | 832 | 833 | 834 | 835 | 836 | 837 | 838 | 839 | 840 | 841 | 842 | 843 | 844 | 845 | 846 | 847 | 848 | 849 | 850 | 851 | 852 | 853 | 854 | 855 | 856 | 857 | 858 | 859 | 860 | 861 | 862 | 863 | 864 | 865 | 866 | 867 | 868 | 869 | 870 | 871 | 872 | 873 | 874 | 875 | 876 | 877 | 878 | 879 | 880 | 881 | -------------------------------------------------------------------------------- /themes/dracula.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 74 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | yogeshwaran01 107 | : 108 | ~ 109 | $ 110 | 111 | 112 | 113 | yogeshwaran01 114 | : 115 | ~ 116 | $ w 117 | 118 | 119 | 120 | yogeshwaran01 121 | : 122 | ~ 123 | $ wh 124 | 125 | 126 | 127 | yogeshwaran01 128 | : 129 | ~ 130 | $ who 131 | 132 | 133 | 134 | yogeshwaran01 135 | : 136 | ~ 137 | $ whoa 138 | 139 | 140 | 141 | yogeshwaran01 142 | : 143 | ~ 144 | $ whoam 145 | 146 | 147 | 148 | yogeshwaran01 149 | : 150 | ~ 151 | $ whoami 152 | 153 | 154 | 155 | yogeshwaran01 156 | : 157 | ~ 158 | $ whoami 159 | 160 | 161 | 162 | 163 | 164 | YOGESHWARAN R 165 | 166 | 167 | yogeshwaran01 168 | : 169 | ~ 170 | $ g 171 | 172 | 173 | 174 | yogeshwaran01 175 | : 176 | ~ 177 | $ gi 178 | 179 | 180 | 181 | yogeshwaran01 182 | : 183 | ~ 184 | $ git 185 | 186 | 187 | 188 | yogeshwaran01 189 | : 190 | ~ 191 | $ git 192 | 193 | 194 | 195 | yogeshwaran01 196 | : 197 | ~ 198 | $ git s 199 | 200 | 201 | 202 | yogeshwaran01 203 | : 204 | ~ 205 | $ git st 206 | 207 | 208 | 209 | yogeshwaran01 210 | : 211 | ~ 212 | $ git sta 213 | 214 | 215 | 216 | yogeshwaran01 217 | : 218 | ~ 219 | $ git stat 220 | 221 | 222 | 223 | yogeshwaran01 224 | : 225 | ~ 226 | $ git statu 227 | 228 | 229 | 230 | yogeshwaran01 231 | : 232 | ~ 233 | $ git status 234 | 235 | 236 | 237 | yogeshwaran01 238 | : 239 | ~ 240 | $ git status 241 | 242 | 243 | GitHub Status 244 | 245 | 246 | ╔═══════════════╤════════════╗ 247 | 248 | 249 | 250 | Title 251 | 252 | Count 253 | 254 | 255 | 256 | ╟───────────────┼────────────╢ 257 | 258 | 259 | 260 | Stars 261 | 262 | 101 263 | 264 | 265 | 266 | 267 | Forks 268 | 269 | 19 270 | 271 | 272 | 273 | 274 | Commits 275 | 276 | 719 277 | 278 | 279 | 280 | 281 | Followers 282 | 283 | 13 284 | 285 | 286 | 287 | 288 | Pull Requests 289 | 290 | 42 291 | 292 | 293 | 294 | 295 | Issues 296 | 297 | 0 298 | 299 | 300 | 301 | 302 | Repository 303 | 304 | 21 305 | 306 | 307 | 308 | 309 | Gists 310 | 311 | 5 312 | 313 | 314 | 315 | ╚═══════════════╧════════════╝ 316 | 317 | 318 | yogeshwaran01 319 | : 320 | ~ 321 | $ u 322 | 323 | 324 | 325 | yogeshwaran01 326 | : 327 | ~ 328 | $ up 329 | 330 | 331 | 332 | yogeshwaran01 333 | : 334 | ~ 335 | $ upt 336 | 337 | 338 | 339 | yogeshwaran01 340 | : 341 | ~ 342 | $ upti 343 | 344 | 345 | 346 | yogeshwaran01 347 | : 348 | ~ 349 | $ uptim 350 | 351 | 352 | 353 | yogeshwaran01 354 | : 355 | ~ 356 | $ uptime 357 | 358 | 359 | 360 | yogeshwaran01 361 | : 362 | ~ 363 | $ uptime 364 | 365 | 366 | 397 367 | 368 | 369 | yogeshwaran01 370 | : 371 | ~ 372 | $ e 373 | 374 | 375 | 376 | yogeshwaran01 377 | : 378 | ~ 379 | $ ex 380 | 381 | 382 | 383 | yogeshwaran01 384 | : 385 | ~ 386 | $ exi 387 | 388 | 389 | 390 | yogeshwaran01 391 | : 392 | ~ 393 | $ exit 394 | 395 | 396 | 397 | yogeshwaran01 398 | : 399 | ~ 400 | $ exit 401 | 402 | 403 | exit 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511 | 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | 520 | 521 | 522 | 523 | 524 | 525 | 526 | 527 | 528 | 529 | 530 | 531 | 532 | 533 | 534 | 535 | 536 | 537 | 538 | 539 | 540 | 541 | 542 | 543 | 544 | 545 | 546 | 547 | 548 | 549 | 550 | 551 | 552 | 553 | 554 | 555 | 556 | 557 | 558 | 559 | 560 | 561 | 562 | 563 | 564 | 565 | 566 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | 589 | 590 | 591 | 592 | 593 | 594 | 595 | 596 | 597 | 598 | 599 | 600 | 601 | 602 | 603 | 604 | 605 | 606 | 607 | 608 | 609 | 610 | 611 | 612 | 613 | 614 | 615 | 616 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 642 | 643 | 644 | 645 | 646 | 647 | 648 | 649 | 650 | 651 | 652 | 653 | 654 | 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 | 664 | 665 | 666 | 667 | 668 | 669 | 670 | 671 | 672 | 673 | 674 | 675 | 676 | 677 | 678 | 679 | 680 | 681 | 682 | 683 | 684 | 685 | 686 | 687 | 688 | 689 | 690 | 691 | 692 | 693 | 694 | 695 | 696 | 697 | 698 | 699 | 700 | 701 | 702 | 703 | 704 | 705 | 706 | 707 | 708 | 709 | 710 | 711 | 712 | 713 | 714 | 715 | 716 | 717 | 718 | 719 | 720 | 721 | 722 | 723 | 724 | 725 | 726 | 727 | 728 | 729 | 730 | 731 | 732 | 733 | 734 | 735 | 736 | 737 | 738 | 739 | 740 | 741 | 742 | 743 | 744 | 745 | 746 | 747 | 748 | 749 | 750 | 751 | 752 | 753 | 754 | 755 | 756 | 757 | 758 | 759 | 760 | 761 | 762 | 763 | 764 | 765 | 766 | 767 | 768 | 769 | 770 | 771 | 772 | 773 | 774 | 775 | 776 | 777 | 778 | 779 | 780 | 781 | 782 | 783 | 784 | 785 | 786 | 787 | 788 | 789 | 790 | 791 | 792 | 793 | 794 | 795 | 796 | 797 | 798 | 799 | 800 | 801 | 802 | 803 | 804 | 805 | 806 | 807 | 808 | 809 | 810 | 811 | 812 | 813 | 814 | 815 | 816 | 817 | 818 | 819 | 820 | 821 | 822 | 823 | 824 | 825 | 826 | 827 | 828 | 829 | 830 | 831 | 832 | 833 | 834 | 835 | 836 | 837 | 838 | 839 | 840 | 841 | 842 | 843 | 844 | 845 | 846 | 847 | 848 | 849 | 850 | 851 | 852 | 853 | 854 | 855 | 856 | 857 | 858 | 859 | 860 | 861 | 862 | 863 | 864 | 865 | 866 | 867 | 868 | 869 | 870 | 871 | 872 | 873 | 874 | 875 | 876 | 877 | 878 | 879 | 880 | 881 | -------------------------------------------------------------------------------- /updater.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | 3 | const nunjucks = require('nunjucks') 4 | const { GithubUser } = require('./src/github') 5 | const themes = require("./src/theme") 6 | 7 | nunjucks.configure({ autoescape: true }) 8 | 9 | let templateString = fs.readFileSync("template.svg", 'utf-8') 10 | 11 | let username = process.argv[2] 12 | let req_theme = process.argv[3] || "random" 13 | 14 | let user = new GithubUser(username); 15 | user.fetchContent() 16 | .then(() => { 17 | let outString = nunjucks.renderString(templateString, { 18 | data: user, 19 | theme: themes.getTheme(req_theme) 20 | }) 21 | 22 | fs.writeFileSync("./github_stats.svg", outString) 23 | }) 24 | --------------------------------------------------------------------------------