Work on a number of additional languages
This commit is contained in:
		
							parent
							
								
									5895b5f3e4
								
							
						
					
					
						commit
						f013f7e26c
					
				| 
						 | 
					@ -41,6 +41,9 @@ function repl {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function main {
 | 
					function main {
 | 
				
			||||||
 | 
					    if get main | grep -q /; then
 | 
				
			||||||
 | 
					        mkdir -p "$(dirname "$(get main)")"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
    : > "$(get main)"
 | 
					    : > "$(get main)"
 | 
				
			||||||
    has prefix && get prefix >> "$(get main)"
 | 
					    has prefix && get prefix >> "$(get main)"
 | 
				
			||||||
    get template >> "$(get main)"
 | 
					    get template >> "$(get main)"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -31,6 +31,7 @@ EOF
 | 
				
			||||||
packages="
 | 
					packages="
 | 
				
			||||||
 | 
					
 | 
				
			||||||
apt-file
 | 
					apt-file
 | 
				
			||||||
 | 
					dctrl-tools
 | 
				
			||||||
docker-ce-cli
 | 
					docker-ce-cli
 | 
				
			||||||
g++
 | 
					g++
 | 
				
			||||||
git
 | 
					git
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,15 +19,18 @@ wget https://letsencrypt.org/certs/lets-encrypt-r3.pem -O /usr/local/share/ca-ce
 | 
				
			||||||
 | 
					
 | 
				
			||||||
update-ca-certificates
 | 
					update-ca-certificates
 | 
				
			||||||
 | 
					
 | 
				
			||||||
curl -fsSL https://downloads.ceylon-lang.org/apt/ceylon-debian-repo.gpg.key | apt-key add -
 | 
					 | 
				
			||||||
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
 | 
					 | 
				
			||||||
curl -fsSL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
ubuntu_ver="$(lsb_release -rs)"
 | 
					ubuntu_ver="$(lsb_release -rs)"
 | 
				
			||||||
ubuntu_name="$(lsb_release -cs)"
 | 
					ubuntu_name="$(lsb_release -cs)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
node_repo="$(curl -sS https://deb.nodesource.com/setup_current.x | grep NODEREPO= | grep -Eo 'node_[0-9]+\.x' | head -n1)"
 | 
					node_repo="$(curl -sS https://deb.nodesource.com/setup_current.x | grep NODEREPO= | grep -Eo 'node_[0-9]+\.x' | head -n1)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wget "https://packages.microsoft.com/config/ubuntu/${ubuntu_ver}/packages-microsoft-prod.deb"
 | 
				
			||||||
 | 
					apt-get install ./packages-microsoft-prod.deb
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					curl -fsSL https://downloads.ceylon-lang.org/apt/ceylon-debian-repo.gpg.key | apt-key add -
 | 
				
			||||||
 | 
					curl -fsSL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
 | 
				
			||||||
 | 
					curl -fsSL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
 | 
				
			||||||
 | 
					
 | 
				
			||||||
tee -a /etc/apt/sources.list.d/custom.list >/dev/null <<EOF
 | 
					tee -a /etc/apt/sources.list.d/custom.list >/dev/null <<EOF
 | 
				
			||||||
deb [arch=amd64] https://downloads.ceylon-lang.org/apt/ unstable main
 | 
					deb [arch=amd64] https://downloads.ceylon-lang.org/apt/ unstable main
 | 
				
			||||||
deb [arch=amd64] https://deb.nodesource.com/${node_repo} ${ubuntu_name} main
 | 
					deb [arch=amd64] https://deb.nodesource.com/${node_repo} ${ubuntu_name} main
 | 
				
			||||||
| 
						 | 
					@ -44,10 +47,13 @@ jq
 | 
				
			||||||
less
 | 
					less
 | 
				
			||||||
make
 | 
					make
 | 
				
			||||||
man
 | 
					man
 | 
				
			||||||
 | 
					moreutils
 | 
				
			||||||
nodejs
 | 
					nodejs
 | 
				
			||||||
 | 
					opam
 | 
				
			||||||
perl
 | 
					perl
 | 
				
			||||||
python3-pip
 | 
					python3-pip
 | 
				
			||||||
ripgrep
 | 
					ripgrep
 | 
				
			||||||
 | 
					ruby
 | 
				
			||||||
strace
 | 
					strace
 | 
				
			||||||
sudo
 | 
					sudo
 | 
				
			||||||
tmux
 | 
					tmux
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,6 +25,16 @@ wget https://letsencrypt.org/certs/lets-encrypt-r3.pem -O /usr/local/share/ca-ce
 | 
				
			||||||
 | 
					
 | 
				
			||||||
update-ca-certificates
 | 
					update-ca-certificates
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ubuntu_ver="$(lsb_release -rs)"
 | 
				
			||||||
 | 
					ubuntu_name="$(lsb_release -cs)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cran_repo="$(curl -fsSL https://cran.r-project.org/bin/linux/ubuntu/ | grep '<tr>' | grep "${ubuntu_name}" | grep -Eo 'cran[0-9]+' | head -n1)"
 | 
				
			||||||
 | 
					node_repo="$(curl -fsSL https://deb.nodesource.com/setup_current.x | grep NODEREPO= | grep -Eo 'node_[0-9]+\.x' | head -n1)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# .NET
 | 
				
			||||||
 | 
					wget "https://packages.microsoft.com/config/ubuntu/${ubuntu_ver}/packages-microsoft-prod.deb"
 | 
				
			||||||
 | 
					apt-get install ./packages-microsoft-prod.deb
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Ceylon
 | 
					# Ceylon
 | 
				
			||||||
curl -fsSL https://downloads.ceylon-lang.org/apt/ceylon-debian-repo.gpg.key | apt-key add -
 | 
					curl -fsSL https://downloads.ceylon-lang.org/apt/ceylon-debian-repo.gpg.key | apt-key add -
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -49,12 +59,6 @@ apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB
 | 
				
			||||||
# Yarn
 | 
					# Yarn
 | 
				
			||||||
curl -fsSL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
 | 
					curl -fsSL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ubuntu_ver="$(lsb_release -rs)"
 | 
					 | 
				
			||||||
ubuntu_name="$(lsb_release -cs)"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
cran_repo="$(curl -fsSL https://cran.r-project.org/bin/linux/ubuntu/ | grep '<tr>' | grep "${ubuntu_name}" | grep -Eo 'cran[0-9]+' | head -n1)"
 | 
					 | 
				
			||||||
node_repo="$(curl -fsSL https://deb.nodesource.com/setup_current.x | grep NODEREPO= | grep -Eo 'node_[0-9]+\.x' | head -n1)"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
tee -a /etc/apt/sources.list.d/custom.list >/dev/null <<EOF
 | 
					tee -a /etc/apt/sources.list.d/custom.list >/dev/null <<EOF
 | 
				
			||||||
# Ceylon
 | 
					# Ceylon
 | 
				
			||||||
deb [arch=amd64] https://downloads.ceylon-lang.org/apt/ unstable main
 | 
					deb [arch=amd64] https://downloads.ceylon-lang.org/apt/ unstable main
 | 
				
			||||||
| 
						 | 
					@ -91,11 +95,13 @@ packages="
 | 
				
			||||||
apt-file
 | 
					apt-file
 | 
				
			||||||
less
 | 
					less
 | 
				
			||||||
clang
 | 
					clang
 | 
				
			||||||
 | 
					git
 | 
				
			||||||
jq
 | 
					jq
 | 
				
			||||||
${libicu}
 | 
					${libicu}
 | 
				
			||||||
make
 | 
					make
 | 
				
			||||||
man
 | 
					man
 | 
				
			||||||
nodejs
 | 
					nodejs
 | 
				
			||||||
 | 
					ripgrep
 | 
				
			||||||
strace
 | 
					strace
 | 
				
			||||||
sudo
 | 
					sudo
 | 
				
			||||||
tmux
 | 
					tmux
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,7 +22,8 @@ install:
 | 
				
			||||||
    - mongodb-clients.deb
 | 
					    - mongodb-clients.deb
 | 
				
			||||||
    - mongodb-server.deb
 | 
					    - mongodb-server.deb
 | 
				
			||||||
    - mongodb-server-core.deb
 | 
					    - mongodb-server-core.deb
 | 
				
			||||||
  stripDepends:
 | 
					  depends:
 | 
				
			||||||
 | 
					    strip:
 | 
				
			||||||
      - mongodb-clients
 | 
					      - mongodb-clients
 | 
				
			||||||
      - mongodb-server
 | 
					      - mongodb-server
 | 
				
			||||||
      - mongodb-server-core
 | 
					      - mongodb-server-core
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,6 +6,9 @@ name: "MySQL"
 | 
				
			||||||
install:
 | 
					install:
 | 
				
			||||||
  apt:
 | 
					  apt:
 | 
				
			||||||
    - mysql-server
 | 
					    - mysql-server
 | 
				
			||||||
 | 
					    - mysql-client
 | 
				
			||||||
 | 
					  riju:
 | 
				
			||||||
 | 
					    - sqls
 | 
				
			||||||
 | 
					
 | 
				
			||||||
repl: |
 | 
					repl: |
 | 
				
			||||||
  rm -rf data && mysqld -h "$PWD/data" --initialize-insecure && (mysqld -h "$PWD/data" --socket="$PWD/socket" --pid-file="$PWD/pid-file" --mysqlx=OFF --skip-networking &) && until [[ -e socket ]]; do sleep 0.01; done && mysql --socket="$PWD/socket" -u root
 | 
					  rm -rf data && mysqld -h "$PWD/data" --initialize-insecure && (mysqld -h "$PWD/data" --socket="$PWD/socket" --pid-file="$PWD/pid-file" --mysqlx=OFF --skip-networking &) && until [[ -e socket ]]; do sleep 0.01; done && mysql --socket="$PWD/socket" -u root
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,6 +7,18 @@ install:
 | 
				
			||||||
  prepare:
 | 
					  prepare:
 | 
				
			||||||
    apt:
 | 
					    apt:
 | 
				
			||||||
      - clang
 | 
					      - clang
 | 
				
			||||||
 | 
					      - libgc-dev
 | 
				
			||||||
 | 
					  apt:
 | 
				
			||||||
 | 
					    - libgc-dev
 | 
				
			||||||
 | 
					  manual: |
 | 
				
			||||||
 | 
					    path="$(curl -sSL https://miasap.se/obnc/ | grep -F obnc_ | grep -Eo 'obnc_[^"]+' | grep -v win | head -n1)"
 | 
				
			||||||
 | 
					    wget "https://miasap.se/obnc/downloads/${path}" -O obnc.tar.gz
 | 
				
			||||||
 | 
					    mkdir obnc
 | 
				
			||||||
 | 
					    tar -xf obnc.tar.gz -C obnc --strip-components=1
 | 
				
			||||||
 | 
					    pushd obnc
 | 
				
			||||||
 | 
					    ./build
 | 
				
			||||||
 | 
					    ./install --destdir="${pkg}"
 | 
				
			||||||
 | 
					    popd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
main: "Main.obn"
 | 
					main: "Main.obn"
 | 
				
			||||||
template: |
 | 
					template: |
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,6 +10,8 @@ install:
 | 
				
			||||||
    - gcc
 | 
					    - gcc
 | 
				
			||||||
    - gnustep-devel
 | 
					    - gnustep-devel
 | 
				
			||||||
    - gobjc++
 | 
					    - gobjc++
 | 
				
			||||||
 | 
					    - clang-format
 | 
				
			||||||
 | 
					    - clangd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
main: "main.mm"
 | 
					main: "main.mm"
 | 
				
			||||||
template: |
 | 
					template: |
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,6 +9,8 @@ install:
 | 
				
			||||||
  apt:
 | 
					  apt:
 | 
				
			||||||
    - gcc
 | 
					    - gcc
 | 
				
			||||||
    - gnustep-devel
 | 
					    - gnustep-devel
 | 
				
			||||||
 | 
					    - clang-format
 | 
				
			||||||
 | 
					    - clangd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
main: "main.m"
 | 
					main: "main.m"
 | 
				
			||||||
template: |
 | 
					template: |
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,10 +3,13 @@ name: "OCaml"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
install:
 | 
					install:
 | 
				
			||||||
  apt:
 | 
					  apt:
 | 
				
			||||||
    - ocaml
 | 
					    - ocaml-nox
 | 
				
			||||||
  opam:
 | 
					  opam:
 | 
				
			||||||
    - ocamlformat
 | 
					    - ocamlformat
 | 
				
			||||||
    - ocaml-lsp-server: "https://github.com/ocaml/ocaml-lsp.git"
 | 
					    - name: ocaml-lsp-server
 | 
				
			||||||
 | 
					      source: "https://github.com/ocaml/ocaml-lsp.git"
 | 
				
			||||||
 | 
					      binaries:
 | 
				
			||||||
 | 
					        - ocamllsp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
repl: |
 | 
					repl: |
 | 
				
			||||||
  ocaml
 | 
					  ocaml
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,6 +4,13 @@ aliases:
 | 
				
			||||||
  - "rofl"
 | 
					  - "rofl"
 | 
				
			||||||
name: "Omgrofl"
 | 
					name: "Omgrofl"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					install:
 | 
				
			||||||
 | 
					  manual: |
 | 
				
			||||||
 | 
					    install -d "${pkg}/opt/omgrofl"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ver="$(latest_release OlegSmelov/omgrofl-interpreter)"
 | 
				
			||||||
 | 
					    wget "https://github.com/OlegSmelov/omgrofl-interpreter/releases/download/${ver}/Omgrofl.jar" -O "${pkg}/opt/omgrofl/omgrofl.jar"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
main: "main.omgrofl"
 | 
					main: "main.omgrofl"
 | 
				
			||||||
template: |
 | 
					template: |
 | 
				
			||||||
  lol iz 72
 | 
					  lol iz 72
 | 
				
			||||||
| 
						 | 
					@ -33,4 +40,4 @@ template: |
 | 
				
			||||||
  rofl lol
 | 
					  rofl lol
 | 
				
			||||||
 | 
					
 | 
				
			||||||
run: |
 | 
					run: |
 | 
				
			||||||
  java -jar /opt/omgrofl/Omgrofl.jar main.omgrofl
 | 
					  java -jar /opt/omgrofl/omgrofl.jar main.omgrofl
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,6 +5,16 @@ install:
 | 
				
			||||||
  prepare:
 | 
					  prepare:
 | 
				
			||||||
    apt:
 | 
					    apt:
 | 
				
			||||||
      - autoconf
 | 
					      - autoconf
 | 
				
			||||||
 | 
					      - libtool
 | 
				
			||||||
 | 
					      - libgmp-dev
 | 
				
			||||||
 | 
					  manual: |
 | 
				
			||||||
 | 
					    git clone https://git.code.sf.net/p/esco/code esco
 | 
				
			||||||
 | 
					    pushd esco
 | 
				
			||||||
 | 
					    autoreconf -fi
 | 
				
			||||||
 | 
					    ./configure --prefix="${pkg}/usr/local"
 | 
				
			||||||
 | 
					    make
 | 
				
			||||||
 | 
					    make install
 | 
				
			||||||
 | 
					    popd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
main: "main.ook"
 | 
					main: "main.ook"
 | 
				
			||||||
template: |
 | 
					template: |
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,6 +4,13 @@ aliases:
 | 
				
			||||||
  - "mozart2"
 | 
					  - "mozart2"
 | 
				
			||||||
name: "Oz"
 | 
					name: "Oz"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					install:
 | 
				
			||||||
 | 
					  manual: |
 | 
				
			||||||
 | 
					    ver="$(latest_release mozart/mozart2 | sed 's/^v//')"
 | 
				
			||||||
 | 
					    wget "https://github.com/mozart/mozart2/releases/download/v${ver}/mozart2-${ver}-x86_64-linux.deb" -O mozart.deb
 | 
				
			||||||
 | 
					  deb:
 | 
				
			||||||
 | 
					    - mozart.deb
 | 
				
			||||||
 | 
					
 | 
				
			||||||
main: "main.oz"
 | 
					main: "main.oz"
 | 
				
			||||||
template: |
 | 
					template: |
 | 
				
			||||||
  functor
 | 
					  functor
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,6 +4,22 @@ aliases:
 | 
				
			||||||
  - "pawnrun"
 | 
					  - "pawnrun"
 | 
				
			||||||
name: "PAWN"
 | 
					name: "PAWN"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					install:
 | 
				
			||||||
 | 
					  prepare:
 | 
				
			||||||
 | 
					    apt:
 | 
				
			||||||
 | 
					      - cmake
 | 
				
			||||||
 | 
					  manual: |
 | 
				
			||||||
 | 
					    install -d "${pkg}/opt/pawn"
 | 
				
			||||||
 | 
					    install -d "${pkg}/usr/local/bin"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    git clone https://github.com/compuphase/pawn.git
 | 
				
			||||||
 | 
					    pushd pawn
 | 
				
			||||||
 | 
					    cmake .
 | 
				
			||||||
 | 
					    make
 | 
				
			||||||
 | 
					    cp pawncc pawnrun "${pkg}/usr/local/bin/"
 | 
				
			||||||
 | 
					    cp -R include "${pkg}/opt/pawn/"
 | 
				
			||||||
 | 
					    popd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
main: "main.pawn"
 | 
					main: "main.pawn"
 | 
				
			||||||
template: |
 | 
					template: |
 | 
				
			||||||
  #include <core>
 | 
					  #include <core>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,6 +13,8 @@ aliases:
 | 
				
			||||||
name: "Pikachu"
 | 
					name: "Pikachu"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
install:
 | 
					install:
 | 
				
			||||||
 | 
					  apt:
 | 
				
			||||||
 | 
					    - python3-setuptools
 | 
				
			||||||
  pip:
 | 
					  pip:
 | 
				
			||||||
    - pikalang
 | 
					    - pikalang
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,8 +3,8 @@ name: "Pike"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
install:
 | 
					install:
 | 
				
			||||||
  apt:
 | 
					  apt:
 | 
				
			||||||
    - $(grep-aptavail -eF Package "^pike[0-9.]+$" -s Package -n | sort -Vr | head -n1)
 | 
					    - $(grep-aptavail -wF Package "pike[0-9.]+" -s Package -n | sort -Vr | head -n1)
 | 
				
			||||||
    - $(grep-aptavail -eF Package "^pike[0-9.]+$" -s Package -n | sort -Vr | head -n1)-doc
 | 
					    - $(grep-aptavail -wF Package "pike[0-9.]+" -s Package -n | sort -Vr | head -n1)-doc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
repl: |
 | 
					repl: |
 | 
				
			||||||
  pike
 | 
					  pike
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,6 +11,8 @@ install:
 | 
				
			||||||
  apt:
 | 
					  apt:
 | 
				
			||||||
    - postgresql
 | 
					    - postgresql
 | 
				
			||||||
    - postgresql-client
 | 
					    - postgresql-client
 | 
				
			||||||
 | 
					  riju:
 | 
				
			||||||
 | 
					    - sqls
 | 
				
			||||||
 | 
					
 | 
				
			||||||
repl: |
 | 
					repl: |
 | 
				
			||||||
  rm -rf data && /usr/lib/postgresql/*/bin/initdb -D data && (echo "listen_addresses = ''" && echo "unix_socket_directories = '.'") >> data/postgresql.conf && /usr/lib/postgresql/*/bin/pg_ctl -D data -w start && psql -h "$PWD/data" postgres
 | 
					  rm -rf data && /usr/lib/postgresql/*/bin/initdb -D data && (echo "listen_addresses = ''" && echo "unix_socket_directories = '.'") >> data/postgresql.conf && /usr/lib/postgresql/*/bin/pg_ctl -D data -w start && psql -h "$PWD/data" postgres
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,6 +5,21 @@ aliases:
 | 
				
			||||||
name: "PowerShell"
 | 
					name: "PowerShell"
 | 
				
			||||||
monacoLang: powershell
 | 
					monacoLang: powershell
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					install:
 | 
				
			||||||
 | 
					  manual: |
 | 
				
			||||||
 | 
					    install -d "${pkg}/opt/powershell"
 | 
				
			||||||
 | 
					    install -d "${pkg}/usr/local/bin"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ver="$(latest_release PowerShell/PowerShell | sed 's/^v//')"
 | 
				
			||||||
 | 
					    wget "https://github.com/PowerShell/PowerShell/releases/download/v${ver}/powershell-${ver}-linux-x64.tar.gz" -O powershell.tar.gz
 | 
				
			||||||
 | 
					    tar -xf powershell.tar.gz -C "${pkg}/opt/powershell"
 | 
				
			||||||
 | 
					    ln -s /opt/powershell/pwsh "${pkg}/usr/local/bin/"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ver="$(latest_release PowerShell/PowerShellEditorServices)"
 | 
				
			||||||
 | 
					    wget "https://github.com/PowerShell/PowerShellEditorServices/releases/download/${ver}/PowerShellEditorServices.zip"
 | 
				
			||||||
 | 
					    unzip PowerShellEditorServices.zip
 | 
				
			||||||
 | 
					    cp -RT PowerShellEditorServices "${pkg}/opt/powershell-editor-services"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
repl: |
 | 
					repl: |
 | 
				
			||||||
  SHELL=/usr/bin/pwsh pwsh
 | 
					  SHELL=/usr/bin/pwsh pwsh
 | 
				
			||||||
input: |
 | 
					input: |
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,6 +3,14 @@ aliases:
 | 
				
			||||||
  - "psc"
 | 
					  - "psc"
 | 
				
			||||||
name: "PSeInt"
 | 
					name: "PSeInt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					install:
 | 
				
			||||||
 | 
					  manual: |
 | 
				
			||||||
 | 
					    install -d "${pkg}/usr/local/bin"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    wget "$(curl -sSL "http://pseint.sourceforge.net/index.php?page=descargas.php&os=lnx" | grep -Eo 'http://[^"]+l64[^"]+\.tgz\?download')" -O pseint.tgz
 | 
				
			||||||
 | 
					    tar -xf pseint.tgz
 | 
				
			||||||
 | 
					    cp pseint/bin/pseint "${pkg}/usr/local/bin/"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
main: "main.psc"
 | 
					main: "main.psc"
 | 
				
			||||||
template: |
 | 
					template: |
 | 
				
			||||||
  Proceso Main
 | 
					  Proceso Main
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,14 +5,41 @@ aliases:
 | 
				
			||||||
name: "PureScript"
 | 
					name: "PureScript"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
install:
 | 
					install:
 | 
				
			||||||
 | 
					  prepare:
 | 
				
			||||||
    apt:
 | 
					    apt:
 | 
				
			||||||
      - libtinfo5
 | 
					      - libtinfo5
 | 
				
			||||||
    npm:
 | 
					    npm:
 | 
				
			||||||
      - purescript
 | 
					      - purescript
 | 
				
			||||||
      - spago
 | 
					      - spago
 | 
				
			||||||
 | 
					  apt:
 | 
				
			||||||
 | 
					    - libtinfo5
 | 
				
			||||||
 | 
					  npm:
 | 
				
			||||||
 | 
					    - purescript
 | 
				
			||||||
 | 
					    - spago
 | 
				
			||||||
 | 
					  manual: |
 | 
				
			||||||
 | 
					    install -d "${pkg}/opt/purescript"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    mkdir skel
 | 
				
			||||||
 | 
					    pushd skel
 | 
				
			||||||
 | 
					    spago init -C
 | 
				
			||||||
 | 
					    rm -rf .gitignore test
 | 
				
			||||||
 | 
					    sed -i 's#, "test/\*\*/\*\.purs"##' spago.dhall
 | 
				
			||||||
 | 
					    cat <<"EOF" > src/Main.spago
 | 
				
			||||||
 | 
					    import Prelude
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    import Effect (Effect)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    main :: Effect Unit
 | 
				
			||||||
 | 
					    main = pure unit
 | 
				
			||||||
 | 
					    EOF
 | 
				
			||||||
 | 
					    spago build
 | 
				
			||||||
 | 
					    spago repl < /dev/null
 | 
				
			||||||
 | 
					    rm -rf src
 | 
				
			||||||
 | 
					    popd
 | 
				
			||||||
 | 
					    cp -R skel "${pkg}/opt/purescript/"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
setup: |
 | 
					setup: |
 | 
				
			||||||
  shopt -s dotglob; cp -R /opt/purescript/project-template/* "$PWD/"
 | 
					  shopt -s dotglob; cp -R /opt/purescript/skel/* "$PWD/"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
repl: |
 | 
					repl: |
 | 
				
			||||||
  spago repl
 | 
					  spago repl
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,11 +5,23 @@ aliases:
 | 
				
			||||||
name: "Q#"
 | 
					name: "Q#"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
install:
 | 
					install:
 | 
				
			||||||
 | 
					  prepare:
 | 
				
			||||||
    apt:
 | 
					    apt:
 | 
				
			||||||
    - $(grep-aptavail -eF Package "^dotnet-sdk-[0-9.]+$" -s Package -n | sort -Vr | head -n1)
 | 
					      - $(grep-aptavail -wF Package "dotnet-sdk-[0-9.]+" -s Package -n | sort -Vr | head -n1)
 | 
				
			||||||
 | 
					  apt:
 | 
				
			||||||
 | 
					    - $(grep-aptavail -wF Package "dotnet-sdk-[0-9.]+" -s Package -n | sort -Vr | head -n1)
 | 
				
			||||||
 | 
					  manual: |
 | 
				
			||||||
 | 
					    install -d "${pkg}/opt/qsharp"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    dotnet new -i Microsoft.Quantum.ProjectTemplates
 | 
				
			||||||
 | 
					    dotnet new console -lang Q# -o main
 | 
				
			||||||
 | 
					    cp -R main "${pkg}/opt/qsharp/skel"
 | 
				
			||||||
 | 
					    rm "${pkg}/opt/qsharp/skel/Program.qs"
 | 
				
			||||||
 | 
					    cp -R "$HOME/.dotnet" "${pkg}/opt/qsharp/dotnet"
 | 
				
			||||||
 | 
					    chmod -R a=u,go-w "${pkg}/opt/qsharp/dotnet"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
setup: |
 | 
					setup: |
 | 
				
			||||||
  cp -R /opt/qsharp/dotnet ./.dotnet && cp -R /opt/qsharp/project-template/* ./
 | 
					  cp -R /opt/qsharp/dotnet ./.dotnet && cp -R /opt/qsharp/skel/* ./
 | 
				
			||||||
 | 
					
 | 
				
			||||||
main: "Main.qs"
 | 
					main: "Main.qs"
 | 
				
			||||||
template: |
 | 
					template: |
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,14 +6,14 @@ name: "Ratfor"
 | 
				
			||||||
install:
 | 
					install:
 | 
				
			||||||
  apt:
 | 
					  apt:
 | 
				
			||||||
    - ratfor
 | 
					    - ratfor
 | 
				
			||||||
    - flang
 | 
					    - gfortran
 | 
				
			||||||
 | 
					
 | 
				
			||||||
main: "main.r"
 | 
					main: "main.r"
 | 
				
			||||||
template: |
 | 
					template: |
 | 
				
			||||||
  print *, 'Hello, world!'
 | 
					  PRINT *, 'Hello, world!'
 | 
				
			||||||
  end
 | 
					  END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
compile: |
 | 
					compile: |
 | 
				
			||||||
  ratfor main.r -o main.f && flang main.f -o main
 | 
					  ratfor main.r -o main.f && gfortran main.f -o main
 | 
				
			||||||
run: |
 | 
					run: |
 | 
				
			||||||
  ./main
 | 
					  ./main
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,10 +8,31 @@ aliases:
 | 
				
			||||||
name: "ReasonML"
 | 
					name: "ReasonML"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
install:
 | 
					install:
 | 
				
			||||||
 | 
					  prepare:
 | 
				
			||||||
 | 
					    apt:
 | 
				
			||||||
 | 
					      - yarn
 | 
				
			||||||
 | 
					    npm:
 | 
				
			||||||
 | 
					      - bs-platform
 | 
				
			||||||
  npm:
 | 
					  npm:
 | 
				
			||||||
    - bs-platform
 | 
					    - bs-platform
 | 
				
			||||||
  opam:
 | 
					  opam:
 | 
				
			||||||
    - reason
 | 
					    - name: reason
 | 
				
			||||||
 | 
					      binaries:
 | 
				
			||||||
 | 
					        - refmt
 | 
				
			||||||
 | 
					  manual: |
 | 
				
			||||||
 | 
					    install -d "${pkg}/opt/reasonml/skel"
 | 
				
			||||||
 | 
					    install -d "${pkg}/usr/local/bin"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ver="$(latest_release jaredly/reason-language-server)"
 | 
				
			||||||
 | 
					    wget "https://github.com/jaredly/reason-language-server/releases/download/${ver}/rls-linux.zip"
 | 
				
			||||||
 | 
					    unzip rls-linux.zip
 | 
				
			||||||
 | 
					    cp rls-linux/reason-language-server "${pkg}/usr/local/bin/"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    pushd "${pkg}/opt/reasonml/skel"
 | 
				
			||||||
 | 
					    bsb -init .
 | 
				
			||||||
 | 
					    cat bsconfig.json | jq '.name = "riju-project"' | sponge bsconfig.json
 | 
				
			||||||
 | 
					    yarn install
 | 
				
			||||||
 | 
					    popd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
main: "main.re"
 | 
					main: "main.re"
 | 
				
			||||||
template: |
 | 
					template: |
 | 
				
			||||||
| 
						 | 
					@ -30,7 +51,7 @@ format:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
lsp:
 | 
					lsp:
 | 
				
			||||||
  setup: |
 | 
					  setup: |
 | 
				
			||||||
    cp -a /opt/reasonml/project-template/* ./
 | 
					    cp -a /opt/reasonml/skel/* ./
 | 
				
			||||||
  start: |
 | 
					  start: |
 | 
				
			||||||
    reason-language-server
 | 
					    reason-language-server
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,15 @@
 | 
				
			||||||
id: "rebol"
 | 
					id: "rebol"
 | 
				
			||||||
name: "REBOL"
 | 
					name: "REBOL"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					install:
 | 
				
			||||||
 | 
					  manual: |
 | 
				
			||||||
 | 
					    install -d "${pkg}/usr/local/bin"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    file="$(curl -sSL http://www.rebol.com/downloads.html | sed '0,/x86-64/d' | grep -Eo 'downloads/[^"]+' | head -n1)"
 | 
				
			||||||
 | 
					    wget "http://www.rebol.com/${file}" -O rebol.tar.gz
 | 
				
			||||||
 | 
					    tar -xf rebol.tar.gz
 | 
				
			||||||
 | 
					    cp rebol-core/rebol "${pkg}/usr/local/bin/"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
repl: |
 | 
					repl: |
 | 
				
			||||||
  rebol
 | 
					  rebol
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,12 +4,23 @@ name: "Red"
 | 
				
			||||||
install:
 | 
					install:
 | 
				
			||||||
  apt:
 | 
					  apt:
 | 
				
			||||||
    - libcurl5:i386
 | 
					    - libcurl5:i386
 | 
				
			||||||
 | 
					  manual: |
 | 
				
			||||||
 | 
					    install -d "${pkg}/opt/red/skel"
 | 
				
			||||||
 | 
					    install -d "${pkg}/usr/local/bin"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    path="$(curl -sSL https://static.red-lang.org/download.html | grep -Eo '/dl/linux/[^"]+' | head -n1)"
 | 
				
			||||||
 | 
					    wget "https://static.red-lang.org/${path}" -O red
 | 
				
			||||||
 | 
					    chmod +x red
 | 
				
			||||||
 | 
					    cp red "${pkg}/usr/local/bin/"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ./red <<< quit
 | 
				
			||||||
 | 
					    cp -R "$HOME/.red" "${pkg}/opt/red/skel/"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
setup: |
 | 
					setup: |
 | 
				
			||||||
  cp -R /opt/red/template .red
 | 
					  shopt -s dotglob; cp -R /opt/red/skel/* ./
 | 
				
			||||||
 | 
					
 | 
				
			||||||
repl: |
 | 
					repl: |
 | 
				
			||||||
  /usr/local/bin/red
 | 
					  red
 | 
				
			||||||
input: |
 | 
					input: |
 | 
				
			||||||
  DELAY: 1
 | 
					  DELAY: 1
 | 
				
			||||||
  123 * 234
 | 
					  123 * 234
 | 
				
			||||||
| 
						 | 
					@ -21,4 +32,4 @@ template: |
 | 
				
			||||||
  print "Hello, world!"
 | 
					  print "Hello, world!"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
run: |
 | 
					run: |
 | 
				
			||||||
  /usr/local/bin/red main.red; /usr/local/bin/red
 | 
					  red main.red; red
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,6 +6,9 @@ name: "Ruby"
 | 
				
			||||||
monacoLang: ruby
 | 
					monacoLang: ruby
 | 
				
			||||||
 | 
					
 | 
				
			||||||
install:
 | 
					install:
 | 
				
			||||||
 | 
					  prepare:
 | 
				
			||||||
 | 
					    apt:
 | 
				
			||||||
 | 
					      - ruby-dev
 | 
				
			||||||
  apt:
 | 
					  apt:
 | 
				
			||||||
    - ruby
 | 
					    - ruby
 | 
				
			||||||
  gem:
 | 
					  gem:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,6 +5,23 @@ aliases:
 | 
				
			||||||
name: "Rust"
 | 
					name: "Rust"
 | 
				
			||||||
monacoLang: rust
 | 
					monacoLang: rust
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					install:
 | 
				
			||||||
 | 
					  manual: |
 | 
				
			||||||
 | 
					    install -d "${pkg}/usr/local/bin"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    export CARGO_HOME="${pkg}/opt/rustup"
 | 
				
			||||||
 | 
					    export RUSTUP_HOME="${pkg}/opt/rustup"
 | 
				
			||||||
 | 
					    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --no-modify-path
 | 
				
			||||||
 | 
					    "${pkg}/opt/rustup/bin/rustup" component add rls rust-analysis rust-src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ls "${pkg}/opt/rustup/bin" | while read name; do
 | 
				
			||||||
 | 
					        cat <<EOF > "${pkg}/usr/local/bin/${name}"
 | 
				
			||||||
 | 
					    #!/usr/bin/env bash
 | 
				
			||||||
 | 
					    exec env RUSTUP_HOME=/opt/rustup "/opt/rustup/bin/${name}" "\$@"
 | 
				
			||||||
 | 
					    EOF
 | 
				
			||||||
 | 
					        chmod +x "${pkg}/usr/local/bin/${name}"
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
main: "main.rs"
 | 
					main: "main.rs"
 | 
				
			||||||
template: |
 | 
					template: |
 | 
				
			||||||
  fn main() {
 | 
					  fn main() {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,8 +4,29 @@ aliases:
 | 
				
			||||||
name: "SageMath"
 | 
					name: "SageMath"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
install:
 | 
					install:
 | 
				
			||||||
  apt:
 | 
					  manual: |
 | 
				
			||||||
    - sagemath
 | 
					    sudo tee -a /etc/apt/sources.list.d/focal.list >/dev/null <<EOF
 | 
				
			||||||
 | 
					    deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ focal main universe
 | 
				
			||||||
 | 
					    EOF
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    sudo apt-get update
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for name in libflint-2.5.2 libgsl23 sagemath sagemath-common; do
 | 
				
			||||||
 | 
					        apt-get download "${name}"
 | 
				
			||||||
 | 
					        mv "${name}"_*.deb "${name}.deb"
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					  deb:
 | 
				
			||||||
 | 
					    - sagemath.deb
 | 
				
			||||||
 | 
					    - sagemath-common.deb
 | 
				
			||||||
 | 
					    - libflint-2.5.2.deb
 | 
				
			||||||
 | 
					    - libgsl23.deb
 | 
				
			||||||
 | 
					  depends:
 | 
				
			||||||
 | 
					    strip:
 | 
				
			||||||
 | 
					      - sagemath-common
 | 
				
			||||||
 | 
					      - libflint-2.5.2
 | 
				
			||||||
 | 
					      - libgsl23
 | 
				
			||||||
 | 
					    unpin:
 | 
				
			||||||
 | 
					      - libgslcblas0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
repl: |
 | 
					repl: |
 | 
				
			||||||
  sage
 | 
					  sage
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,13 @@
 | 
				
			||||||
id: "setl"
 | 
					id: "setl"
 | 
				
			||||||
name: "SETL"
 | 
					name: "SETL"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					install:
 | 
				
			||||||
 | 
					  manual: |
 | 
				
			||||||
 | 
					    install -d "${pkg}/usr/local/bin"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    wget https://setl.org/setl/bin/Linux-x86-64bit/setlbin.tgz
 | 
				
			||||||
 | 
					    tar -xf setlbin.tgz -C "${pkg}/usr/local/bin"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
main: "main.setl"
 | 
					main: "main.setl"
 | 
				
			||||||
template: |
 | 
					template: |
 | 
				
			||||||
  print("Hello, world!");
 | 
					  print("Hello, world!");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,7 +9,7 @@ install:
 | 
				
			||||||
  prepare:
 | 
					  prepare:
 | 
				
			||||||
    apt:
 | 
					    apt:
 | 
				
			||||||
      - luarocks
 | 
					      - luarocks
 | 
				
			||||||
      - $(grep-aptavail -eF Package "liblua[0-9.]+-dev" -a -XF Version "$(grep-aptavail -XF Provides lua -s Version -n | sort -Vr | head -n1)" -s Package -n | head -n1)
 | 
					      - $(grep-aptavail -wF Package "liblua[0-9.]+-dev" -a -XF Version "$(grep-aptavail -XF Provides lua -s Version -n | sort -Vr | head -n1)" -s Package -n | head -n1)
 | 
				
			||||||
  apt:
 | 
					  apt:
 | 
				
			||||||
    - texlive-binaries
 | 
					    - texlive-binaries
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,6 +19,7 @@ function makeLangScript(langConfig, isShared) {
 | 
				
			||||||
  const { id, name, install } = langConfig;
 | 
					  const { id, name, install } = langConfig;
 | 
				
			||||||
  let parts = [];
 | 
					  let parts = [];
 | 
				
			||||||
  let depends = [];
 | 
					  let depends = [];
 | 
				
			||||||
 | 
					  const dependsCfg = (install && install.depends) || {};
 | 
				
			||||||
  if (
 | 
					  if (
 | 
				
			||||||
    install &&
 | 
					    install &&
 | 
				
			||||||
    ((install.prepare &&
 | 
					    ((install.prepare &&
 | 
				
			||||||
| 
						 | 
					@ -38,23 +39,30 @@ sudo apt-get update`);
 | 
				
			||||||
      riju,
 | 
					      riju,
 | 
				
			||||||
      npm,
 | 
					      npm,
 | 
				
			||||||
      pip,
 | 
					      pip,
 | 
				
			||||||
 | 
					      gem,
 | 
				
			||||||
      cpan,
 | 
					      cpan,
 | 
				
			||||||
 | 
					      opam,
 | 
				
			||||||
      files,
 | 
					      files,
 | 
				
			||||||
      scripts,
 | 
					      scripts,
 | 
				
			||||||
      manual,
 | 
					      manual,
 | 
				
			||||||
      deb,
 | 
					      deb,
 | 
				
			||||||
    } = install;
 | 
					    } = install;
 | 
				
			||||||
    if (prepare) {
 | 
					    if (prepare) {
 | 
				
			||||||
      const { apt, manual } = prepare;
 | 
					      const { apt, npm, manual } = prepare;
 | 
				
			||||||
      if (apt && apt.length > 0) {
 | 
					      if (apt && apt.length > 0) {
 | 
				
			||||||
        parts.push(`\
 | 
					        parts.push(`\
 | 
				
			||||||
sudo apt-get install -y ${apt.join(" ")}`);
 | 
					sudo apt-get install -y ${apt.join(" ")}`);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      if (npm && npm.length > 0) {
 | 
				
			||||||
 | 
					        parts.push(`\
 | 
				
			||||||
 | 
					sudo npm install -g ${npm.join(" ")}`);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      if (manual) {
 | 
					      if (manual) {
 | 
				
			||||||
        parts.push(manual);
 | 
					        parts.push(manual);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (npm) {
 | 
					    if (npm && npm.length > 0) {
 | 
				
			||||||
 | 
					      depends.push("nodejs");
 | 
				
			||||||
      for (let fullname of npm) {
 | 
					      for (let fullname of npm) {
 | 
				
			||||||
        let arg;
 | 
					        let arg;
 | 
				
			||||||
        if (typeof fullname === "string") {
 | 
					        if (typeof fullname === "string") {
 | 
				
			||||||
| 
						 | 
					@ -78,7 +86,8 @@ if [[ -d "$\{pkg}/opt/${basename}/bin" ]]; then
 | 
				
			||||||
fi`);
 | 
					fi`);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (pip) {
 | 
					    if (pip && pip.length > 0) {
 | 
				
			||||||
 | 
					      depends.push("python3");
 | 
				
			||||||
      for (const basename of pip) {
 | 
					      for (const basename of pip) {
 | 
				
			||||||
        parts.push(`\
 | 
					        parts.push(`\
 | 
				
			||||||
install -d "\${pkg}/usr/local/bin"
 | 
					install -d "\${pkg}/usr/local/bin"
 | 
				
			||||||
| 
						 | 
					@ -105,15 +114,41 @@ if [[ -d "\${pkg}/opt/${basename}/man" ]]; then
 | 
				
			||||||
fi`);
 | 
					fi`);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (cpan) {
 | 
					    if (gem && gem.length > 0) {
 | 
				
			||||||
 | 
					      depends.push("ruby");
 | 
				
			||||||
 | 
					      for (const name of gem) {
 | 
				
			||||||
 | 
					        parts.push(`\
 | 
				
			||||||
 | 
					install -d "\${pkg}/usr/local/bin"
 | 
				
			||||||
 | 
					gem install "${name}" -i "/opt/${name}" -n "/opt/${name}/bin" --build-root "\${pkg}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ -d "\${pkg}/opt/${name}/bin" ]]; then
 | 
				
			||||||
 | 
					    (
 | 
				
			||||||
 | 
					        set +e
 | 
				
			||||||
 | 
					        ls "\${pkg}/opt/${name}/gems/${name}"-*/bin
 | 
				
			||||||
 | 
					        ls "\${pkg}/opt/${name}/gems/${name}"-*/exe
 | 
				
			||||||
 | 
					        true
 | 
				
			||||||
 | 
					    ) | while read name; do
 | 
				
			||||||
 | 
					        if [[ -x "\${pkg}/opt/${name}/bin/\${name}" ]]; then
 | 
				
			||||||
 | 
					            cat <<EOF > "\${pkg}/usr/local/bin/\${name}"
 | 
				
			||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					exec env GEM_PATH="/opt/${name}" "/opt/${name}/bin/\${name}" "\\\$@"
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					            chmod +x "\${pkg}/usr/local/bin/\${name}"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					fi`);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (cpan && cpan.length > 0) {
 | 
				
			||||||
 | 
					      depends.push("perl");
 | 
				
			||||||
      for (const fullname of cpan) {
 | 
					      for (const fullname of cpan) {
 | 
				
			||||||
        const basename = fullname.replace(/^.+:/, "").toLowerCase();
 | 
					        const basename = fullname.replace(/:+/g, "-").toLowerCase();
 | 
				
			||||||
        parts.push(`\
 | 
					        parts.push(`\
 | 
				
			||||||
install -d "\${pkg}/usr/local/bin"
 | 
					install -d "\${pkg}/usr/local/bin"
 | 
				
			||||||
cpanm -l "\${pkg}/opt/${basename}" -n "${fullname}"
 | 
					cpanm -l "\${pkg}/opt/${basename}" -n "${fullname}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [[ -d "\${pkg}/opt/${basename}/bin" ]]; then
 | 
					if [[ -d "\${pkg}/opt/${basename}/bin" ]]; then
 | 
				
			||||||
    ls "\${pkg}/opt/${basename}/bin" | while read name; do
 | 
					    ls "\${pkg}/opt/${basename}/bin" | (grep -v config_data || true) | while read name; do
 | 
				
			||||||
        version="$(ls "\${pkg}/opt/${basename}/lib" | head -n1)"
 | 
					        version="$(ls "\${pkg}/opt/${basename}/lib" | head -n1)"
 | 
				
			||||||
        cat <<EOF > "\${pkg}/usr/local/bin/\${name}"
 | 
					        cat <<EOF > "\${pkg}/usr/local/bin/\${name}"
 | 
				
			||||||
#!/usr/bin/env bash
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
| 
						 | 
					@ -121,18 +156,37 @@ exec env PERL5LIB="/opt/${basename}/lib/\${version}" "/opt/${basename}/bin/\${na
 | 
				
			||||||
EOF
 | 
					EOF
 | 
				
			||||||
        chmod +x "\${pkg}/usr/local/bin/\${name}"
 | 
					        chmod +x "\${pkg}/usr/local/bin/\${name}"
 | 
				
			||||||
    done
 | 
					    done
 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [[ -d "\${pkg}/opt/${basename}/man" ]]; then
 | 
					 | 
				
			||||||
    ls "\${pkg}/opt/${basename}/man" | while read dir; do
 | 
					 | 
				
			||||||
        install -d "\${pkg}/usr/local/man/\${dir}"
 | 
					 | 
				
			||||||
        ls "\${pkg}/opt/${basename}/man/\${dir}" | while read name; do
 | 
					 | 
				
			||||||
            ln -s "/opt/${basename}/man/\${dir}/\${name}" "\${pkg}/usr/local/man/\${dir}/\${name}"
 | 
					 | 
				
			||||||
        done
 | 
					 | 
				
			||||||
    done
 | 
					 | 
				
			||||||
fi`);
 | 
					fi`);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    if (opam && opam.length > 0) {
 | 
				
			||||||
 | 
					      depends.push("ocaml-nox");
 | 
				
			||||||
 | 
					      for (let opts of opam) {
 | 
				
			||||||
 | 
					        if (typeof opts === "string") {
 | 
				
			||||||
 | 
					          opts = { name: opts, binaries: [opts] };
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        const { name, source, binaries } = opts;
 | 
				
			||||||
 | 
					        let installCmd;
 | 
				
			||||||
 | 
					        if (source) {
 | 
				
			||||||
 | 
					          installCmd = `opam pin add "${name}" "${source}" -y --root "\${pkg}/opt/${name}"`;
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					          installCmd = `opam install "${name}" -y --root "\${pkg}/opt/${name}"`;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        parts.push(`\
 | 
				
			||||||
 | 
					install -d "\${pkg}/usr/local/bin"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					opam init -n --disable-sandboxing --root "\${pkg}/opt/${name}"
 | 
				
			||||||
 | 
					${installCmd}`);
 | 
				
			||||||
 | 
					        parts.push(
 | 
				
			||||||
 | 
					          binaries
 | 
				
			||||||
 | 
					            .map(
 | 
				
			||||||
 | 
					              (binary) =>
 | 
				
			||||||
 | 
					                `ln -s "/opt/${name}/default/bin/${binary}" "\${pkg}/usr/local/bin/"`
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					            .join("\n")
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    if (files) {
 | 
					    if (files) {
 | 
				
			||||||
      for (const [file, contents] of Object.entries(files)) {
 | 
					      for (const [file, contents] of Object.entries(files)) {
 | 
				
			||||||
        const path = "${pkg}" + file;
 | 
					        const path = "${pkg}" + file;
 | 
				
			||||||
| 
						 | 
					@ -163,6 +217,9 @@ chmod +x "${path}"`);
 | 
				
			||||||
    if (apt) {
 | 
					    if (apt) {
 | 
				
			||||||
      depends = depends.concat(apt);
 | 
					      depends = depends.concat(apt);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    if (dependsCfg.unpin) {
 | 
				
			||||||
 | 
					      depends = depends.concat(dependsCfg.unpin);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    if (riju) {
 | 
					    if (riju) {
 | 
				
			||||||
      depends = depends.concat(riju.map((name) => `riju-shared-${name}`));
 | 
					      depends = depends.concat(riju.map((name) => `riju-shared-${name}`));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -174,8 +231,9 @@ chmod +x "${path}"`);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  parts.push(`depends=(${depends.map((dep) => `"${dep}"`).join(" ")})`);
 | 
					  parts.push(`depends=(${depends.map((dep) => `"${dep}"`).join(" ")})`);
 | 
				
			||||||
  let stripDependsFilter = "";
 | 
					  let stripDependsFilter = "";
 | 
				
			||||||
  if (install && install.stripDepends && install.stripDepends.length > 0) {
 | 
					  const stripDepends = (dependsCfg.strip || []).concat(dependsCfg.unpin || []);
 | 
				
			||||||
    stripDependsFilter = ` | sed -E 's/(^| )(${install.stripDepends.join(
 | 
					  if (stripDepends.length > 0) {
 | 
				
			||||||
 | 
					    stripDependsFilter = ` | sed -E 's/(^| )(${stripDepends.join(
 | 
				
			||||||
      "|"
 | 
					      "|"
 | 
				
			||||||
    )}) *(\\([^)]*\\))? *(,|$)/\\1/g' | sed -E 's/^ *//g'`;
 | 
					    )}) *(\\([^)]*\\))? *(,|$)/\\1/g' | sed -E 's/^ *//g'`;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -187,7 +245,7 @@ Maintainer: Radon Rosborough <radon.neon@gmail.com>
 | 
				
			||||||
Description: The ${name} ${
 | 
					Description: The ${name} ${
 | 
				
			||||||
    isShared ? "shared dependency" : "language"
 | 
					    isShared ? "shared dependency" : "language"
 | 
				
			||||||
  } packaged for Riju
 | 
					  } packaged for Riju
 | 
				
			||||||
Depends: \$(IFS=,; echo "\${depends[*]}" | sed -E 's/,([^ ])/, \\1/g'${stripDependsFilter} | sed -E 's/ +/ /g')
 | 
					Depends: \$(IFS=,; echo "\${depends[*]}" | sed -E 's/,([^ ])/, \\1/g'${stripDependsFilter} | sed -E 's/ +/ /g' | sed -E 's/ *, *$//')
 | 
				
			||||||
Riju-Script-Hash: \$(sha1sum "\$0" | awk '{ print \$1 }')`;
 | 
					Riju-Script-Hash: \$(sha1sum "\$0" | awk '{ print \$1 }')`;
 | 
				
			||||||
  parts.push(`\
 | 
					  parts.push(`\
 | 
				
			||||||
install -d "\${pkg}/DEBIAN"
 | 
					install -d "\${pkg}/DEBIAN"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue