Add PTB support and fallback for missing wget
* Add support for Discord PTB and update the documentation accordingly * Add curl as a fallback when wget is not installed * Fix installation directory being /opt/discord-stable regardless of version * Remove suffix from the Stable version (now simply discord/Discord) * Exit with exit code 1 on error * Miscellaneous minor edits and fixes
This commit is contained in:
		
							parent
							
								
									295f383a75
								
							
						
					
					
						commit
						3f417e97a2
					
				
					 4 changed files with 47 additions and 23 deletions
				
			
		
							
								
								
									
										15
									
								
								README.md
									
										
									
									
									
								
							
							
						
						
									
										15
									
								
								README.md
									
										
									
									
									
								
							|  | @ -6,16 +6,19 @@ Unofficial RPM package for Discord. | ||||||
| ## How to use | ## How to use | ||||||
| 1. [Download](https://github.com/RPM-Outpost/discord/archive/master.zip) and extract the zip. | 1. [Download](https://github.com/RPM-Outpost/discord/archive/master.zip) and extract the zip. | ||||||
| 2. Open a terminal and `cd` to the `discord-master` directory. | 2. Open a terminal and `cd` to the `discord-master` directory. | ||||||
| 3. Run `./create-package.sh stable` to get the stable version of Discord, or `./create-package.sh canary` to get the unstable beta version. | 3. Run one of the following depending on the version you want to create a package for: | ||||||
|  |     - Discord Stable: `./create-package.sh stable` | ||||||
|  |     - Discord PTB:     `./create-package.sh ptb` | ||||||
|  |     - Discord Canary: `./create-package.sh canary` | ||||||
| 
 | 
 | ||||||
| ## Features | ## Features | ||||||
| - Downloads the latest version of Discord from the official website | - Downloads the latest version of Discord from the official website | ||||||
| - Creates a ready-to-use RPM package | - Creates a ready-to-use RPM package | ||||||
| - Discord stable and canary can be installed at the same time | - Discord Stable, PTB, and Canary can be installed at the same time | ||||||
| - Adds Discord to the applications' list with a nice HD icon | - Adds Discord to the applications list with a nice HD icon | ||||||
| - Supports Fedora (26, 27), OpenSUSE (Leap) and CentOS (7.x) | - Supports Fedora (26, 27), OpenSUSE (Leap) and CentOS (7.x) | ||||||
| 
 | 
 | ||||||
| ## More informations | ## More information | ||||||
| 
 | 
 | ||||||
| ### Warning - no accents | ### Warning - no accents | ||||||
| 
 | 
 | ||||||
|  | @ -23,9 +26,9 @@ The path where you run the script must **not** contain any special character lik | ||||||
| 
 | 
 | ||||||
| ### How to update | ### How to update | ||||||
| 
 | 
 | ||||||
| When a new version of discord is released, simply run the script again to get the updated version. | When a new version of Discord is released, simply run the script again to get the updated version. | ||||||
| 
 | 
 | ||||||
| ### Requirements | ### Dependencies | ||||||
| The `rpmdevtools` package is required to build RPM packages. The script detects if it isn't installed and offers to install it. | The `rpmdevtools` package is required to build RPM packages. The script detects if it isn't installed and offers to install it. | ||||||
| 
 | 
 | ||||||
| ### About root privileges | ### About root privileges | ||||||
|  |  | ||||||
|  | @ -26,8 +26,17 @@ else | ||||||
| 	distrib="unknown" | 	distrib="unknown" | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| # Initializes $wget_progress: detects if the option --show-progress is available | # Initializes $downloader: checks if wget is installed and fallbacks to curl if it isn't | ||||||
| wget --help | grep -q '\--show-progress' && wget_progress="-q --show-progress" || wget_progress="" | hash wget 2>/dev/null && downloader='wget' || downloader='curl' | ||||||
|  | 
 | ||||||
|  | # Initializes $progress: detects if the downloader has a progress option | ||||||
|  | if [[ "$downloader" == 'wget' ]]; then | ||||||
|  |     wget --help | grep -q '\--show-progress' && \ | ||||||
|  | 	  progress='-q --show-progress' || progress='' | ||||||
|  | else | ||||||
|  |     curl --help | grep -q '\--progress-bar' && \ | ||||||
|  |       progress='--progress-bar' || progress='' | ||||||
|  | fi | ||||||
| 
 | 
 | ||||||
| # ask_yesno question | # ask_yesno question | ||||||
| ## Asks a yes/no question and stores the result in the 'answer' variable | ## Asks a yes/no question and stores the result in the 'answer' variable | ||||||
|  | @ -58,7 +67,7 @@ ask_remove_dir() { | ||||||
| ## If it doesn't exist, creates it. | ## If it doesn't exist, creates it. | ||||||
| manage_dir() { | manage_dir() { | ||||||
| 	if [ -d "$1" ]; then | 	if [ -d "$1" ]; then | ||||||
| 		echo "The $2 directory already exist and may contain outdated data." | 		echo "The $2 directory already exists and may contain outdated data." | ||||||
| 		ask_remove_dir "$1" | 		ask_remove_dir "$1" | ||||||
| 	fi | 	fi | ||||||
| 	mkdir -p "$1" | 	mkdir -p "$1" | ||||||
|  |  | ||||||
|  | @ -20,14 +20,14 @@ elif [[ $distrib == "suse" ]]; then | ||||||
| 	pkg_req='libatomic1, glibc, alsa, gconf2, libnotify, mozilla-nspr >= 4.13, mozilla-nss >= 3.27, libstdc++6, libX11 >= 1.6, libXtst >= 1.2, libappindicator, libc++1, libXScrnSaver' | 	pkg_req='libatomic1, glibc, alsa, gconf2, libnotify, mozilla-nspr >= 4.13, mozilla-nss >= 3.27, libstdc++6, libX11 >= 1.6, libXtst >= 1.2, libappindicator, libc++1, libXScrnSaver' | ||||||
| else | else | ||||||
| 	disp "${red}Sorry, your distribution isn't supported (yet).$reset" | 	disp "${red}Sorry, your distribution isn't supported (yet).$reset" | ||||||
| 	exit | 	exit 1 | ||||||
| fi	 | fi	 | ||||||
| 
 | 
 | ||||||
| # Checks that the version (stable/canary) is given as a parameter. | # Checks that the version (stable/ptb/canary) is given as a parameter. | ||||||
| if [[ $# -ne 1 || $1 != "stable" && $1 != "canary" ]]; then | if [[ $# -ne 1 || $1 != "stable" && $1 != "ptb" && $1 != "canary" ]]; then | ||||||
| 	disp "${red}Wrong or missing parameters!$reset" | 	disp "${red}Wrong or missing parameters!$reset" | ||||||
| 	echo 'Usage: create-package.sh stable/canary' | 	echo 'Usage: create-package.sh [ stable | ptb | canary ]' | ||||||
| 	exit | 	exit 1 | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| # Settings according to the discord type (canary or stable) | # Settings according to the discord type (canary or stable) | ||||||
|  | @ -38,19 +38,33 @@ if [[ $1 == "canary" ]]; then | ||||||
| 	download_url='https://discordapp.com/api/download/canary' | 	download_url='https://discordapp.com/api/download/canary' | ||||||
| 	cut_part=3 | 	cut_part=3 | ||||||
| 	desktop_file="$work_dir/discord-canary.desktop" | 	desktop_file="$work_dir/discord-canary.desktop" | ||||||
|  | elif [[ $1 == "ptb" ]]; then | ||||||
|  | 	app_name='Discord PTB' | ||||||
|  | 	exe_name='DiscordPTB' | ||||||
|  | 	pkg_name='discord-ptb' | ||||||
|  | 	download_url='https://discordapp.com/api/download/ptb' | ||||||
|  | 	cut_part=3 | ||||||
|  | 	desktop_file="$work_dir/discord-ptb.desktop" | ||||||
| else | else | ||||||
| 	app_name='Discord' | 	app_name='Discord' | ||||||
| 	exe_name='Discord' | 	exe_name='Discord' | ||||||
| 	pkg_name='discord-stable' | 	pkg_name='discord' | ||||||
| 	download_url='https://discordapp.com/api/download' | 	download_url='https://discordapp.com/api/download' | ||||||
| 	cut_part=2 | 	cut_part=2 | ||||||
| 	desktop_file="$work_dir/discord-stable.desktop" | 	desktop_file="$work_dir/discord.desktop" | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| # Downloads the discord tar.gz archive and puts its name in the global variable archive_name. | # Downloads the discord tar.gz archive and puts its name in the global variable archive_name. | ||||||
| download_discord() { | download_discord() { | ||||||
| 	echo "Downloading $app_name for linux..." | 	echo "Downloading $app_name for linux..." | ||||||
| 	wget $wget_progress --content-disposition "${download_url}?platform=linux&format=tar.gz" |     if [[ "$downloader" == 'wget' ]]; then | ||||||
|  |       wget --content-disposition $progress "${download_url}?platform=linux&format=tar.gz" | ||||||
|  |     else | ||||||
|  |       # curl's content disposition tends to fail, get the direct URL manually instead and remove the carriage return | ||||||
|  |       direct_url=$(curl -sSI "${download_url}?platform=linux&format=tar.gz" | grep location | awk '{print $2}') | ||||||
|  |       direct_url=${direct_url%$'\r'} | ||||||
|  |       curl -SO $progress $direct_url | ||||||
|  |     fi | ||||||
| 	archive_name="$(ls *.tar.gz)" | 	archive_name="$(ls *.tar.gz)" | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -77,13 +91,11 @@ fi | ||||||
| 
 | 
 | ||||||
| # Extracts the archive: | # Extracts the archive: | ||||||
| echo | echo | ||||||
| if [ ! -d "$downloaded_dir" ]; then | mkdir -p "$downloaded_dir" | ||||||
| 	mkdir "$downloaded_dir" |  | ||||||
| fi |  | ||||||
| extract "$archive_name" "$downloaded_dir" "--strip 1" # --strip 1 gets rid of the top archive's directory | extract "$archive_name" "$downloaded_dir" "--strip 1" # --strip 1 gets rid of the top archive's directory | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # Gets the discord's version number + icon file name | # Gets Discord's version number + icon file name | ||||||
| echo 'Analysing the files...' | echo 'Analysing the files...' | ||||||
| pkg_version="$(echo "$archive_name" | cut -d'-' -f$cut_part | rev | cut -c 8- | rev)" | pkg_version="$(echo "$archive_name" | cut -d'-' -f$cut_part | rev | cut -c 8- | rev)" | ||||||
| # cut -d'-' -fn  splits the archive's name around the '-' character, and takes the n-th part | # cut -d'-' -fn  splits the archive's name around the '-' character, and takes the n-th part | ||||||
|  | @ -108,7 +120,7 @@ rpmbuild --quiet -bb "$spec_file" --define "_topdir $work_dir" --define "_rpmdir | ||||||
| 	--define "desktop_file $desktop_file" --define "pkg_name $pkg_name" --define "pkg_req $pkg_req" | 	--define "desktop_file $desktop_file" --define "pkg_name $pkg_name" --define "pkg_req $pkg_req" | ||||||
| 
 | 
 | ||||||
| disp "${bgreen}Done!${reset_font}" | disp "${bgreen}Done!${reset_font}" | ||||||
| disp "The RPM package is located in the \"RPMs/$arch\" folder." | disp "The RPM package is located in the \"RPMs/$arch\" directory." | ||||||
| disp '----------------' | disp '----------------' | ||||||
| 
 | 
 | ||||||
| ask_remove_dir "$work_dir" | ask_remove_dir "$work_dir" | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ | ||||||
| # downloaded_dir | # downloaded_dir | ||||||
| # desktop_file | # desktop_file | ||||||
| 
 | 
 | ||||||
| %define install_dir /opt/discord-stable | %define install_dir /opt/%{pkg_name} | ||||||
| %define apps_dir /usr/share/applications | %define apps_dir /usr/share/applications | ||||||
| %define _build_id_links none | %define _build_id_links none | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 ObserverOfTime
						ObserverOfTime