Fixed cached loop
Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
This commit is contained in:
		
							parent
							
								
									75bcb43962
								
							
						
					
					
						commit
						d8bb3d6dd9
					
				
							
								
								
									
										34
									
								
								ChallengeLeaguePointSolver/C++/scripts/build.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										34
									
								
								ChallengeLeaguePointSolver/C++/scripts/build.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,34 @@ | ||||
| #Compiles the entire program then runs it, producing an executable. If the "test" argument is included, will try and run tests too (in the test folder). If the "full" argument is included, it will recopmile the PixelGameEngine (should it change) | ||||
| #C++ | ||||
| printf "Running program...\n\n\n" | ||||
| output=$(dpkg -l | grep libx11-dev) | ||||
| if [[ -z $output ]] | ||||
| then | ||||
|     sudo apt install libx11-dev libpulse-dev mesa-common-dev libpng-dev libstdc++-12-dev | ||||
| fi | ||||
| if [ ! -f "pixelGameEngine.o" ] | ||||
| then | ||||
|     printf "Pixel Game Engine compile object missing. Compiling for the first time..." | ||||
|     g++ -c pixelGameEngine.cpp | ||||
| fi | ||||
| if [ "$1" = "test" ] | ||||
| then | ||||
|     printf "Running tests...\n" | ||||
|     echo "#define TEST_SUITE" > ./test/test.h | ||||
|     if g++ $(find . -type f -name "*.cpp" -not -name "pixelGameEngine.cpp") pixelGameEngine.o ${CUSTOM_PARAMS} -o ${PROJECT_NAME}; then | ||||
|         ./${PROJECT_NAME} "$@" | ||||
|     fi | ||||
| elif [ "$1" = "full" ] | ||||
| then | ||||
|     echo "" > ./test/test.h | ||||
|     g++ -c pixelGameEngine.cpp | ||||
|     if g++ $(find . -type f -name "*.cpp" -not -path "./test/*" -not -name "pixelGameEngine.cpp") pixelGameEngine.o ${CUSTOM_PARAMS} -o ${PROJECT_NAME}; then | ||||
|         ./${PROJECT_NAME} "$@" | ||||
|     fi | ||||
| else | ||||
|     echo "" > ./test/test.h | ||||
|     if g++ $(find . -type f -name "*.cpp" -not -path "./test/*" -not -name "pixelGameEngine.cpp") pixelGameEngine.o ${CUSTOM_PARAMS} -o ${PROJECT_NAME}; then | ||||
|         ./${PROJECT_NAME} "$@" | ||||
|     fi | ||||
| fi | ||||
| printf "\n\n" | ||||
							
								
								
									
										21
									
								
								ChallengeLeaguePointSolver/C++/scripts/commit.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										21
									
								
								ChallengeLeaguePointSolver/C++/scripts/commit.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,21 @@ | ||||
| #Adds a commit message and pushes project to github repository. | ||||
| #C++ | ||||
| COMMIT_MESSAGE="$*" | ||||
| FIRST_LINE=true | ||||
| while IFS= read -r line | ||||
| do | ||||
| if [ "$FIRST_LINE" = true ]; then | ||||
|   COMMIT_MESSAGE+=" | ||||
| 
 | ||||
| Co-authored-by: $line" | ||||
| FIRST_LINE=false | ||||
| else | ||||
|   COMMIT_MESSAGE+=" | ||||
| Co-authored-by: $line" | ||||
| fi | ||||
| done < utils/.coauthors | ||||
| git config --global credential.helper store | ||||
| git add -u | ||||
| git add * | ||||
| git commit -m "$COMMIT_MESSAGE" | ||||
| git push | ||||
							
								
								
									
										22
									
								
								ChallengeLeaguePointSolver/C++/scripts/debug.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										22
									
								
								ChallengeLeaguePointSolver/C++/scripts/debug.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,22 @@ | ||||
| #Compiles the entire program with debug flags then runs it in gdb. If the "test" argument is included, will try and run tests too (in the test folder) | ||||
| #C++ | ||||
| printf "Running program...\n\n\n" | ||||
| output=$(dpkg -l | grep libx11-dev) | ||||
| if [[ -z $output ]] | ||||
| then | ||||
|     sudo apt install libx11-dev libpulse-dev mesa-common-dev libpng-dev libstdc++-12-dev | ||||
| fi | ||||
| if [ "$1" = "test" ] | ||||
| then | ||||
|     printf "Running tests...\n" | ||||
|     echo "#define TEST_SUITE" > ./test/test.h | ||||
|     if g++ $(find . -type f -name "*.cpp") -g ${CUSTOM_PARAMS} -o ${PROJECT_NAME}; then | ||||
|         gdb ./${PROJECT_NAME} "$@" | ||||
|     fi | ||||
| else | ||||
|     echo "" > ./test/test.h | ||||
|     if g++ $(find . -type f -name "*.cpp" -not -path "./test/*") -g ${CUSTOM_PARAMS} -o ${PROJECT_NAME}; then | ||||
|         gdb ./${PROJECT_NAME} "$@" | ||||
|     fi | ||||
| fi | ||||
| printf "\n\n" | ||||
							
								
								
									
										7
									
								
								ChallengeLeaguePointSolver/C++/scripts/filelist
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								ChallengeLeaguePointSolver/C++/scripts/filelist
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,7 @@ | ||||
| build.sh | ||||
| commit.sh | ||||
| debug.sh | ||||
| lines.sh | ||||
| release.sh | ||||
| temp | ||||
| web.sh | ||||
							
								
								
									
										14
									
								
								ChallengeLeaguePointSolver/C++/scripts/lines.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										14
									
								
								ChallengeLeaguePointSolver/C++/scripts/lines.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,14 @@ | ||||
| #Returns the line counts of your project. | ||||
| #C++ | ||||
| shopt -s extglob | ||||
| ls -1 @(*.h|*.cpp) > temp | ||||
| while read a; do | ||||
|   if [ "$a" != "pixelGameEngine.h" ] && [ "$a" != "soundwaveEngine.h" ] && [ "$a" != "splash.h" ]; | ||||
|   then | ||||
|     echo -e "$a\n" >> temp2 | ||||
|   fi | ||||
| done < temp | ||||
| wc -l $(cat temp2) | ||||
| 
 | ||||
| rm temp | ||||
| rm temp2 | ||||
							
								
								
									
										7
									
								
								ChallengeLeaguePointSolver/C++/scripts/md5
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								ChallengeLeaguePointSolver/C++/scripts/md5
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,7 @@ | ||||
| build.sh:c073187e65d0e23aa77aa94af4ec6382  - | ||||
| commit.sh:1af81bf417dfb932284d8a14fdd10657  - | ||||
| debug.sh:8125f303032b6cbc137223df63d10096  - | ||||
| lines.sh:3b907786f7fc9204025993016c9080de  - | ||||
| release.sh:b1ce8461a303e8e7aa9ed74259db3873  - | ||||
| temp:d41d8cd98f00b204e9800998ecf8427e  - | ||||
| web.sh:cd3b8a99e208244dee7576bc23c0dc80  - | ||||
							
								
								
									
										20
									
								
								ChallengeLeaguePointSolver/C++/scripts/release.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										20
									
								
								ChallengeLeaguePointSolver/C++/scripts/release.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,20 @@ | ||||
| #Creates a release build that focuses on high runtime performance. Use "full" argument to completely rebuild PGE. | ||||
| #C++ | ||||
| printf "Running program...\n\n\n" | ||||
| output=$(dpkg -l | grep libx11-dev) | ||||
| if [[ -z $output ]] | ||||
| then | ||||
|     sudo apt install libx11-dev libpulse-dev mesa-common-dev libpng-dev libstdc++-12-dev | ||||
| fi | ||||
| if [ "$1" == "full" ]; then | ||||
|     rm "pixelGameEngine.o" | ||||
| fi | ||||
| if [ ! -f "pixelGameEngine.o" ] | ||||
| then | ||||
|     printf "Pixel Game Engine compile object missing. Compiling for the first time..." | ||||
|     g++ -c pixelGameEngine.cpp | ||||
| fi | ||||
| if g++ $(find . -type f -name "*.cpp" -not -path "./test/*" -not -name "pixelGameEngine.cpp") pixelGameEngine.o ${CUSTOM_PARAMS} -o ${PROJECT_NAME}; then | ||||
|     ./${PROJECT_NAME} "$@" | ||||
| fi | ||||
| printf "\n\n" | ||||
							
								
								
									
										0
									
								
								ChallengeLeaguePointSolver/C++/scripts/temp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								ChallengeLeaguePointSolver/C++/scripts/temp
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										46
									
								
								ChallengeLeaguePointSolver/C++/scripts/web.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										46
									
								
								ChallengeLeaguePointSolver/C++/scripts/web.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,46 @@ | ||||
| #Compiles emscripten instance of this project for the web. Use "full" argument if your PGE has to be completely rebuilt. Use "headless" argument for a headless version. | ||||
| #C++ | ||||
| output=$(dpkg -l | grep libx11-dev) | ||||
| if [[ -z $output ]] | ||||
| then | ||||
|     sudo apt install libx11-dev libpulse-dev mesa-common-dev libpng-dev libstdc++-12-dev | ||||
| fi | ||||
| if [[ "$1" == "full" || "$2" == "full" ]]; then | ||||
|     rm "pixelGameEngine_wasm.o" | ||||
| fi | ||||
| source ../emsdk/emsdk_env.sh | ||||
| if [ ! -f "pixelGameEngine_wasm.o" ] | ||||
| then | ||||
|     printf "Pixel Game Engine compile object missing. Compiling for the first time..." | ||||
|     em++ -std=c++20 -O2 ${EMSCRIPTEN_CUSTOM_PARAMS} -s ALLOW_MEMORY_GROWTH=1 -s MAXIMUM_MEMORY=4GB -s MAX_WEBGL_VERSION=2 -s MIN_WEBGL_VERSION=2 -s USE_SDL_MIXER=2 -s USE_LIBPNG=1 -c pixelGameEngine.cpp -o pixelGameEngine_wasm.o | ||||
| fi | ||||
| if [ -d "assets" ]; then | ||||
|     em++ -std=c++20 -O2 ${EMSCRIPTEN_CUSTOM_PARAMS} -s ALLOW_MEMORY_GROWTH=1 -s MAXIMUM_MEMORY=4GB -s MAX_WEBGL_VERSION=2 -s MIN_WEBGL_VERSION=2 -s USE_SDL_MIXER=2 -s USE_LIBPNG=1 $(find . -type f -name "*.cpp" -not -path "./test/*" -not -name "pixelGameEngine.cpp") pixelGameEngine_wasm.o -o ${PROJECT_NAME}.html --preload-file ./assets | ||||
| else | ||||
|     em++ -std=c++20 -O2 ${EMSCRIPTEN_CUSTOM_PARAMS} -s ALLOW_MEMORY_GROWTH=1 -s MAXIMUM_MEMORY=4GB -s MAX_WEBGL_VERSION=2 -s MIN_WEBGL_VERSION=2 -s USE_SDL_MIXER=2 -s USE_LIBPNG=1 $(find . -type f -name "*.cpp" -not -path "./test/*" -not -name "pixelGameEngine.cpp") pixelGameEngine_wasm.o -o ${PROJECT_NAME}.html | ||||
| fi | ||||
| 
 | ||||
| cp buildtemplate.html ${PROJECT_NAME}.html | ||||
| sed -i "s/_REPLACEME_/$PROJECT_NAME.js/" ${PROJECT_NAME}.html | ||||
| 
 | ||||
| if [[ "$1" == "headless" || "$2" == "headless" ]]; then | ||||
|     echo "Running as headless web server" | ||||
|     emrun --no_browser ${PROJECT_NAME}.html | ||||
| else | ||||
|     emrun --serve_after_close ${PROJECT_NAME}.html | ||||
| fi | ||||
| 
 | ||||
| if [ $? -eq 127 ] | ||||
| then | ||||
|     echo "Failed to find Emscripten. Running install script." | ||||
|     PWD=$(pwd) | ||||
|     cd .. | ||||
|     git clone https://github.com/emscripten-core/emsdk.git | ||||
|     cd emsdk | ||||
|     git pull | ||||
|     ./emsdk install latest | ||||
|     ./emsdk activate latest | ||||
|     source ./emsdk_env.sh | ||||
|     cd $PWD | ||||
|     echo "Emscripten has been installed. Try running the command again." | ||||
| fi | ||||
							
								
								
									
										
											BIN
										
									
								
								ChallengeLeaguePointSolver/C++ProjectTemplate
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								ChallengeLeaguePointSolver/C++ProjectTemplate
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										75
									
								
								ChallengeLeaguePointSolver/C++ProjectTemplate.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								ChallengeLeaguePointSolver/C++ProjectTemplate.html
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,75 @@ | ||||
| 
 | ||||
| <!doctype html> | ||||
| <html lang="en-us"> | ||||
|     <head> | ||||
|         <meta name="viewport" content="width=device-width, initial-scale=1"> | ||||
|         <meta charset="utf-8"> | ||||
|         <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> | ||||
|         <title>Emscripten-Generated Code</title> | ||||
|         <style> | ||||
| html,body {	width: 100%; height: 100%; } | ||||
| body { font-family: arial; margin: 0; padding: 0; background: #000; } | ||||
| 
 | ||||
| .emscripten { padding-right: 0; margin-left: auto; margin-right: auto; display: block; } | ||||
| div.emscripten_border { border: none; } | ||||
| 
 | ||||
| /* the canvas *must not* have any border or padding, or mouse coords will be wrong */ | ||||
| canvas.emscripten { border: 0px none; background-color: black; } | ||||
|         </style> | ||||
|     </head> | ||||
|     <body> | ||||
|         <canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault()" tabindex=-1></canvas> | ||||
|         <script type='text/javascript'> | ||||
| var Module = { | ||||
|     preRun: [], | ||||
|     postRun: [], | ||||
|     canvas: (function() { | ||||
|         var canvas = document.getElementById('canvas'); | ||||
| 
 | ||||
|         // As a default initial behavior, pop up an alert when webgl context is lost. To make your | ||||
|         // application robust, you may want to override this behavior before shipping! | ||||
|         // See http://www.khronos.org/registry/webgl/specs/latest/1.0/#5.15.2 | ||||
|         canvas.addEventListener("webglcontextlost", function(e) { alert('WebGL context lost. You will need to reload the page.'); e.preventDefault(); }, false); | ||||
| 
 | ||||
|         return canvas; | ||||
|     })(), | ||||
| }; | ||||
|         </script> | ||||
|         <script async type="text/javascript" src="C++ProjectTemplate.js"></script> | ||||
|         <script type="text/javascript"> | ||||
| Module.canvas.addEventListener("resize", (e) => { | ||||
| 
 | ||||
|     var viewWidth = e.detail.width; | ||||
|     var viewHeight = e.detail.width / Module._olc_WindowAspectRatio; | ||||
| 
 | ||||
|     if(viewHeight > e.detail.height) | ||||
|     { | ||||
|         viewHeight = e.detail.height; | ||||
|         viewWidth = e.detail.height * Module._olc_WindowAspectRatio; | ||||
|     } | ||||
| 
 | ||||
|     // update dom attributes | ||||
|     Module.canvas.setAttribute("width", viewWidth); | ||||
|     Module.canvas.setAttribute("height", viewHeight); | ||||
| 
 | ||||
|     var top = (e.detail.height - viewHeight) / 2; | ||||
|     var left = (e.detail.width - viewWidth) / 2; | ||||
| 
 | ||||
|     // update styles | ||||
|     Module.canvas.style.position = "fixed"; | ||||
|     Module.canvas.style.top = top.toString() + "px"; | ||||
|     Module.canvas.style.left = left.toString() + "px"; | ||||
|     Module.canvas.style.width = ""; | ||||
|     Module.canvas.style.height = ""; | ||||
| 
 | ||||
|     // trigger PGE update | ||||
|     Module._olc_PGE_UpdateWindowSize(viewWidth, viewHeight); | ||||
| 
 | ||||
|     // ensure canvas has focus | ||||
|     Module.canvas.focus(); | ||||
|     e.preventDefault(); | ||||
| }); | ||||
| </script> | ||||
| 
 | ||||
|     </body> | ||||
| </html> | ||||
							
								
								
									
										1
									
								
								ChallengeLeaguePointSolver/C++ProjectTemplate.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								ChallengeLeaguePointSolver/C++ProjectTemplate.js
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								ChallengeLeaguePointSolver/C++ProjectTemplate.wasm
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								ChallengeLeaguePointSolver/C++ProjectTemplate.wasm
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							| @ -49,7 +49,7 @@ struct SongCombinations{ | ||||
| int main(){ | ||||
|     std::vector<ScoreData>dataA,dataB; | ||||
|     std::vector<std::pair<int,int>>player1Score,player2Score,player3Score; | ||||
|     std::ifstream file("team2.csv"); | ||||
|     std::ifstream file("team2"); | ||||
|     std::string line; | ||||
|     //First two lines are garbage data.
 | ||||
|     std::getline(file,line); | ||||
| @ -64,10 +64,10 @@ int main(){ | ||||
|             stoi(GetNext(marker,line)), | ||||
|             stoi(GetNext(marker,line)), | ||||
|             stoi(GetNext(marker,line))}; | ||||
|         player1Score.emplace_back(std::pair<int,int>{dat.ex1,0}); | ||||
|         player2Score.emplace_back(std::pair<int,int>{dat.ex2,0}); | ||||
|         player3Score.emplace_back(std::pair<int,int>{dat.ex3,0}); | ||||
|         dataA.emplace_back(dat); | ||||
|         player1Score.push_back(std::pair<int,int>{dat.ex1,0}); | ||||
|         player2Score.push_back(std::pair<int,int>{dat.ex2,0}); | ||||
|         player3Score.push_back(std::pair<int,int>{dat.ex3,0}); | ||||
|         dataA.push_back(dat); | ||||
|     } | ||||
|     //Two more lines of garbage data.
 | ||||
|     std::getline(file,line); | ||||
| @ -85,7 +85,7 @@ int main(){ | ||||
|         player1Score[i].second=dat.ex1; | ||||
|         player2Score[i].second=dat.ex2; | ||||
|         player3Score[i].second=dat.ex3; | ||||
|         dataB.emplace_back(dat); | ||||
|         dataB.push_back(dat); | ||||
|     } | ||||
|     std::cout<<"File Contents:"<<std::endl<<std::endl; | ||||
|     for(auto&list:{dataA,dataB}){ | ||||
| @ -100,7 +100,7 @@ int main(){ | ||||
|         for(int j=0;j<5;j++){ | ||||
|             for(int k=0;k<5;k++){ | ||||
|                 if(i+j+k==6){ | ||||
|                     cases.emplace_back(TestCase{i,j,k}); | ||||
|                     cases.push_back(TestCase{i,j,k}); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| @ -110,19 +110,19 @@ int main(){ | ||||
|         if(combinations.remainingA>0&&combinations.p1Picked.count(index)==0&&combinations.p2Picked.count(index)==0&&combinations.p3Picked.count(index)==0){ | ||||
|             combinations.remainingA--; | ||||
|             combinations.totalEX+=dat[index].ex1; | ||||
|             combinations.p1.emplace_back(std::pair<int,int>{index,dat[index].ex1}); | ||||
|             combinations.p1.push_back(std::pair<int,int>{index,dat[index].ex1}); | ||||
|             combinations.p1Picked.insert(index); | ||||
|         }else | ||||
|         if(combinations.remainingB>0&&combinations.p1Picked.count(index)==0&&combinations.p2Picked.count(index)==0&&combinations.p3Picked.count(index)==0){ | ||||
|             combinations.remainingB--; | ||||
|             combinations.totalEX+=dat[index].ex2; | ||||
|             combinations.p2.emplace_back(std::pair<int,int>{index,dat[index].ex2}); | ||||
|             combinations.p2.push_back(std::pair<int,int>{index,dat[index].ex2}); | ||||
|             combinations.p2Picked.insert(index); | ||||
|         }else | ||||
|         if(combinations.remainingC>0&&combinations.p1Picked.count(index)==0&&combinations.p2Picked.count(index)==0&&combinations.p3Picked.count(index)==0){ | ||||
|             combinations.remainingC--; | ||||
|             combinations.totalEX+=dat[index].ex3; | ||||
|             combinations.p3.emplace_back(std::pair<int,int>{index,dat[index].ex3}); | ||||
|             combinations.p3.push_back(std::pair<int,int>{index,dat[index].ex3}); | ||||
|             combinations.p3Picked.insert(index); | ||||
|         } | ||||
|     }; | ||||
| @ -134,8 +134,9 @@ int main(){ | ||||
|         bestComboA[caseInd].remainingA=_case.p1Amt; | ||||
|         bestComboA[caseInd].remainingB=_case.p2Amt; | ||||
|         bestComboA[caseInd].remainingC=_case.p3Amt; | ||||
|         SongCombinations testCombo=bestComboA[caseInd]; | ||||
|         for(int i=0;i<12;i++){ | ||||
|             SongCombinations c1=bestComboA[caseInd]; | ||||
|             SongCombinations c1=testCombo; | ||||
|             ChooseSong(c1,dataA,i); | ||||
|             for(int j=0;j<12;j++){ | ||||
|                 SongCombinations c2=c1; | ||||
| @ -183,8 +184,9 @@ int main(){ | ||||
|         bestComboB[caseInd].remainingA=_case.p1Amt; | ||||
|         bestComboB[caseInd].remainingB=_case.p2Amt; | ||||
|         bestComboB[caseInd].remainingC=_case.p3Amt; | ||||
|         SongCombinations testCombo=bestComboB[caseInd]; | ||||
|         for(int i=0;i<12;i++){ | ||||
|             SongCombinations c1=bestComboB[caseInd]; | ||||
|             SongCombinations c1=testCombo; | ||||
|             ChooseSong(c1,dataB,i); | ||||
|             for(int j=0;j<12;j++){ | ||||
|                 SongCombinations c2=c1; | ||||
|  | ||||
							
								
								
									
										33
									
								
								ChallengeLeaguePointSolver/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								ChallengeLeaguePointSolver/README.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,33 @@ | ||||
| This repository contains general build scripts and pipelines for all languages that I incorporate in my projects. The goal is to provide an easy retrieval and update system for the project. Each script will be a shell script containing the following template: | ||||
| ```bash | ||||
|     #Short description about what I do | ||||
|     #Language[Folder] | ||||
|     # #The script's code goes in here. | ||||
|     # rm -Rf out/* | ||||
|     # javac -Xlint:unchecked -cp ${PROJECT_DIR}/.. -d ${OUT_DIR} ${PROJECT_DIR}/*.java | ||||
|     # printf "\n\n\nRunning Program...\n\n" | ||||
|     # cd $OUT_DIR | ||||
|     # java ${MAIN_CLASS} "$@" | ||||
|     # ../scripts/clean.sh | ||||
|      | ||||
| ``` | ||||
| Each language will be in the following structure: | ||||
| ``` | ||||
|     -<Language> | ||||
|     --<scripts> | ||||
|     ---[script files.sh] | ||||
| ``` | ||||
| 
 | ||||
| The `sig` script will display by default any scripts in the `scripts` folder, therefore when creating a project, copy over the scripts folder of the desired language into your project then the `sig` script handles the rest appropriately. If your project requires multiple languages and build setups, then you can use the `sig2` command, which has an additional parameter to specify the language when running it. When setting up a multi-language setup, you'll just copy the entire folder to include the programming language itself. So a multi-language project structure may look something like this: | ||||
| ``` | ||||
|     -C | ||||
|     --scripts | ||||
|     ---build.sh | ||||
|     ---clean.sh | ||||
|     ---make.sh | ||||
|     -Java | ||||
|     --scripts | ||||
|     ---build.sh | ||||
|     ---clean.sh | ||||
|     ---jar.sh | ||||
| ``` | ||||
							
								
								
									
										
											BIN
										
									
								
								ChallengeLeaguePointSolver/a.out
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								ChallengeLeaguePointSolver/a.out
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										75
									
								
								ChallengeLeaguePointSolver/buildtemplate.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								ChallengeLeaguePointSolver/buildtemplate.html
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,75 @@ | ||||
| 
 | ||||
| <!doctype html> | ||||
| <html lang="en-us"> | ||||
|     <head> | ||||
|         <meta name="viewport" content="width=device-width, initial-scale=1"> | ||||
|         <meta charset="utf-8"> | ||||
|         <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> | ||||
|         <title>Emscripten-Generated Code</title> | ||||
|         <style> | ||||
| html,body {	width: 100%; height: 100%; } | ||||
| body { font-family: arial; margin: 0; padding: 0; background: #000; } | ||||
| 
 | ||||
| .emscripten { padding-right: 0; margin-left: auto; margin-right: auto; display: block; } | ||||
| div.emscripten_border { border: none; } | ||||
| 
 | ||||
| /* the canvas *must not* have any border or padding, or mouse coords will be wrong */ | ||||
| canvas.emscripten { border: 0px none; background-color: black; } | ||||
|         </style> | ||||
|     </head> | ||||
|     <body> | ||||
|         <canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault()" tabindex=-1></canvas> | ||||
|         <script type='text/javascript'> | ||||
| var Module = { | ||||
|     preRun: [], | ||||
|     postRun: [], | ||||
|     canvas: (function() { | ||||
|         var canvas = document.getElementById('canvas'); | ||||
| 
 | ||||
|         // As a default initial behavior, pop up an alert when webgl context is lost. To make your | ||||
|         // application robust, you may want to override this behavior before shipping! | ||||
|         // See http://www.khronos.org/registry/webgl/specs/latest/1.0/#5.15.2 | ||||
|         canvas.addEventListener("webglcontextlost", function(e) { alert('WebGL context lost. You will need to reload the page.'); e.preventDefault(); }, false); | ||||
| 
 | ||||
|         return canvas; | ||||
|     })(), | ||||
| }; | ||||
|         </script> | ||||
|         <script async type="text/javascript" src="_REPLACEME_"></script> | ||||
|         <script type="text/javascript"> | ||||
| Module.canvas.addEventListener("resize", (e) => { | ||||
| 
 | ||||
|     var viewWidth = e.detail.width; | ||||
|     var viewHeight = e.detail.width / Module._olc_WindowAspectRatio; | ||||
| 
 | ||||
|     if(viewHeight > e.detail.height) | ||||
|     { | ||||
|         viewHeight = e.detail.height; | ||||
|         viewWidth = e.detail.height * Module._olc_WindowAspectRatio; | ||||
|     } | ||||
| 
 | ||||
|     // update dom attributes | ||||
|     Module.canvas.setAttribute("width", viewWidth); | ||||
|     Module.canvas.setAttribute("height", viewHeight); | ||||
| 
 | ||||
|     var top = (e.detail.height - viewHeight) / 2; | ||||
|     var left = (e.detail.width - viewWidth) / 2; | ||||
| 
 | ||||
|     // update styles | ||||
|     Module.canvas.style.position = "fixed"; | ||||
|     Module.canvas.style.top = top.toString() + "px"; | ||||
|     Module.canvas.style.left = left.toString() + "px"; | ||||
|     Module.canvas.style.width = ""; | ||||
|     Module.canvas.style.height = ""; | ||||
| 
 | ||||
|     // trigger PGE update | ||||
|     Module._olc_PGE_UpdateWindowSize(viewWidth, viewHeight); | ||||
| 
 | ||||
|     // ensure canvas has focus | ||||
|     Module.canvas.focus(); | ||||
|     e.preventDefault(); | ||||
| }); | ||||
| </script> | ||||
| 
 | ||||
|     </body> | ||||
| </html> | ||||
							
								
								
									
										
											BIN
										
									
								
								ChallengeLeaguePointSolver/dirtblock.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								ChallengeLeaguePointSolver/dirtblock.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 35 KiB | 
							
								
								
									
										211
									
								
								ChallengeLeaguePointSolver/main.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										211
									
								
								ChallengeLeaguePointSolver/main.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,211 @@ | ||||
| 
 | ||||
| #include "pixelGameEngine.h" | ||||
| 
 | ||||
| //THIS IS WRITTEN USING OLC GPE, CHECK OUT onelonecoder.com
 | ||||
| //Or else
 | ||||
| class Snake : public olc::PixelGameEngine { | ||||
| public: | ||||
| 	Snake() { | ||||
| 		sAppName = "Snake"; | ||||
| 	} | ||||
| 
 | ||||
| 	enum direction { STOP, LEFT, RIGHT, DOWN, UP }; | ||||
| 	direction dir; | ||||
| 	//Game variables
 | ||||
| 	int score; | ||||
| 	//Snake variables
 | ||||
| 	float SnakeXPos, SnakeYPos; | ||||
| 	float tailUpdateTimer=0; | ||||
| 	int tailX[1000], tailY[1000], tailLength = 0; | ||||
| 	float x, y; | ||||
| 	//Target variables
 | ||||
| 	int fruit1X, fruit1Y, fruit2X, fruit2Y; | ||||
| 	bool fruit1 = false, fruit2 = false; | ||||
| 	bool GameOver; | ||||
| 
 | ||||
| 	void SnakeDead() { | ||||
| 		if (GameOver == true) { | ||||
| 			Clear(olc::BLACK); | ||||
| 			DrawString(ScreenWidth() - ((ScreenWidth() / 2) + (ScreenWidth() / 2.8)), ScreenHeight() / 2 - 5, "Game Over", olc::RED, 1); | ||||
| 		} | ||||
| 	} | ||||
| 	void BorderCollisionCheck() { | ||||
| 		if (SnakeXPos <= 3) { | ||||
| 			GameOver = true; | ||||
| 			SnakeDead(); | ||||
| 		} | ||||
| 		if (SnakeXPos >= ScreenWidth() - 3) { | ||||
| 			GameOver = true; | ||||
| 			SnakeDead(); | ||||
| 		} | ||||
| 		if (SnakeYPos <= 3) { | ||||
| 			GameOver = true; | ||||
| 			SnakeDead(); | ||||
| 		} | ||||
| 		if (SnakeYPos >= ScreenHeight() - 3) { | ||||
| 			GameOver = true; | ||||
| 			SnakeDead(); | ||||
| 		} | ||||
| 	} | ||||
| 	void userInput(float speed) { | ||||
| 		if (GetKey(olc::Key::UP).bPressed && dir != DOWN) { | ||||
| 			dir = UP; | ||||
| 		} | ||||
| 		if (GetKey(olc::Key::DOWN).bPressed && dir != UP) { | ||||
| 			dir = DOWN; | ||||
| 		} | ||||
| 		if (GetKey(olc::Key::LEFT).bPressed && dir != RIGHT) { | ||||
| 			dir = LEFT; | ||||
| 		} | ||||
| 		if (GetKey(olc::Key::RIGHT).bPressed && dir != LEFT) { | ||||
| 			dir = RIGHT; | ||||
| 		} | ||||
| 
 | ||||
| 		//Move Snake
 | ||||
| 		switch (dir) { | ||||
| 		case LEFT: | ||||
| 			SnakeXPos -= speed; | ||||
| 			break; | ||||
| 		case RIGHT: | ||||
| 			SnakeXPos += speed; | ||||
| 			break; | ||||
| 		case DOWN: | ||||
| 			SnakeYPos += speed; | ||||
| 			break; | ||||
| 		case UP: | ||||
| 			SnakeYPos -= speed; | ||||
| 			break; | ||||
| 		} | ||||
| 	} | ||||
| 	void FruitCoordGen() { | ||||
| 		//Fruit1
 | ||||
| 		if (fruit1 == false) { | ||||
| 			fruit1X = rand() & ScreenWidth(); | ||||
| 			fruit1Y = rand() & ScreenHeight(); | ||||
| 			fruit1 = true; | ||||
| 		} | ||||
| 		if (fruit1X <= 2 || fruit1X >= ScreenWidth() - 2) { | ||||
| 			fruit1X = rand() & ScreenWidth(); | ||||
| 		} | ||||
| 		if (fruit1Y <= 2 || fruit1Y >= ScreenHeight() - 2) { | ||||
| 			fruit1Y = rand() & ScreenHeight(); | ||||
| 		} | ||||
| 		//Fruit2
 | ||||
| 		//if (fruit2 == false) {
 | ||||
| 			//fruit2X = rand() & ScreenWidth();
 | ||||
| 			//fruit2Y = rand() & ScreenHeight();
 | ||||
| 			//fruit2 = true;
 | ||||
| 		//}
 | ||||
| 		//if (fruit2X <= 2 || fruit2X >= ScreenWidth() - 2) {
 | ||||
| 			//fruit1X = rand() & ScreenWidth();
 | ||||
| 		//}
 | ||||
| 		//if (fruit2Y <= 2 || fruit2Y >= ScreenHeight() - 2) {
 | ||||
| 			//fruit1Y = rand() & ScreenHeight();
 | ||||
| 		//}
 | ||||
| 		//if (fruit1X == fruit2X) {
 | ||||
| 			//fruit1X = rand() & ScreenWidth();
 | ||||
| 		//}
 | ||||
| 		//if (fruit1Y == fruit2Y) {
 | ||||
| 			//fruit1Y = rand() & ScreenWidth();
 | ||||
| 		//}
 | ||||
| 	} | ||||
| 
 | ||||
| private: | ||||
| 
 | ||||
| public: | ||||
| 	bool OnUserUpdate(float fElapsedTime) override { | ||||
| 
 | ||||
| 		float speed = 20 * fElapsedTime; | ||||
| 		Clear(olc::BLACK); | ||||
| 		//Draw top border
 | ||||
| 		DrawLine(2, 2, ScreenWidth() - 2, 2, olc::WHITE); | ||||
| 		//Draw left border
 | ||||
| 		DrawLine(2, 2, 2, ScreenHeight() - 2, olc::WHITE); | ||||
| 		//Draw right border
 | ||||
| 		DrawLine(ScreenWidth() - 2, 2, ScreenWidth() - 2, ScreenHeight() - 2, olc::WHITE); | ||||
| 		//Draw bottom border
 | ||||
| 		DrawLine(2, ScreenHeight() - 2, ScreenWidth() - 2, ScreenHeight() - 2, olc::WHITE); | ||||
| 
 | ||||
| 		olc::vi2d SnakeHead(SnakeXPos, SnakeYPos); | ||||
| 		olc::vi2d SnakeHeadSize(2, 2); | ||||
| 
 | ||||
| 		olc::vi2d Fruit(fruit1X, fruit1Y); | ||||
| 		olc::vu2d FruitSize(2, 2); | ||||
| 
 | ||||
| 		//Snake and fruit collision
 | ||||
| 		if (SnakeHead.x < Fruit.x + FruitSize.x && | ||||
| 			SnakeHead.x + SnakeHeadSize.x > Fruit.x && | ||||
| 			SnakeHead.y < Fruit.y + FruitSize.y && | ||||
| 			SnakeHead.y + SnakeHeadSize.y > Fruit.y) { | ||||
| 			fruit1 = false; | ||||
| 			score++; | ||||
| 			tailLength++; | ||||
| 		} | ||||
| 
 | ||||
| 		//Draw fruit
 | ||||
| 		DrawRect(fruit1X, fruit1Y, 1, 1, olc::RED); | ||||
| 
 | ||||
| 		//Fruit coord gen
 | ||||
| 		FruitCoordGen(); | ||||
| 
 | ||||
| 		//Border collision
 | ||||
| 		BorderCollisionCheck(); | ||||
| 
 | ||||
| 		tailUpdateTimer -= fElapsedTime; //Decrement the tail timer by the game elapsed time.
 | ||||
| 		if ( tailUpdateTimer <= 0 ) { | ||||
| 			//In order to create a tail following trail, start from the back-most tail and work your way up to the front, setting the previous tail's position to the current tail index's position.
 | ||||
| 			for (int i = tailLength - 1; i > 0; i--) { | ||||
| 				tailX[i]=tailX[i-1]; | ||||
| 				tailY[i]=tailY[i-1]; | ||||
| 			} | ||||
| 			//Now set the front-most tail to the current snake head's position.
 | ||||
| 			tailX[0]=SnakeXPos; | ||||
| 			tailY[0]=SnakeYPos; | ||||
| 			tailUpdateTimer=0.05; //Every 0.05 seconds we will re-update the tail positions instead of doing it by frame-based timing.
 | ||||
| 		} | ||||
| 
 | ||||
| 		//Draw Snake tail
 | ||||
| 		if (tailLength >= 1) { | ||||
| 			for (int i = 0; i < tailLength; i++) { | ||||
| 				DrawRect(tailX[i], tailY[i], 1, 1, olc::GREEN); | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		//Snake position gets adjusted here.
 | ||||
| 		userInput(speed); | ||||
| 
 | ||||
| 		//Draw the Snake at its new position.
 | ||||
| 		DrawRect(SnakeXPos, SnakeYPos, 1, 1, olc::DARK_GREEN); | ||||
| 
 | ||||
| 		return true; | ||||
| 	} | ||||
| 
 | ||||
| 	bool OnUserCreate() override { | ||||
| 		srand(time(NULL)); | ||||
| 		dir = STOP; | ||||
| 		//Snake X coord gen
 | ||||
| 		SnakeXPos = rand() & ScreenWidth(); | ||||
| 		if (SnakeXPos <= 3 || SnakeXPos >= ScreenWidth() - 3) { | ||||
| 			SnakeXPos = rand() & ScreenWidth(); | ||||
| 		} | ||||
| 		if (SnakeXPos <= 3 || SnakeXPos >= ScreenHeight() - 3) { | ||||
| 			SnakeXPos = rand() & ScreenHeight(); | ||||
| 		} | ||||
| 		//Snake Y coord gen
 | ||||
| 		SnakeYPos = rand() & ScreenWidth(); | ||||
| 		if (SnakeYPos <= 3 || SnakeYPos >= ScreenWidth() - 3) { | ||||
| 			SnakeYPos = rand() & ScreenWidth(); | ||||
| 		} | ||||
| 		if (SnakeYPos <= 3 || SnakeYPos >= ScreenHeight() - 3) { | ||||
| 			SnakeYPos = rand() & ScreenHeight(); | ||||
| 		} | ||||
| 		return true; | ||||
| 	} | ||||
| }; | ||||
| 
 | ||||
| int main() { | ||||
| 	Snake demo; | ||||
| 	if (demo.Construct(100, 100, 10, 10)) | ||||
| 		demo.Start(); | ||||
| 	return 0; | ||||
| } | ||||
							
								
								
									
										2
									
								
								ChallengeLeaguePointSolver/pixelGameEngine.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								ChallengeLeaguePointSolver/pixelGameEngine.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | ||||
| #define OLC_PGE_APPLICATION | ||||
| #include "pixelGameEngine.h" | ||||
							
								
								
									
										6711
									
								
								ChallengeLeaguePointSolver/pixelGameEngine.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6711
									
								
								ChallengeLeaguePointSolver/pixelGameEngine.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								ChallengeLeaguePointSolver/pixelGameEngine.o
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								ChallengeLeaguePointSolver/pixelGameEngine.o
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								ChallengeLeaguePointSolver/pixelGameEngine_wasm.o
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								ChallengeLeaguePointSolver/pixelGameEngine_wasm.o
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										10
									
								
								ChallengeLeaguePointSolver/sig
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										10
									
								
								ChallengeLeaguePointSolver/sig
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,10 @@ | ||||
| export AUTO_UPDATE=true | ||||
| 
 | ||||
| source utils/define.sh | ||||
| 
 | ||||
| define PROJECT_NAME "ChampionsLeaguePointSolver" | ||||
| define CUSTOM_PARAMS "-std=c++17 -lX11 -lGL -lpthread -lpng -lstdc++fs -I/usr/include/lua5.3" | ||||
| define EMSCRIPTEN_CUSTOM_PARAMS "" | ||||
| define LANGUAGE "C++" | ||||
| 
 | ||||
| source utils/main.sh | ||||
							
								
								
									
										1
									
								
								ChallengeLeaguePointSolver/utils/.coauthors
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								ChallengeLeaguePointSolver/utils/.coauthors
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| sigonasr2 <sigonasr2@gmail.com> | ||||
							
								
								
									
										5
									
								
								ChallengeLeaguePointSolver/utils/.updateDirectories
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								ChallengeLeaguePointSolver/utils/.updateDirectories
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | ||||
| Java/ | ||||
| C/ | ||||
| C++/ | ||||
| scripts/ | ||||
| utils/ | ||||
							
								
								
									
										26
									
								
								ChallengeLeaguePointSolver/utils/define.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										26
									
								
								ChallengeLeaguePointSolver/utils/define.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,26 @@ | ||||
| export VARS=("") | ||||
| 
 | ||||
| export LANGUAGE="" | ||||
| 
 | ||||
| function define() { | ||||
|   VARS+=("$1") | ||||
|   value="${*:2}" | ||||
|   eval export "$1"='$value' | ||||
| } | ||||
| 
 | ||||
| if [[ $(pwd) != *"SigScript" && $AUTO_UPDATE = "true" && $1 != "update" ]]; then | ||||
|   source utils/search.sh | ||||
| 
 | ||||
|   find . -type f -name md5 -delete | ||||
|   find . -type f -name filelist -delete | ||||
| 
 | ||||
|   #Check for hashes | ||||
|   FILES=$(cat utils/.updateDirectories) | ||||
|   for f in $FILES | ||||
|   do  | ||||
|       search $f | ||||
|       check $f | ||||
|   done | ||||
| else | ||||
|   echo "Dev build, no checks required." | ||||
| fi | ||||
							
								
								
									
										5
									
								
								ChallengeLeaguePointSolver/utils/filelist
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								ChallengeLeaguePointSolver/utils/filelist
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | ||||
| .coauthors | ||||
| define.sh | ||||
| main.sh | ||||
| search.sh | ||||
| .updateDirectories | ||||
							
								
								
									
										28
									
								
								ChallengeLeaguePointSolver/utils/main.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								ChallengeLeaguePointSolver/utils/main.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,28 @@ | ||||
| if [ -z "$1" ] | ||||
|   then | ||||
|     echo "" | ||||
|     echo "  Usage: ./sig <command> {args}" | ||||
|     echo "" | ||||
|     printf "====\tCurrent Configuration" | ||||
|     printf "\t=====================" | ||||
|     for t in ${VARS[@]} | ||||
|     do | ||||
|       printf "\n\t%-15s%20s" $t ${!t} | ||||
|     done | ||||
|     printf "\n=====================================================" | ||||
|     echo "" | ||||
|     echo "" | ||||
|     echo "  Command List:" | ||||
|     FILES=$(ls -1A ./$LANGUAGE/scripts 2>/dev/null | sed -e 's/\.sh$//' | sed -e 's/^/    /') | ||||
|     for f in $FILES | ||||
|     do | ||||
|       if [ -f "./$LANGUAGE/scripts/$f.sh" ]; then | ||||
|         DESC="$(head -n1 ./$LANGUAGE/scripts/$f.sh)" | ||||
|         printf "\n\t%-15s%-65s" $f "${DESC:1}" | ||||
|       fi | ||||
|     done | ||||
|     echo "" | ||||
|     exit | ||||
| fi | ||||
| 
 | ||||
| ./$LANGUAGE/scripts/$1.sh "${@:2}" | ||||
							
								
								
									
										4
									
								
								ChallengeLeaguePointSolver/utils/md5
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								ChallengeLeaguePointSolver/utils/md5
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,4 @@ | ||||
| define.sh:3ecab0dffe2adfb950f3eb7c7061b750  - | ||||
| main.sh:4e6e9f0650ec790ce2c4364db94f0caa  - | ||||
| search.sh:30e1842e9a13452ea883bb6516d28e1c  - | ||||
| .updateDirectories:971afb892e8280cb4c9ad43fb72a46a0  - | ||||
							
								
								
									
										103
									
								
								ChallengeLeaguePointSolver/utils/search.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										103
									
								
								ChallengeLeaguePointSolver/utils/search.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,103 @@ | ||||
| function search() { | ||||
|     FILES2=$(ls -A $1 2>/dev/null) | ||||
|     for g in $FILES2 | ||||
|     do | ||||
|         if [ -d $1$g ]; | ||||
|         then | ||||
|             echo "$1$g is a directory" | ||||
|             search $1$g/ | ||||
|         else  | ||||
|             echo "$1$g is a file" | ||||
|             if [ $g != "md5" ] && [ $g != "filelist" ] && [ $g != ".package.files" ]; then | ||||
|                 if [ $g != ".coauthors" ] && [ $g != "version_info" ]; then | ||||
|                     SUM=$(md5sum < $1$g) | ||||
|                     echo "$g:$SUM" >> $1md5 | ||||
|                 fi | ||||
|                 echo "$g" >> $1filelist | ||||
|             else | ||||
|                 echo "  ignoring $g..." | ||||
|             fi | ||||
|         fi | ||||
|     done | ||||
| } | ||||
| 
 | ||||
| function check() { | ||||
|     echo "Check $1" | ||||
|     FILES2=$(ls -A $1 2>/dev/null) | ||||
|     if [ -f "$1/md5" ]; | ||||
|     then | ||||
|         echo "   md5: http://sig.projectdivar.com/sigonasr2/SigScript/raw/branch/main/$1md5" | ||||
|         curl -H 'Cache-Control: no-cache, no-store' -s "http://sig.projectdivar.com/sigonasr2/SigScript/raw/branch/main/$1md5" --output /tmp/out | ||||
|         cmp -s $1/md5 /tmp/out | ||||
|         if [ "$?" -ne 0 ]  | ||||
|         then | ||||
|             echo " Differences detected!" | ||||
|             cat /tmp/out  | ||||
|             while IFS= read -r line | ||||
|             do | ||||
|                 IFS=':' read -ra split <<< $line | ||||
|                 g="${split[0]}" | ||||
|                 echo "LINE -- $g"  | ||||
|                 if [ "$g" != "md5" ] && [ "$g" != "filelist" ] && [ "$g" != ".package.files" ]; then | ||||
|                     if [ -f $1$g ]; | ||||
|                     then | ||||
|                         if [ "$g" != ".coauthors" ] && [ "$g" != "version_info" ]; then | ||||
|                             echo "++Redownload $1$g..." | ||||
|                             if [ -f "$1$g" ]; then | ||||
|                                 curl -H 'Cache-Control: no-cache, no-store' "http://sig.projectdivar.com/sigonasr2/SigScript/raw/branch/main/$1$g" --output $1$g | ||||
|                             else | ||||
|                                 echo "===Could not find directory, assuming regular scripts directory exists." | ||||
|                                 curl -H 'Cache-Control: no-cache, no-store' "http://sig.projectdivar.com/sigonasr2/SigScript/raw/branch/main/$1$g" --output $LANGUAGE/scripts/$g | ||||
|                             fi | ||||
|                         fi | ||||
|                     else  | ||||
|                         echo "++==Downloading $1$g..." | ||||
|                         curl -H 'Cache-Control: no-cache, no-store' "http://sig.projectdivar.com/sigonasr2/SigScript/raw/branch/main/$1$g" --output $1$g | ||||
|                     fi | ||||
|                 fi | ||||
|             done < /tmp/out | ||||
|         fi | ||||
|     fi | ||||
|     if [ -f "$1/filelist" ]; | ||||
|     then | ||||
|         echo "   filelist: http://sig.projectdivar.com/sigonasr2/SigScript/raw/branch/main/$1filelist" | ||||
|         curl -H 'Cache-Control: no-cache, no-store' -s "http://sig.projectdivar.com/sigonasr2/SigScript/raw/branch/main/$1filelist" --output /tmp/out | ||||
|         cmp -s $1/filelist /tmp/out | ||||
|         if [ "$?" -ne 0 ]  | ||||
|         then | ||||
|             echo " Differences detected!" | ||||
|             cat /tmp/out  | ||||
|             while IFS= read -r line | ||||
|             do | ||||
|                 IFS=':' read -ra split <<< $line | ||||
|                 g="${split[0]}" | ||||
|                 echo "LINE -- $g"  | ||||
|                 if [ "$g" != "md5" ] && [ "$g" != "filelist" ] && [ "$g" != ".package.files" ]; then | ||||
|                     if [ -f $1$g ]; | ||||
|                     then | ||||
|                         if [ "$g" != ".coauthors" ] && [ "$g" != "version_info" ]; then | ||||
|                             echo "++Redownload $1$g..." | ||||
|                             if [ -f "$1$g" ]; then | ||||
|                                 curl -H 'Cache-Control: no-cache, no-store' "http://sig.projectdivar.com/sigonasr2/SigScript/raw/branch/main/$1$g" --output $1$g | ||||
|                             else | ||||
|                                 echo "===Could not find directory, assuming regular scripts directory exists." | ||||
|                                 curl -H 'Cache-Control: no-cache, no-store' "http://sig.projectdivar.com/sigonasr2/SigScript/raw/branch/main/$1$g" --output $LANGUAGE/scripts/$g | ||||
|                             fi | ||||
|                         fi | ||||
|                     else  | ||||
|                         echo "++==Downloading $1$g..." | ||||
|                         curl -H 'Cache-Control: no-cache, no-store' "http://sig.projectdivar.com/sigonasr2/SigScript/raw/branch/main/$1$g" --output $1$g | ||||
|                     fi | ||||
|                 fi | ||||
|             done < /tmp/out | ||||
|         fi | ||||
|     fi | ||||
|     for g in $FILES2 | ||||
|     do | ||||
|         if [ -d $1$g ]; | ||||
|         then | ||||
|             echo "$1$g is a directory" | ||||
|             check $1$g/ | ||||
|         fi | ||||
|     done | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user