You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			420 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			Bash
		
	
			
		
		
	
	
			420 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			Bash
		
	
#!/bin/bash
 | 
						|
DIRECTORY="$(readlink -f "$(dirname "$0")")"
 | 
						|
 | 
						|
function error {
 | 
						|
  echo -e "\e[91m$1\e[39m"
 | 
						|
  exit 1
 | 
						|
}
 | 
						|
 | 
						|
#for text_editor() and script_name() functions
 | 
						|
source "${DIRECTORY}/api" || error "failed to source ${DIRECTORY}/api"
 | 
						|
 | 
						|
#you can specify a preexisting app with variable 1
 | 
						|
if [ ! -z "$1" ];then
 | 
						|
  name="$1"
 | 
						|
  step=2
 | 
						|
  editing=yes
 | 
						|
else
 | 
						|
  name=''
 | 
						|
  step=1
 | 
						|
fi
 | 
						|
 | 
						|
#Sets the height of all dialog windows
 | 
						|
windowheight=400
 | 
						|
 | 
						|
#start on this step:
 | 
						|
#step=3
 | 
						|
#start with this app name:
 | 
						|
#name='Email Checker'
 | 
						|
 | 
						|
while true;do
 | 
						|
  case $step in
 | 
						|
    1) #STEP 1: introduction
 | 
						|
      echo "Welcome to the Create App wizard!
 | 
						|
 | 
						|
With a few simple steps, your project can take advantage of Pi-Apps"\'" features and be displayed in the application list.
 | 
						|
This wizard will save your work as you go." | yad --text-info --fontname=12 --wrap --show-uri \
 | 
						|
        --image="${DIRECTORY}/icons/in-progress.png" --image-on-top \
 | 
						|
        --text="<a href="\""https://github.com/Botspot/pi-apps/wiki/Creating-an-app"\"">READ THIS TUTORIAL FIRST!!</a>" \
 | 
						|
        --title="Create App Wizard" --window-icon="${DIRECTORY}/icons/logo.png" --center --width=310 --height=$((windowheight-100)) \
 | 
						|
        --button=Cancel!"${DIRECTORY}/icons/exit.png":1 \
 | 
						|
        --button=Next!"${DIRECTORY}/icons/forward.png":0 || exit 0
 | 
						|
      step=$((step+1))
 | 
						|
      ;;
 | 
						|
    2) #STEP 2: fill in initial values
 | 
						|
      
 | 
						|
      if [ ! -z "$name" ];then
 | 
						|
        namelocked='yes'
 | 
						|
        echo 'name field is already filled. Making it read-only.'
 | 
						|
      fi
 | 
						|
      
 | 
						|
      if [ -f "${DIRECTORY}/apps/${name}/icon-64.png" ];then
 | 
						|
        iconfield="--field=Icon::RO"
 | 
						|
        iconpath="apps/${name}/icon-64.png"
 | 
						|
      else
 | 
						|
        iconfield="--field=Icon::FL"
 | 
						|
        iconpath="${HOME}/bla"
 | 
						|
      fi
 | 
						|
      
 | 
						|
      #if install script already exists, grey out compatibility line
 | 
						|
      compatibilityentry="--field=Compatibility::CB"
 | 
						|
      compatibilitypreset="64bit and 32bit!32bit only!64bit only"
 | 
						|
      if [ ! -z "$name" ];then
 | 
						|
      #if chosen app already has scripts, set cpu architecture compatibility and grey it out.
 | 
						|
      compatibilityentry="--field=Compatibility::RO"
 | 
						|
        if [ "$(script_name "$name")" == 'install' ] || [ "$(script_name "$name")" == 'install-32 install-64' ];then
 | 
						|
          compatibilitypreset="64bit and 32bit"
 | 
						|
        elif [ "$(script_name "$name")" == 'install-32' ];then
 | 
						|
          compatibilitypreset="32bit only"
 | 
						|
        elif [ "$(script_name "$name")" == 'install-64' ];then
 | 
						|
          compatibilitypreset="64bit only"
 | 
						|
        else
 | 
						|
          #otherwise if app contains no install scripts, make Compatibility field editable.
 | 
						|
          compatibilityentry="--field=Compatibility::CB"
 | 
						|
        fi
 | 
						|
      fi
 | 
						|
      
 | 
						|
      output="$(yad --form \
 | 
						|
        --title="Create App: Step $step" --window-icon="${DIRECTORY}/icons/logo.png" --center --width=310 --height=$((windowheight+200)) \
 | 
						|
        --text="Step ${step}: enter some information. The name field is mandatory." \
 | 
						|
        --field="Name of app:$([ ! -z "$namelocked" ]&&echo ':RO')"  "$name" \
 | 
						|
        "$iconfield" "$iconpath" \
 | 
						|
        --field="Website:" "$(cat "${DIRECTORY}/apps/${name}/website" 2>/dev/null || echo '')" \
 | 
						|
        "$compatibilityentry" "$compatibilitypreset" \
 | 
						|
        --field="Description:":TXT "$(cat "${DIRECTORY}/apps/${name}/description" || cat "${DIRECTORY}/apps/template/description")" \
 | 
						|
        --field="Credits:":TXT "$(cat "${DIRECTORY}/apps/${name}/credits" || cat "${DIRECTORY}/apps/template/credits")" \
 | 
						|
        $([ ! -z $editing ]&&echo "--button=Save!${DIRECTORY}/icons/save.png:4") \
 | 
						|
        --button=Previous!"${DIRECTORY}/icons/back.png":2 \
 | 
						|
        --button=Next!"${DIRECTORY}/icons/forward.png":0 \
 | 
						|
        2>/dev/null)"
 | 
						|
      button=$? #get exit code to determine which button was pressed
 | 
						|
      
 | 
						|
      echo "$button"
 | 
						|
      echo "Output: ${output}EOO"
 | 
						|
      output="$(echo "$output" | tr '|' '\n' )"
 | 
						|
      
 | 
						|
      # if ------ next -- or -------- save ----- was clicked
 | 
						|
      if [ $button == 0 ] || [ $button == 4 ];then
 | 
						|
        name="$(echo "$output" | sed -n '1p')"
 | 
						|
        icon="$(echo "$output" | sed -n '2p')"
 | 
						|
        website="$(echo "$output" | sed -n '3p')"
 | 
						|
        compatibility="$(echo "$output" | sed -n '4p')"
 | 
						|
        description="$(echo -e "$(echo "$output" | sed -n '5p')")"
 | 
						|
        credits="$(echo -e "$(echo "$output" | sed -n '6p')")"
 | 
						|
        
 | 
						|
        
 | 
						|
        if [ -z "$(script_name "$name")" ];then
 | 
						|
          #if app contains no install scripts, then parse yad output
 | 
						|
          #convert compatibility var into machine-readable
 | 
						|
          if [ "$compatibility" == "64bit and 32bit" ];then
 | 
						|
            compatibility='install-32 install-64'
 | 
						|
          elif [ "$compatibility" == "64bit and 32bit" ];then
 | 
						|
            compatibility='install'
 | 
						|
          elif [ "$compatibility" == "32bit only" ];then
 | 
						|
            compatibility='install-32'
 | 
						|
          elif [ "$compatibility" == "64bit only" ];then
 | 
						|
            compatibility='install-64'
 | 
						|
          fi
 | 
						|
        else #app contains install scripts, so ignore yad window's setting (it was greyed out anyway) and set compatibility to whatever it was already.
 | 
						|
          compatibility="$(script_name "$name")"
 | 
						|
        fi
 | 
						|
        
 | 
						|
        #name field must be populated
 | 
						|
        if [ ! -z "$name" ];then
 | 
						|
          #check if name is a duplicate
 | 
						|
          if [ -z "$(ls "${DIRECTORY}/apps" | grep -x "$name")" ] || [ ! -z $namelocked ];then
 | 
						|
            #create app folder
 | 
						|
            mkdir -p "${DIRECTORY}/apps/${name}" || error "failed to create ${DIRECTORY}/apps/${name}!"
 | 
						|
            namelocked='yes'
 | 
						|
            
 | 
						|
            #if website field is populated
 | 
						|
            if [ ! -z "$website" ];then
 | 
						|
              echo "$website" > "${DIRECTORY}/apps/${name}/website"
 | 
						|
              echo "Created ${DIRECTORY}/apps/${name}/website"
 | 
						|
            fi
 | 
						|
            
 | 
						|
            #if icon field is populated and if file exists
 | 
						|
            if [ ! -z "$icon" ] && [ -f "$icon" ];then
 | 
						|
              #ensure imagemagick is installed
 | 
						|
              if [ ! -f /usr/bin/convert ];then
 | 
						|
                yad --text="To resize the images, imagemagick must be installed.
 | 
						|
Install now?" \
 | 
						|
                --text-align=center --center --title='Quick question' --window-icon="${DIRECTORY}/icons/logo.png" \
 | 
						|
                --button=No!"${DIRECTORY}/icons/exit.png":1 --button=Yes!"${DIRECTORY}/icons/check.png":0
 | 
						|
                button=$?
 | 
						|
                if [ $button == 0 ];then
 | 
						|
                  sudo apt install -y --no-install-recommends imagemagick || icon=''
 | 
						|
                else
 | 
						|
                  #clear the icon var to disable the icon
 | 
						|
                  icon=''
 | 
						|
                fi
 | 
						|
              fi
 | 
						|
              #if icon var not empty
 | 
						|
              if [ ! -z "$icon" ];then
 | 
						|
                #scale it to 24x24
 | 
						|
                convert "$icon" -resize 24x24 "${DIRECTORY}/apps/${name}/icon-24.png"
 | 
						|
                if [ -f "${DIRECTORY}/apps/${name}/icon-24.png" ];then
 | 
						|
                  echo "Created ${DIRECTORY}/apps/${name}/icon-24.png from $icon"
 | 
						|
                else
 | 
						|
                  echo "Failed to create ${DIRECTORY}/apps/${name}/icon-24.png from $icon! Most likely you need to install imagemagick."
 | 
						|
                fi
 | 
						|
                #scale it to 64x64
 | 
						|
                convert "$icon" -resize 64x64 "${DIRECTORY}/apps/${name}/icon-64.png"
 | 
						|
                if [ -f "${DIRECTORY}/apps/${name}/icon-64.png" ];then
 | 
						|
                  echo "Created ${DIRECTORY}/apps/${name}/icon-64.png from $icon"
 | 
						|
                else
 | 
						|
                  echo "Failed to create ${DIRECTORY}/apps/${name}/icon-64.png from $icon! Most likely you need to install imagemagick."
 | 
						|
                fi
 | 
						|
              fi
 | 
						|
            fi
 | 
						|
            
 | 
						|
            #if description field is populated
 | 
						|
            if [ ! -z "$description" ];then
 | 
						|
              echo "$description" > "${DIRECTORY}/apps/${name}/description"
 | 
						|
              echo "Created ${DIRECTORY}/apps/${name}/description"
 | 
						|
            fi
 | 
						|
            
 | 
						|
            #if credits field is populated
 | 
						|
            if [ ! -z "$credits" ];then
 | 
						|
              echo "$credits" > "${DIRECTORY}/apps/${name}/credits"
 | 
						|
              echo "Created ${DIRECTORY}/apps/${name}/credits"
 | 
						|
            elif [ -z "$credits" ] && [ -f "${DIRECTORY}/apps/${name}/credits" ] ;then
 | 
						|
              #clear credits if the user wanted them cleared.
 | 
						|
              echo '' > "${DIRECTORY}/apps/${name}/credits"
 | 
						|
            fi
 | 
						|
            
 | 
						|
            step=$((step+1))
 | 
						|
          else
 | 
						|
            echo 'That app name already exists!'
 | 
						|
            yad --title="Error" --window-icon="${DIRECTORY}/icons/logo.png" --center \
 | 
						|
            --text="That app name already exists!
 | 
						|
Do you want to edit ${name}?" --timeout=10 \
 | 
						|
            --button="Edit ${name}!${DIRECTORY}/icons/edit.png":0 --button="Oops, go back!${DIRECTORY}/icons/back.png":1 || name=''
 | 
						|
          fi
 | 
						|
        else
 | 
						|
          echo 'Name of app may not be left blank!'
 | 
						|
          yad --title="Error" --window-icon="${DIRECTORY}/icons/logo.png" --center \
 | 
						|
            --text="Name of app may not be left blank!" --timeout=10 \
 | 
						|
            --button=OK:0
 | 
						|
        fi
 | 
						|
        
 | 
						|
        #if Save was clicked then exit now
 | 
						|
        if [ $button == 4 ];then
 | 
						|
          exit 0
 | 
						|
        fi
 | 
						|
      elif [ $button == 2 ];then
 | 
						|
        #previous - don't save changes
 | 
						|
        step=$((step-1))
 | 
						|
      else
 | 
						|
        #like clicking the X or something 
 | 
						|
        exit 0
 | 
						|
      fi
 | 
						|
      
 | 
						|
      ;;
 | 
						|
    3) #STEP 3: create install script
 | 
						|
      
 | 
						|
      #ask if two install scripts are necessary, of if both architectures can share 1 script
 | 
						|
      if [ "$compatibility" == "install-32 install-64" ] && [ -z "$(script_name "$name")" ];then
 | 
						|
        echo "In the previous page, you said this app is compatible with 64bit and 32bit.
 | 
						|
Do you want two install scripts, one for 32bit and the other for 64bit?
 | 
						|
Or do you want one combined install script?" | yad --text-info --fontname=12 --wrap --show-uri \
 | 
						|
          --title="Create App: Step $step" --window-icon="${DIRECTORY}/icons/logo.png" --center --width=310 --height=$windowheight \
 | 
						|
          --button="Previous!${DIRECTORY}/icons/back.png":1 \
 | 
						|
          --button='2 scripts':2 \
 | 
						|
          --button='1 script':0
 | 
						|
        
 | 
						|
        button=$? #get exit code to determine which button was pressed
 | 
						|
        
 | 
						|
        if [ $button == 1 ];then
 | 
						|
          #button clicked: Previous
 | 
						|
          step=$((step-1))
 | 
						|
          continue #back to top of while loop
 | 
						|
        elif [ ! $button == 0 ] && [ ! $button == 2 ];then
 | 
						|
          #Window manager X, or escape, or terminated
 | 
						|
          exit 0
 | 
						|
        elif [ $button == 0 ];then
 | 
						|
          #button clicked: '1 script'
 | 
						|
          compatibility=install #change compatibility var from 'install-32 install-64' to 'install', to show that only an install script will be created
 | 
						|
        elif [ $button == 2 ];then
 | 
						|
          #button clicked: '2 scripts'
 | 
						|
          true #do nothing, as $compatibility already contains "install-32 install-64"
 | 
						|
        fi
 | 
						|
      fi #end of asking for 1 script or 2 scripts
 | 
						|
      
 | 
						|
      #copy right files from template, based on $compatibility variable
 | 
						|
      if [ "$compatibility" == "install-32" ];then
 | 
						|
        cp -n "${DIRECTORY}/apps/template/install" "${DIRECTORY}/apps/${name}/install-32"
 | 
						|
        
 | 
						|
      elif [ "$compatibility" == "install-64" ];then
 | 
						|
        cp -n "${DIRECTORY}/apps/template/install" "${DIRECTORY}/apps/${name}/install-64"
 | 
						|
        
 | 
						|
      elif [ "$compatibility" == "install" ];then
 | 
						|
        cp -n "${DIRECTORY}/apps/template/install" "${DIRECTORY}/apps/${name}/install"
 | 
						|
        
 | 
						|
      elif [ "$compatibility" == "install-32 install-64" ];then
 | 
						|
        cp -n "${DIRECTORY}/apps/template/install" "${DIRECTORY}/apps/${name}/install-32"
 | 
						|
        cp -n "${DIRECTORY}/apps/template/install" "${DIRECTORY}/apps/${name}/install-64"
 | 
						|
      fi
 | 
						|
      
 | 
						|
      #open the correct file in text editor
 | 
						|
      if [ "$compatibility" == "install-32" ];then
 | 
						|
        text_editor "${DIRECTORY}/apps/${name}/install-32" &
 | 
						|
        
 | 
						|
      elif [ "$compatibility" == "install-64" ];then
 | 
						|
        text_editor "${DIRECTORY}/apps/${name}/install-64" &
 | 
						|
        
 | 
						|
      elif [ "$compatibility" == "install-32 install-64" ];then
 | 
						|
        text_editor "${DIRECTORY}/apps/${name}/install-64" &
 | 
						|
        text_editor "${DIRECTORY}/apps/${name}/install-32" &
 | 
						|
        
 | 
						|
      elif [ "$compatibility" == "install" ];then
 | 
						|
        text_editor "${DIRECTORY}/apps/${name}/install" &
 | 
						|
      fi
 | 
						|
      
 | 
						|
      #install shellcheck if not installed
 | 
						|
      command -v shellcheck >/dev/null || sudo apt install -y shellcheck
 | 
						|
      
 | 
						|
      #if creating 2 scripts
 | 
						|
      if [ "$compatibility" == 'install-32 install-64' ];then
 | 
						|
        
 | 
						|
        yad --form --on-top \
 | 
						|
          --title="Create App: Step $step" --window-icon="${DIRECTORY}/icons/logo.png" --center --width=310 --height=$windowheight \
 | 
						|
          --text="Now it's time to make your install-32 and install-64 scripts.
 | 
						|
 | 
						|
One of these scripts will be executed when somebody clicks your app's Install button.
 | 
						|
Two text editors should have openened and you can create your scripts.
 | 
						|
Need help? <a href="\""https://github.com/Botspot/pi-apps/wiki/Creating-an-app"\"">Read the tutorial!</a>
 | 
						|
Still need help? Botspot can try to help you if you <a href="\""https://github.com/Botspot/pi-apps/issues/new/choose"\"">open in issue.</a>" \
 | 
						|
          --field="Run install-32 script":FBTN "${DIRECTORY}/etc/terminal-run "\""cd $HOME;$'${DIRECTORY}/apps/${name}/install-32';echo 'Closing in 10 seconds.';sleep 10"\"" "\""Running install-32 script of $name"\""" \
 | 
						|
          --field="Shellcheck install-32"!!'Having problems? This utility helps you locate syntax errors.':FBTN "${DIRECTORY}/etc/terminal-run "\""shellcheck $'${DIRECTORY}/apps/${name}/install-32';echo 'Press Enter to exit.';read enter"\"" "\""Shellcheck"\""" \
 | 
						|
          --field="Run install-64 script":FBTN "${DIRECTORY}/etc/terminal-run "\""cd $HOME;$'${DIRECTORY}/apps/${name}/install-64';echo 'Closing in 10 seconds.';sleep 10"\"" "\""Running install-64 script of $name"\""" \
 | 
						|
          --field="Shellcheck install-64"!!'Having problems? This utility locates syntax errors.':FBTN "${DIRECTORY}/etc/terminal-run "\""shellcheck $'${DIRECTORY}/apps/${name}/install-64';echo 'Press Enter to exit.';read enter"\"" "\""Shellcheck"\""" \
 | 
						|
          --button=Previous!"${DIRECTORY}/icons/back.png":2 \
 | 
						|
          --button=Next!"${DIRECTORY}/icons/forward.png":0 \
 | 
						|
          2>/dev/null
 | 
						|
        button=$? #get exit code to determine which button was pressed
 | 
						|
        
 | 
						|
      else #if creating 1 script
 | 
						|
        yad --form --on-top \
 | 
						|
          --title="Create App: Step $step" --window-icon="${DIRECTORY}/icons/logo.png" --center --width=310 --height=$windowheight \
 | 
						|
          --text="Now it's time to make your ${compatibility} script. This will be executed anytime somebody clicks the Install button.
 | 
						|
 | 
						|
A text editor should have openened and you can create your install script.
 | 
						|
Need help? <a href="\""https://github.com/Botspot/pi-apps/wiki/Creating-an-app"\"">Read the tutorial!</a>
 | 
						|
Still need help? Botspot can try to help you if you <a href="\""https://github.com/Botspot/pi-apps/issues/new/choose"\"">open in issue.</a>" \
 | 
						|
          --field="Run script":FBTN "${DIRECTORY}/etc/terminal-run "\""cd $HOME;$'${DIRECTORY}/apps/${name}/${compatibility}';echo 'Closing in 10 seconds.';sleep 10"\"" "\""Running ${compatibility} script of $name"\""" \
 | 
						|
          --field="Shellcheck"!!'Having problems? This utility locates syntax errors.':FBTN "${DIRECTORY}/etc/terminal-run "\""shellcheck $'${DIRECTORY}/apps/${name}/${compatibility}';echo 'Press Enter to exit.';read enter"\"" "\""Shellcheck"\""" \
 | 
						|
          --button=Previous!"${DIRECTORY}/icons/back.png":2 \
 | 
						|
          --button=Next!"${DIRECTORY}/icons/forward.png":0 \
 | 
						|
          2>/dev/null
 | 
						|
        button=$? #get exit code to determine which button was pressed
 | 
						|
      fi
 | 
						|
      
 | 
						|
      if [ $button == 0 ];then
 | 
						|
        #next
 | 
						|
        step=$((step+1))
 | 
						|
      elif [ $button == 2 ];then
 | 
						|
        #previous
 | 
						|
        step=$((step-1))
 | 
						|
      else
 | 
						|
        #like clicking the X or something 
 | 
						|
        exit 0
 | 
						|
      fi
 | 
						|
      ;;
 | 
						|
    4) #STEP 4: create uninstall script
 | 
						|
      cp -n "${DIRECTORY}/apps/template/uninstall" "${DIRECTORY}/apps/${name}/uninstall"
 | 
						|
      
 | 
						|
      text_editor "${DIRECTORY}/apps/${name}/uninstall" &
 | 
						|
      
 | 
						|
      #install shellcheck if not installed
 | 
						|
      command -v shellcheck >/dev/null || sudo apt install -y shellcheck
 | 
						|
      
 | 
						|
      output="$(yad --form --on-top \
 | 
						|
        --title="Create App: Step $step" --window-icon="${DIRECTORY}/icons/logo.png" --center --width=310 --height=$windowheight \
 | 
						|
        --text='Now it'\''s time to make your uninstall script. This will be executed anytime somebody clicks the Uninstall button.
 | 
						|
A text editor should have openened... Never mind, you know what to do.' \
 | 
						|
        --field="Run script":FBTN "${DIRECTORY}/etc/terminal-run "\""cd $HOME;$'${DIRECTORY}/apps/${name}/uninstall';echo 'Closing in 10 seconds.';sleep 10"\"" "\""Running uninstall script of $name"\""" \
 | 
						|
        --field="Shellcheck"!!'Having problems? This utility helps you locate syntax errors.':FBTN "${DIRECTORY}/etc/terminal-run "\""shellcheck $'${DIRECTORY}/apps/${name}/uninstall';echo 'Press Enter to exit.';read enter"\"" "\""Shellcheck"\""" \
 | 
						|
        --button=Previous!"${DIRECTORY}/icons/back.png":2 \
 | 
						|
        --button=Next!"${DIRECTORY}/icons/forward.png":0 \
 | 
						|
        2>/dev/null)"
 | 
						|
      button=$? #get exit code to determine which button was pressed
 | 
						|
      
 | 
						|
      if [ $button == 0 ];then
 | 
						|
        #next
 | 
						|
        step=$((step+1))
 | 
						|
      elif [ $button == 2 ];then
 | 
						|
        #previous
 | 
						|
        step=$((step-1))
 | 
						|
      else
 | 
						|
        #like clicking the X or something 
 | 
						|
        exit 0
 | 
						|
      fi
 | 
						|
      ;;
 | 
						|
    5) #STEP 5: verify in app list
 | 
						|
      LIST="${DIRECTORY}/icons/uninstalled.png
 | 
						|
${DIRECTORY}/apps/${name}/icon-24.png
 | 
						|
$name
 | 
						|
"\("uninstalled"\)" $(echo "$(cat "${DIRECTORY}/apps/${name}/description" || echo "Description unavailable")" | head -n1)"
 | 
						|
      
 | 
						|
      echo -e "$LIST" | yad --list \
 | 
						|
        --title="Create App: Step $step" --window-icon="${DIRECTORY}/icons/logo.png" --center --width=310 --height=$windowheight \
 | 
						|
        --text='Make sure everything looks right.
 | 
						|
Here'\''s what it will look like in the app list:' \
 | 
						|
        --column=:IMG --column=:IMG --column=Name --column=tip:HD --tooltip-column=4 --no-headers \
 | 
						|
        --button=Previous!"${DIRECTORY}/icons/back.png":2 \
 | 
						|
        --button=Next!"${DIRECTORY}/icons/forward.png":0 \
 | 
						|
        2>/dev/null
 | 
						|
      button=$? #get exit code to determine which button was pressed
 | 
						|
      
 | 
						|
      if [ $button == 0 ];then
 | 
						|
        step=$((step+1))
 | 
						|
      elif [ $button == 2 ];then
 | 
						|
        step=$((step-1))
 | 
						|
      else
 | 
						|
        #like clicking the X or something 
 | 
						|
        exit 0
 | 
						|
      fi
 | 
						|
      ;;
 | 
						|
    6) #STEP 6: verify in Details window
 | 
						|
      
 | 
						|
      text="$(echo "$(cat "${DIRECTORY}/apps/${name}/description" || echo "Description unavailable")" | head -n1)
 | 
						|
Current status: uninstalled
 | 
						|
Website: $(cat "${DIRECTORY}/apps/${name}/website" || echo "unavailable")
 | 
						|
$(echo "$(cat "${DIRECTORY}/apps/${name}/description" || echo "Description unavailable")" | grep -v "$(echo "$(cat "${DIRECTORY}/apps/${name}/description" || echo "Description unavailable")" | head -n1)")"
 | 
						|
      
 | 
						|
      echo "$text" | yad --text-info --fontname=12 --wrap --show-uri \
 | 
						|
        --title="Create App: Step $step" --window-icon="${DIRECTORY}/icons/logo.png" --center --width=700 --height=400 \
 | 
						|
        --text='Make sure everything looks right.
 | 
						|
Here'\''s a preview of the Details window:' \
 | 
						|
        --image="${DIRECTORY}/apps/${name}/icon-64.png" --image-on-top \
 | 
						|
        --button=Previous!"${DIRECTORY}/icons/back.png":2 \
 | 
						|
        --button=Next!"${DIRECTORY}/icons/forward.png":0 \
 | 
						|
        2>/dev/null
 | 
						|
      button=$? #get exit code to determine which button was pressed
 | 
						|
      
 | 
						|
      if [ $button == 0 ];then
 | 
						|
        step=$((step+1))
 | 
						|
      elif [ $button == 2 ];then
 | 
						|
        step=$((step-1))
 | 
						|
      else
 | 
						|
        #like clicking the X or something 
 | 
						|
        exit 0
 | 
						|
      fi
 | 
						|
      ;;
 | 
						|
    7) #STEP 7: all done
 | 
						|
      echo "Done!
 | 
						|
You app is located at ${DIRECTORY}/apps/${name}
 | 
						|
To add your app to the Pi-Apps official repository, put that folder in a .ZIP file and open an issue for Botspot (the developer of Pi-Apps): https://github.com/Botspot/pi-apps/issues/new" | yad --text-info --fontname=12 --wrap --show-uri \
 | 
						|
        --image="${DIRECTORY}/icons/in-progress.png" --image-on-top \
 | 
						|
        --title="Create App Wizard" --window-icon="${DIRECTORY}/icons/logo.png" --center --width=310 --height=$windowheight \
 | 
						|
        --button=Previous!"${DIRECTORY}/icons/back.png":0 \
 | 
						|
        --button=Close!"${DIRECTORY}/icons/exit.png":1 || exit 0
 | 
						|
      step=$((step-1))
 | 
						|
      ;;
 | 
						|
    *)
 | 
						|
      error "Unknown step ${step}!"
 | 
						|
      ;;
 | 
						|
  esac
 | 
						|
done
 |