mirror of
https://codeberg.org/vegvisir/install.git
synced 2025-09-13 16:23:42 +02:00
Compare commits
6 commits
0f23cf1e16
...
f0c03d6b15
Author | SHA1 | Date | |
---|---|---|---|
f0c03d6b15 | |||
ce6d7fae60 | |||
8859a741d3 | |||
16c1a2df10 | |||
9ae80a1707 | |||
7484c2370b |
2 changed files with 115 additions and 30 deletions
41
README.md
41
README.md
|
@ -1,13 +1,40 @@
|
||||||
# Vegvisir installer
|
# Vegvisir installer
|
||||||
This script will automatically install and configure Vegvisir from in a fresh git repository.
|
Run this script from a git repository to automatically install and configure Vegvisir as a git submodule to your project.
|
||||||
|
|
||||||
## Important
|
> [!IMPORTANT]
|
||||||
The script will only run on Linux environments with `coreutils` installed (for now).
|
> The script will only run in environments with Bash and `coreutils` installed (for now).
|
||||||
|
|
||||||
# Get started
|
# Get started
|
||||||
1. Create a repository for your website
|
1. Create a git repository for your project.
|
||||||
2. Run this command from the root directory of your local repository
|
2. Run this command from the root directory of your local repository.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
curl -fsSL https://href.vlw.se/vegvisir/install | bash
|
curl -fsSL https://codeberg.org/vegvisir/install/raw/branch/master/install.sh | bash
|
||||||
```
|
```
|
||||||
|
|
||||||
|
# Arguments
|
||||||
|
You can pass optional named arguments to this script for headless installation of Vegvisir.
|
||||||
|
|
||||||
|
### `--install` - Don't install, only configure Vegvisir
|
||||||
|
```sh
|
||||||
|
./install.sh --install=n
|
||||||
|
```
|
||||||
|
Pass `--install=n` to prevent download and installation of the Vegvisir git submodule. Use this option if you're version controlling Vegvisir from your project repository.
|
||||||
|
|
||||||
|
### `--dir` - Installation directory
|
||||||
|
```sh
|
||||||
|
./install.sh --dir="/path/to/project"
|
||||||
|
```
|
||||||
|
Pass a `--dir` argument with a value of a directory Vegvisir should consider its [`root_path`](https://vegvisir.vlw.se/docs/Reference/Env#root_path).
|
||||||
|
|
||||||
|
### `--overwrite` - Overwrite configuration files
|
||||||
|
```sh
|
||||||
|
./install.sh --overwrite=y
|
||||||
|
```
|
||||||
|
Pass `--overwrite=y` to replace existing Vegvisir configuration files.
|
||||||
|
|
||||||
|
### `--example` - Generate example website
|
||||||
|
```sh
|
||||||
|
./install.sh --example=n
|
||||||
|
```
|
||||||
|
Pass `--overwrite=n` to disable generation of an example website after installation.
|
104
install.sh
104
install.sh
|
@ -1,7 +1,11 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Get the current working directory
|
# Initialize variables
|
||||||
cwd=$(pwd)
|
cwd=""
|
||||||
|
dir=""
|
||||||
|
install=""
|
||||||
|
example=""
|
||||||
|
overwrite=""
|
||||||
|
|
||||||
echo_err() {
|
echo_err() {
|
||||||
echo "!! -> $1"
|
echo "!! -> $1"
|
||||||
|
@ -33,16 +37,19 @@ check_sys_depend() {
|
||||||
|
|
||||||
install_vegvisir() {
|
install_vegvisir() {
|
||||||
if ! [ -d ".git" ] ; then
|
if ! [ -d ".git" ] ; then
|
||||||
echo_err "Not in a git repository"
|
echo_err "Installation aborted: '$cwd' is not a git repository"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! [ -d "vegvisir" ] ; then
|
# Download and install the Vegvisir repository
|
||||||
git submodule add https://codeberg.org/vegvisir/vegvisir
|
if [[ "$install" != "n" ]]; then
|
||||||
fi
|
if ! [ -d "vegvisir" ] ; then
|
||||||
|
git submodule add https://codeberg.org/vegvisir/vegvisir
|
||||||
|
fi
|
||||||
|
|
||||||
# Update submodules
|
# Update submodules
|
||||||
git submodule update --init --recursive
|
git submodule update --init --recursive
|
||||||
|
fi
|
||||||
|
|
||||||
# Install dependencies with composer
|
# Install dependencies with composer
|
||||||
(cd vegvisir && composer install --classmap-authoritative)
|
(cd vegvisir && composer install --classmap-authoritative)
|
||||||
|
@ -50,7 +57,14 @@ install_vegvisir() {
|
||||||
# Bail out if composer didn't create a vendor folder
|
# Bail out if composer didn't create a vendor folder
|
||||||
if ! [ -d "vegvisir/vendor" ] ; then
|
if ! [ -d "vegvisir/vendor" ] ; then
|
||||||
echo_err "Something went wrong with the installation."
|
echo_err "Something went wrong with the installation."
|
||||||
exit_report
|
|
||||||
|
# Script was not run with the install flag disabled, this is probably a bug
|
||||||
|
if [[ "$install" != "n" ]]; then
|
||||||
|
exit_report
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo_err "Make sure you have cloned the Vegvisir repository. Or run without '--install=n'."
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,12 +75,14 @@ configure_vegvisir() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# A configuration file already exists
|
# A configuration file already exists
|
||||||
if [ -f "vegvisir/.env.ini" ] ; then
|
if [[ -f "vegvisir/.env.ini" ]] ; then
|
||||||
echo "A Vegvisir configuration file already exists at: ${cwd}/vegvisir/.env.ini"
|
if ! [[ -n "$overwrite" ]]; then
|
||||||
read -p "Do you want to overwrite this file? (y/n): " choice </dev/tty
|
echo "A Vegvisir configuration file already exists at: ${cwd}/vegvisir/.env.ini"
|
||||||
|
read -p "Do you want to overwrite this file? (y/n): " overwrite </dev/tty
|
||||||
|
fi
|
||||||
|
|
||||||
# Check the user's response
|
# Check the user's response
|
||||||
if [[ "$choice" == "y" || "$choice" == "Y" ]] ; then
|
if [[ "$overwrite" == "y" || "$overwrite" == "Y" ]] ; then
|
||||||
echo "Removing existing Vegvisir configuration and proceeding with the installation in ${cwd}..."
|
echo "Removing existing Vegvisir configuration and proceeding with the installation in ${cwd}..."
|
||||||
rm vegvisir/.env.ini
|
rm vegvisir/.env.ini
|
||||||
else
|
else
|
||||||
|
@ -81,8 +97,6 @@ configure_vegvisir() {
|
||||||
"root_path = '${cwd}'"
|
"root_path = '${cwd}'"
|
||||||
"shell_page = 'public/shell'"
|
"shell_page = 'public/shell'"
|
||||||
"public_path = 'public/'"
|
"public_path = 'public/'"
|
||||||
"worker_magic_pathname = '/__vvnavwrkr'"
|
|
||||||
"rfc_4288_url = 'https://raw.githubusercontent.com/apache/httpd/refs/heads/trunk/docs/conf/mime.types'"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
for line in "${config[@]}" ; do
|
for line in "${config[@]}" ; do
|
||||||
|
@ -152,29 +166,73 @@ generate_example_website() {
|
||||||
}
|
}
|
||||||
|
|
||||||
main() {
|
main() {
|
||||||
|
# Get the current working directory
|
||||||
|
cwd=$(pwd)
|
||||||
|
|
||||||
check_sys_depend
|
check_sys_depend
|
||||||
install_vegvisir
|
install_vegvisir
|
||||||
configure_vegvisir
|
configure_vegvisir
|
||||||
|
|
||||||
echo "Vegvisir has been sucessfully installed."
|
echo "Vegvisir has been sucessfully installed."
|
||||||
read -p "Do you want to generate a simple example website to start from? (y/n): " choice </dev/tty
|
|
||||||
|
|
||||||
# Check the user's response
|
if [[ "$example" != "n" ]]; then
|
||||||
if [[ "$choice" == "y" || "$choice" == "Y" ]] ; then
|
read -p "Do you want to generate a simple example website to start from? (y/n): " choice </dev/tty
|
||||||
generate_example_website
|
|
||||||
|
# Check the user's response
|
||||||
|
if [[ "$choice" == "y" || "$choice" == "Y" ]] ; then
|
||||||
|
generate_example_website
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Done! Thank you for choosing Vegvisir :)"
|
echo "Done! Thank you for choosing Vegvisir :)"
|
||||||
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Loop through all arguments
|
||||||
|
for arg in "$@"; do
|
||||||
|
case $arg in
|
||||||
|
--dir=*)
|
||||||
|
dir="${arg#*=}"
|
||||||
|
;;
|
||||||
|
|
||||||
|
--install=*)
|
||||||
|
install="${arg#*=}"
|
||||||
|
;;
|
||||||
|
|
||||||
|
--overwrite=*)
|
||||||
|
overwrite="${arg#*=}"
|
||||||
|
;;
|
||||||
|
|
||||||
|
--example=*)
|
||||||
|
example="${arg#*=}"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo_err "Unknown argument: $arg"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# Start execution immediately if an install directory was passed
|
||||||
|
if [ -n "$dir" ]; then
|
||||||
|
if ! [ -d "$dir" ]; then
|
||||||
|
echo_err "Installation aborted: '$dir' is not a directory"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Move to install directory and run main
|
||||||
|
cd $dir
|
||||||
|
main
|
||||||
|
fi
|
||||||
|
|
||||||
# Prompt the user for confirmation
|
# Prompt the user for confirmation
|
||||||
echo "You are currently in: ${cwd}"
|
echo "You are currently in: $(pwd)"
|
||||||
read -p "Do you want to proceed with the installation in this directory? (y/n): " choice </dev/tty
|
read -p "Do you want to proceed with the installation in this directory? (y/n): " choice </dev/tty
|
||||||
|
|
||||||
# Check the user's response
|
# Check the user's response
|
||||||
if [[ "$choice" == "y" || "$choice" == "Y" ]] ; then
|
if [[ "$choice" == "y" || "$choice" == "Y" ]] ; then
|
||||||
echo "Proceeding with the installation in ${cwd}..."
|
echo "Proceeding with the installation in $(pwd)..."
|
||||||
main
|
main
|
||||||
else
|
else
|
||||||
echo "Installation aborted."
|
echo "Installation aborted."
|
||||||
fi
|
fi
|
Loading…
Add table
Reference in a new issue