From c58a11e3b5b1ff540876315c0706de4074d3da5f Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 18 Dec 2024 10:55:22 +0530 Subject: [PATCH] xf --- .github/FUNDING.yml | 1 - .github/README.md | 108 ------------------- .github/after.png | Bin 16109 -> 0 bytes .github/before.png | Bin 15680 -> 0 bytes .github/workflows/build.yml | 23 ----- LICENSE | 201 ------------------------------------ contribute.py | 128 ----------------------- test_contribute.py | 32 ------ 8 files changed, 493 deletions(-) delete mode 100644 .github/FUNDING.yml delete mode 100644 .github/README.md delete mode 100644 .github/after.png delete mode 100644 .github/before.png delete mode 100644 .github/workflows/build.yml delete mode 100644 LICENSE delete mode 100755 contribute.py delete mode 100644 test_contribute.py diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index cb033a13a5..0000000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1 +0,0 @@ -github: [Shpota] diff --git a/.github/README.md b/.github/README.md deleted file mode 100644 index 398b1d3e0a..0000000000 --- a/.github/README.md +++ /dev/null @@ -1,108 +0,0 @@ -GitHub Activity Generator [![Gitter](https://badges.gitter.im/github-activity-generator/community.svg)](https://gitter.im/github-activity-generator/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) [![build](https://github.com/Shpota/github-activity-generator/workflows/build/badge.svg)](https://github.com/Shpota/github-activity-generator/actions?query=workflow%3Abuild) -========================= - -A script that helps you *instantly* generate a beautiful GitHub Contributions Graph -for the last year. - -## ⚠ Disclaimer -This script doesn't encourage you to cheat. Cheating is bad. But if anybody judges your professional skills by -the graph on your GitHub profile (which carries no value), they deserve to see a rich graph. - -## Check my other projects - -I created this project more than five years ago. Since then, I have built several **much more valuable -tools** which I encourage you to check: - -- [sol4k](https://github.com/sol4k/sol4k) - Kotlin, JVM, and Android client for Solana -- [podil.js](https://github.com/podiljs/podil) - Lightweight and secure database schema migration tool -- [goxygen](https://github.com/Shpota/goxygen) - Web project generator -- [zeit](https://github.com/Shpota/zeit) - A Fitbit clock face for learners of the German language - - -## What it looks like - -### Before :neutral_face: :no_mouth: :unamused: -![Before](before.png) -### After :muscle: :relieved: :heart: :sunglasses: :metal: :horse: :wink: :fire: :dancer: :santa: :fireworks: :cherries: :tada: -![After](after.png) - -## How to use -1. Create an empty GitHub repository. Do not initialize it. -2. Download [the contribute.py script](https://github.com/Shpota/github-activity-generator/archive/master.zip) -and execute it passing the link on the created repository -```sh -python contribute.py --repository=git@github.com:user/repo.git -``` -Now you have a repository with lots of changes in your GitHub account. -Note: it takes several minutes for GitHub to reindex your activity. - -## How it works -The script initializes an empty git repository, creates a text file and starts -generating changes to the file for every day within the last year (0-20 commits -per day). Once the commits are generated it links the created repository with -the remote repository and pushes the changes. - -## Making contributions private - -You might want to make the generated repository private. It is free -on GitHub. You only need to set up your account -[to show private contributions](https://help.github.com/en/articles/publicizing-or-hiding-your-private-contributions-on-your-profile). -This way GitHub users will see that you contributed something, but they won't be -able to see what exactly. - -## Customizations -You can customize how often to commit and how many commits a day to make, etc. - -For instance, with the following command, the script will make from 1 to 12 -commits a day. It will commit 60% days a year. -```sh -python contribute.py --max_commits=12 --frequency=60 --repository=git@github.com:user/repo.git -``` -Use `--no_weekends` option if you don't want to commit on weekends -```sh -python contribute.py --no_weekends -``` -If you do not set the `--repository` argument the script won't push the changes. -This way you can import the generated repository yourself. - -Use `--days_before` and `--days_after` to specify how many days before the current -date the script should start committing, and how many days after the current date it -will keep committing. - -```sh -python contribute.py --days_before=10 --days_after=15 -``` - -Run `python contribute.py --help` to get help. - -## System requirements -To be able to execute the script you need to have Python and Git installed. - -## Troubleshooting -#### I performed the script but my GitHub activity is still the same. -It might take several minutes for GitHub to reindex your activity. Check -if the repository has new commits and wait a couple of minutes. -#### The changes are still not reflected after some time. -Are you using a private repository? If so, enable showing private contributions -[following this guide](https://help.github.com/en/articles/publicizing-or-hiding-your-private-contributions-on-your-profile). - -#### Still no luck -Make sure the email address you have in GitHub is the same as you have in -your local settings. GitHub counts contributions only when they are made -using the corresponding email. - -Check your local email settings with: -``` -git config --get user.email -``` -If it doesn't match with the one from GitHub reset it with -``` -git config --global user.email "user@example.com" -``` -Create a new repository and rerun the script. - -#### There are errors in the logs of the script. -Maybe you tried to use an existing repository. If so, make sure you are using -a new one which is *not initialized*. - -**If none of the options helped, open an issue and I will fix it as soon as possible.** diff --git a/.github/after.png b/.github/after.png deleted file mode 100644 index e36583572dc845bf306a134ee2a4950fa323f865..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16109 zcmd73Wk8$Hw=PO4g$h!j#l5&&aR?MIR*F;HDeeRaUV^)8k>U=;rMMH^-Q8W1oATRx z-+k`?>~oLY4>uns$vf{%CTrGu=9y>K8}vn9674m?YXk%YG-)ZZuLuZ8sPNARFOlKp z$qwf>{0+(BleF?n_{-y^Q6T&~zN5Ihqmqq@ql>=1F@mYJjg>KzgQ2~#v9*JljpOn2 zRv`ogG6ZQc5oOoZgGF~&<;mId(-a~(BSe3M&m+PjsIkHn$Vl&$H-7&3{N7U0Lj2C{ z(+egui(epyYLzbxs*K-X6uqNwS7UVjwEA8ENBQmB55C@b?_RF5O1+fsy_Q6zL^{NX9r#q}SXiv^o$jE4`W0)JK-(>YN zpJrVR!5TmA)w|nC*>zAf)%@kO<(mWi<&ME+67il` zorP=YHLH!DSIU(CrQ+WqdIwg@CpMZ;XM27OnEm!#ECF~FbWvwc8Pw(ns{jwyLs<3A z4U;DrptN3SF-J{FZ1_PJ_>SD%G)Ni`YaF4C4z#jR8g3d~h1w5(bY68SY{wf|FIgrv`!jnp?vr9Un3^Q06XoI00nBMRo5=epOePZ?6fC-l`I46Kc(+BQG=}{Vm>EM z2lw1_m_3#}T(^ZV=v%8Wh0ytV4L-=|Zudcb3ehFt!yS{(3Vr4GQTA>K59+?fnhtu~ zt$j&0KcLJkysz_U20H1{D6{V|6#41}WB>&#M02;^Az=%JZ}qpz>RtR0rx6D=P?fLG zwN|*U5=dDi|A~I(!eK4PcP-bFI_QqVmTCDuAFC*VnX0#5GM$!`r-;;L86>bS^>h9w z|L)ZzXp_x+Y+v>0NCn@a-=J#@ZDWf6E|$iB;TPjD0&~fpa6egweGWMl+yzujjhm>* z{{XoajJmVcqBK`y%E``q0R4ncD7KKvA#@L}ZEa`H#?&GRi`|RgOTR)vw*Ud4cGV*( zm6j{F5_LolOk;Crw_IWBEA=9OAc;2r_};=B4B$XVxPmGBUOZH5q{20s!P;cv4L()F zQJH=_WG?2eNbUCS(X`G`nC0vET#TEdm$lnN+S<{MhHPtvAgJ3oGKDwE$NX@Y=Zv^F zx$kH76{?#)UDffSLQnN@XrjUn(<=lq+{G+5`?rD(@4Cje<6BR<)lhO10cW2yo$#H$ z;6k&Gtv{~dtCBK@i!Mb+4(zEx+lc}9Y{U>Ng`)809S+xbF*xyN86_O`bR~j*I_e$K zbgi4gGQrlwyEoY>_~&jWL3qB5N$kNQ0Os#0s@pnJ5f&1xMb zvJ6=yS~6sg7(STAjU}a+Y~nn!AZDFUpLBoV9?!FYM~Ajlgl?$89d7-v?TQb6yV>Be z?X2OPT&G;aW08f^8-5S%qiz4LicqqTFcO(3e+*B<_bj&>3ZUJ5A_y0#)IV+ zbw6F38}$Bs>29hF7%TY_FoRJmBm?)&Ld^a|Rw=T}cB3`=b;8!f?mCV73%oO#uh(g( z+omV8XIg7>zsB!q)o4;2c`~*tdQO__@k1LoO}ZIFvmwOUz=Md69bFr`^`p8Zwl^UP zaV@UtDb{#h2gJJzXL)wApzoZusWAfwqujRRIUqwWF-&6gdi)rCHggm~mSlU#fj$ouF(;m^GfIO4mx%ZxrgAnb!p4Cc*{c@f&_pqr~qT}Q^bi2 zp2Pl7=xtpcs6CsUNL8*i!%jEnyfFx--zKw;7n|6YvmB;>S1TT4mF@)K4g;YuH~pwk zkkuO#y|&#n&)_h>SqvSZwKy;~-xdv>i}4jL|&Hf{=EH;==lRtx>+pFhD&4*tO29 zTlYODGi5AP<=?449H$NLfv`7BSy$r;@p!otN=1844yxAi9>=>qZXdoNKdz?PhuxlB z#$sy0w(Ad$SQ9HE!c~}!Nv9umw@=EGXR0 zwsIDNKi@2-;H#bF(Ts+*zs>H|{<6FIggL`_6DuK6K0+7W&$+x>6X}wVmnsA5?y4&js^{{3?FC*!L zIzYmn-3d9-fUrWAuIg?z8;0v5FmOtJj;w-YWOJnv0_A^p&GvCdAUMBEvn?C8?4C%l z7K~)2o2*(9{$?fL1eR`XjYURCRVaF3*=4(;GV$)pyEon7!BnDK|= zd))y~@er+~t#Es$K@zN+^}q#>;a~UI5*jad1#ag(yZX|QtVt%)yq0e0VUL^%&^+-f zgH;M=&W6}bmy3CTa|dvnW_;t;B@i9*1Hu?Di!;+3Yp*zsHx9d_49N=$LK{`SM%FDBte~qOa|LfoyjYW9 zQ!lcx&7girS>AQy(dM8j{ccvCB5u$(KwF}kj&avz?U6zgNYI5u#%y3wFy&dj$H{eT zg?9-4{f*!S-4RplTqcuZ62N3*98#49NvjU0{dRDVB}Kkp1^0s-g4G)#)zhLR+0;gG z__UVJU8mDD$rVCURSzrIha|!y(w-a|35QD!!o*W>3O?KZ7lqHX8C`F1qX<(zO*>N! ze>Z@b9>AJ==Cg-s_+Sn=UPS)R+B>S>Puh@%`C*nbSFdC~>oi%#%lC9*9UEesy?x{E zE7^)noUrr@l}2qeN5|FEuJWf;4Eio-M6ZE(cU0q5!u*}MNBJ{NZClUXXDI7qyHlk* zIW!QcdIDn{9s? zbvyvt6{NEV$q_sksSIA%dVo?mBYovL21ll(G{VZH!H&u2yrdrXiRozMh>nDO;nEmK z{Hx62WEE^dnDt10ZI8!<8)f=e;~W}ihb<|HS>}s2tbWY0s7d>)RAbvcyJBU)u-S~G zd&Za-4gi{l!>$V+>|Wgt-ya%cu<|#=h7K|lEPsHw)j!Z=ZjS>hds-A`r%eBnF`DG{ zxemRqR$T+>195?=^PfG>-bq$uA8pD4%}$_3?ZC9;HWfJks!vc~bg?anNjQ5|$;

<4-kIm64d`7-;wv*TDK@_viBfrG=kRzFm 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

1aR>q2?rVIrf4#rB1m5hgfnTyQV zfZ{Mf`Acj$Se20cpJK~=ntCt!yVeH!8IiN)G997*#8x|K*na)A?zgkL!*=6d$8h}w zw6|$;PGs7U^%61tjlsb!vTgYNDlIM585VcxNM}W%cwo5FKD7fWjomdIxy|^k2#x=ohEn zxc4zqGC43mU!lQ6n_>|Vpe5BS6lf`q`|>~M09q<&2?G#+DdPiPN?KT0XekE=2QB~8 Z10-iEZsNAPk<>4}0MbfQm6ArE{~y^UJB|PV diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index a75a686961..0000000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: build -on: [push, pull_request] -jobs: - build: - runs-on: ubuntu-latest - strategy: - matrix: - python-version: ["3.8", "3.9", "3.10", "3.11"] - steps: - - uses: actions/checkout@v2 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} - - name: Install dependencies - run: pip install flake8 - - name: Lint - run: | - flake8 contribute.py - flake8 test_contribute.py - - name: Test for commits - run: | - python -m unittest test_contribute \ No newline at end of file diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 261eeb9e9f..0000000000 --- a/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/contribute.py b/contribute.py deleted file mode 100755 index 0bb6202fdd..0000000000 --- a/contribute.py +++ /dev/null @@ -1,128 +0,0 @@ -#!/usr/bin/env python -import argparse -import os -from datetime import datetime -from datetime import timedelta -from random import randint -from subprocess import Popen -import sys - - -def main(def_args=sys.argv[1:]): - args = arguments(def_args) - curr_date = datetime.now() - directory = 'repository-' + curr_date.strftime('%Y-%m-%d-%H-%M-%S') - repository = args.repository - user_name = args.user_name - user_email = args.user_email - if repository is not None: - start = repository.rfind('/') + 1 - end = repository.rfind('.') - directory = repository[start:end] - no_weekends = args.no_weekends - frequency = args.frequency - days_before = args.days_before - if days_before < 0: - sys.exit('days_before must not be negative') - days_after = args.days_after - if days_after < 0: - sys.exit('days_after must not be negative') - os.mkdir(directory) - os.chdir(directory) - run(['git', 'init', '-b', 'main']) - - if user_name is not None: - run(['git', 'config', 'user.name', user_name]) - - if user_email is not None: - run(['git', 'config', 'user.email', user_email]) - - start_date = curr_date.replace(hour=20, minute=0) - timedelta(days_before) - for day in (start_date + timedelta(n) for n - in range(days_before + days_after)): - if (not no_weekends or day.weekday() < 5) \ - and randint(0, 100) < frequency: - for commit_time in (day + timedelta(minutes=m) - for m in range(contributions_per_day(args))): - contribute(commit_time) - - if repository is not None: - run(['git', 'remote', 'add', 'origin', repository]) - run(['git', 'branch', '-M', 'main']) - run(['git', 'push', '-u', 'origin', 'main']) - - print('\nRepository generation ' + - '\x1b[6;30;42mcompleted successfully\x1b[0m!') - - -def contribute(date): - with open(os.path.join(os.getcwd(), 'README.md'), 'a') as file: - file.write(message(date) + '\n\n') - run(['git', 'add', '.']) - run(['git', 'commit', '-m', '"%s"' % message(date), - '--date', date.strftime('"%Y-%m-%d %H:%M:%S"')]) - - -def run(commands): - Popen(commands).wait() - - -def message(date): - return date.strftime('Contribution: %Y-%m-%d %H:%M') - - -def contributions_per_day(args): - max_c = args.max_commits - if max_c > 20: - max_c = 20 - if max_c < 1: - max_c = 1 - return randint(1, max_c) - - -def arguments(argsval): - parser = argparse.ArgumentParser() - parser.add_argument('-nw', '--no_weekends', - required=False, action='store_true', default=False, - help="""do not commit on weekends""") - parser.add_argument('-mc', '--max_commits', type=int, default=10, - required=False, help="""Defines the maximum amount of - commits a day the script can make. Accepts a number - from 1 to 20. If N is specified the script commits - from 1 to N times a day. The exact number of commits - is defined randomly for each day. The default value - is 10.""") - parser.add_argument('-fr', '--frequency', type=int, default=80, - required=False, help="""Percentage of days when the - script performs commits. If N is specified, the script - will commit N%% of days in a year. The default value - is 80.""") - parser.add_argument('-r', '--repository', type=str, required=False, - help="""A link on an empty non-initialized remote git - repository. If specified, the script pushes the changes - to the repository. The link is accepted in SSH or HTTPS - format. For example: git@github.com:user/repo.git or - https://github.com/user/repo.git""") - parser.add_argument('-un', '--user_name', type=str, required=False, - help="""Overrides user.name git config. - If not specified, the global config is used.""") - parser.add_argument('-ue', '--user_email', type=str, required=False, - help="""Overrides user.email git config. - If not specified, the global config is used.""") - parser.add_argument('-db', '--days_before', type=int, default=365, - required=False, help="""Specifies the number of days - before the current date when the script will start - adding commits. For example: if it is set to 30 the - first commit date will be the current date minus 30 - days.""") - parser.add_argument('-da', '--days_after', type=int, default=0, - required=False, help="""Specifies the number of days - after the current date until which the script will be - adding commits. For example: if it is set to 30 the - last commit will be on a future date which is the - current date plus 30 days.""") - return parser.parse_args(argsval) - - -if __name__ == "__main__": - main() diff --git a/test_contribute.py b/test_contribute.py deleted file mode 100644 index 35ea228b7d..0000000000 --- a/test_contribute.py +++ /dev/null @@ -1,32 +0,0 @@ -import unittest -import contribute -from subprocess import check_output - - -class TestContribute(unittest.TestCase): - - def test_arguments(self): - args = contribute.arguments(['-nw']) - self.assertTrue(args.no_weekends) - self.assertEqual(args.max_commits, 10) - self.assertTrue(1 <= contribute.contributions_per_day(args) <= 20) - - def test_contributions_per_day(self): - args = contribute.arguments(['-nw']) - self.assertTrue(1 <= contribute.contributions_per_day(args) <= 20) - - def test_commits(self): - contribute.NUM = 11 # limiting the number only for unittesting - contribute.main(['-nw', - '--user_name=sampleusername', - '--user_email=your-username@users.noreply.github.com', - '-mc=12', - '-fr=82', - '-db=10', - '-da=15']) - self.assertTrue(1 <= int(check_output( - ['git', - 'rev-list', - '--count', - 'HEAD'] - ).decode('utf-8')) <= 20*(10 + 15))