commit c0b4570a6fed419d0ab3559d426eea6f0d778b99 Author: iliyan ivanov Date: Tue Jun 25 23:03:46 2019 +0300 wip diff --git a/.defaults.sh b/.defaults.sh new file mode 100644 index 0000000..38f5531 --- /dev/null +++ b/.defaults.sh @@ -0,0 +1,24 @@ +# based on https://github.com/go-gitea/gitea/blob/master/custom/conf/app.ini.sample +# variables used in default config template +RUN_MODE=${RUN_MODE:-"dev"} +RUN_USER=${RUN_USER:-"$USER"} +MAIN_DIR=${MAIN_DIR:-"$(cd "$(dirname "$0")" && pwd)"} +HTTP_PORT=${HTTP_PORT:-"3000"} +ROOT_URL=${ROOT_URL:-"http://127.0.0.1:3000"} +SSH_DOMAIN=${SSH_DOMAIN:-"127.0.0.1"} +SSH_PORT=${SSH_PORT:-"3022"} +DISABLE_SSH=${DISABLE_SSH:-"false"} +LFS_JWT_SECRET=${LFS_JWT_SECRET:-"$(head /dev/urandom | tr -dc 'A-Za-z0-9_' | head -c 32)"} +SECRET_KEY=${SECRET_KEY:-"$(head /dev/urandom | tr -dc 'A-Za-z0-9_' | head -c 32)"} +INTERNAL_TOKEN=${INTERNAL_TOKEN:-"$(head /dev/urandom | tr -dc 'A-Za-z0-9_' | head -c 64)"} +JWT_SECRET=${JWT_SECRET:-"$(head /dev/urandom | tr -dc 'A-Za-z0-9_' | head -c 32)"} + +# global settings +[ -z "${A_DEFAULT_SETTINGS}" ] \ + && A_DEFAULT_SETTINGS=$(cat << EOF +APP_NAME = Gitea: Git with a cup of tea +RUN_MODE = {{%RUN_MODE%}} +RUN_USER = {{%RUN_USER%}} + +EOF +) diff --git a/.defaults/U2F.sh b/.defaults/U2F.sh new file mode 100644 index 0000000..39ed10c --- /dev/null +++ b/.defaults/U2F.sh @@ -0,0 +1,8 @@ +# U2F +[ -z "${A_DEFAULT_SETTINGS_U2F}" ] \ + && A_DEFAULT_SETTINGS_U2F=$(cat << EOF +[U2F] + +EOF +) + diff --git a/.defaults/admin.sh b/.defaults/admin.sh new file mode 100644 index 0000000..321ac6b --- /dev/null +++ b/.defaults/admin.sh @@ -0,0 +1,8 @@ +# admin +[ -z "${A_DEFAULT_SETTINGS_ADMIN}" ] \ + && A_DEFAULT_SETTINGS_ADMIN=$(cat << EOF +[admin] + +EOF +) + diff --git a/.defaults/api.sh b/.defaults/api.sh new file mode 100644 index 0000000..ad5a770 --- /dev/null +++ b/.defaults/api.sh @@ -0,0 +1,8 @@ +# api +[ -z "${A_DEFAULT_SETTINGS_API}" ] \ + && A_DEFAULT_SETTINGS_API=$(cat << EOF +[api] + +EOF +) + diff --git a/.defaults/attachment.sh b/.defaults/attachment.sh new file mode 100644 index 0000000..590314e --- /dev/null +++ b/.defaults/attachment.sh @@ -0,0 +1,9 @@ +# attachment +[ -z "${A_DEFAULT_SETTINGS_ATTACHMENT}" ] \ + && A_DEFAULT_SETTINGS_ATTACHMENT=$(cat << EOF +[attachment] +PATH = {{%MAIN_DIR%}}/data/gitea/attachments + +EOF +) + diff --git a/.defaults/cache.sh b/.defaults/cache.sh new file mode 100644 index 0000000..3c5ab47 --- /dev/null +++ b/.defaults/cache.sh @@ -0,0 +1,8 @@ +# cache +[ -z "${A_DEFAULT_SETTINGS_CACHE}" ] \ + && A_DEFAULT_SETTINGS_CACHE=$(cat << EOF +[cache] + +EOF +) + diff --git a/.defaults/cors.sh b/.defaults/cors.sh new file mode 100644 index 0000000..872bc4e --- /dev/null +++ b/.defaults/cors.sh @@ -0,0 +1,8 @@ +# cors +[ -z "${A_DEFAULT_SETTINGS_CORS}" ] \ + && A_DEFAULT_SETTINGS_CORS=$(cat << EOF +[cors] + +EOF +) + diff --git a/.defaults/cron.archive_cleanup.sh b/.defaults/cron.archive_cleanup.sh new file mode 100644 index 0000000..619533f --- /dev/null +++ b/.defaults/cron.archive_cleanup.sh @@ -0,0 +1,8 @@ +# cron.archive_cleanup +[ -z "${A_DEFAULT_SETTINGS_CRON_ARCHIVE_CLEANUP}" ] \ + && A_DEFAULT_SETTINGS_CRON_ARCHIVE_CLEANUP=$(cat << EOF +[cron.archive_cleanup] + +EOF +) + diff --git a/.defaults/cron.check_repo_stats.sh b/.defaults/cron.check_repo_stats.sh new file mode 100644 index 0000000..9117ae4 --- /dev/null +++ b/.defaults/cron.check_repo_stats.sh @@ -0,0 +1,8 @@ +# cron.check_repo_stats +[ -z "${A_DEFAULT_SETTINGS_CRON_CHECK_REPO_STATS}" ] \ + && A_DEFAULT_SETTINGS_CRON_CHECK_REPO_STATS=$(cat << EOF +[cron.check_repo_stats] + +EOF +) + diff --git a/.defaults/cron.repo_health_check.sh b/.defaults/cron.repo_health_check.sh new file mode 100644 index 0000000..70e7485 --- /dev/null +++ b/.defaults/cron.repo_health_check.sh @@ -0,0 +1,8 @@ +# cron.repo_health_check +[ -z "${A_DEFAULT_SETTINGS_CRON_REPO_HEALTH_CHECK}" ] \ + && A_DEFAULT_SETTINGS_CRON_REPO_HEALTH_CHECK=$(cat << EOF +[cron.repo_health_check] + +EOF +) + diff --git a/.defaults/cron.sh b/.defaults/cron.sh new file mode 100644 index 0000000..7e68f83 --- /dev/null +++ b/.defaults/cron.sh @@ -0,0 +1,8 @@ +# cron +[ -z "${A_DEFAULT_SETTINGS_CRON}" ] \ + && A_DEFAULT_SETTINGS_CRON=$(cat << EOF +[cron] + +EOF +) + diff --git a/.defaults/cron.sync_external_users.sh b/.defaults/cron.sync_external_users.sh new file mode 100644 index 0000000..c59046c --- /dev/null +++ b/.defaults/cron.sync_external_users.sh @@ -0,0 +1,8 @@ +# cron.sync_external_users +[ -z "${A_DEFAULT_SETTINGS_CRON_SYNC_EXTERNAL_USERS}" ] \ + && A_DEFAULT_SETTINGS_CRON_SYNC_EXTERNAL_USERS=$(cat << EOF +[cron.sync_external_users] + +EOF +) + diff --git a/.defaults/cron.update_mirrors.sh b/.defaults/cron.update_mirrors.sh new file mode 100644 index 0000000..58ce213 --- /dev/null +++ b/.defaults/cron.update_mirrors.sh @@ -0,0 +1,8 @@ +# cron.update_mirrors +[ -z "${A_DEFAULT_SETTINGS_CRON_UPDATE_MIRRORS}" ] \ + && A_DEFAULT_SETTINGS_CRON_UPDATE_MIRRORS=$(cat << EOF +[cron.update_mirrors] + +EOF +) + diff --git a/.defaults/database.sh b/.defaults/database.sh new file mode 100644 index 0000000..1656f88 --- /dev/null +++ b/.defaults/database.sh @@ -0,0 +1,10 @@ +# database +[ -z "${A_DEFAULT_SETTINGS_DATABASE}" ] \ + && A_DEFAULT_SETTINGS_DATABASE=$(cat << EOF +[database] +PATH = {{%MAIN_DIR%}}/data/gitea/gitea.db +DB_TYPE = sqlite3 + +EOF +) + diff --git a/.defaults/git.sh b/.defaults/git.sh new file mode 100644 index 0000000..6172e3d --- /dev/null +++ b/.defaults/git.sh @@ -0,0 +1,8 @@ +# git +[ -z "${A_DEFAULT_SETTINGS_GIT}" ] \ + && A_DEFAULT_SETTINGS_GIT=$(cat << EOF +[git] + +EOF +) + diff --git a/.defaults/git.timeout.sh b/.defaults/git.timeout.sh new file mode 100644 index 0000000..34a0a06 --- /dev/null +++ b/.defaults/git.timeout.sh @@ -0,0 +1,8 @@ +# git.timeout +[ -z "${A_DEFAULT_SETTINGS_GIT_TIMEOUT}" ] \ + && A_DEFAULT_SETTINGS_GIT_TIMEOUT=$(cat << EOF +[git.timeout] + +EOF +) + diff --git a/.defaults/highlight.mapping.sh b/.defaults/highlight.mapping.sh new file mode 100644 index 0000000..fb73852 --- /dev/null +++ b/.defaults/highlight.mapping.sh @@ -0,0 +1,8 @@ +# highlight.mapping +[ -z "${A_DEFAULT_SETTINGS_HIGHLIGHT_MAPPING}" ] \ + && A_DEFAULT_SETTINGS_HIGHLIGHT_MAPPING=$(cat << EOF +[highlight.mapping] + +EOF +) + diff --git a/.defaults/i18n.datelang.sh b/.defaults/i18n.datelang.sh new file mode 100644 index 0000000..15f987f --- /dev/null +++ b/.defaults/i18n.datelang.sh @@ -0,0 +1,8 @@ +# i18n.datelang +[ -z "${A_DEFAULT_SETTINGS_I18N_DATELANG}" ] \ + && A_DEFAULT_SETTINGS_I18N_DATELANG=$(cat << EOF +[i18n.datelang] + +EOF +) + diff --git a/.defaults/i18n.sh b/.defaults/i18n.sh new file mode 100644 index 0000000..f531119 --- /dev/null +++ b/.defaults/i18n.sh @@ -0,0 +1,8 @@ +# i18n +[ -z "${A_DEFAULT_SETTINGS_I18N}" ] \ + && A_DEFAULT_SETTINGS_I18N=$(cat << EOF +[i18n] + +EOF +) + diff --git a/.defaults/indexer.sh b/.defaults/indexer.sh new file mode 100644 index 0000000..410a082 --- /dev/null +++ b/.defaults/indexer.sh @@ -0,0 +1,9 @@ +# indexer +[ -z "${A_DEFAULT_SETTINGS_INDEXER}" ] \ + && A_DEFAULT_SETTINGS_INDEXER=$(cat << EOF +[indexer] +ISSUE_INDEXER_PATH = {{%MAIN_DIR%}}/data/gitea/indexers/issues.bleve + +EOF +) + diff --git a/.defaults/log.conn.sh b/.defaults/log.conn.sh new file mode 100644 index 0000000..dd47bd0 --- /dev/null +++ b/.defaults/log.conn.sh @@ -0,0 +1,8 @@ +# log.conn +[ -z "${A_DEFAULT_SETTINGS_LOG_CONN}" ] \ + && A_DEFAULT_SETTINGS_LOG_CONN=$(cat << EOF +[log.conn] + +EOF +) + diff --git a/.defaults/log.console.sh b/.defaults/log.console.sh new file mode 100644 index 0000000..d7a02ce --- /dev/null +++ b/.defaults/log.console.sh @@ -0,0 +1,8 @@ +# log.console +[ -z "${A_DEFAULT_SETTINGS_LOG_CONSOLE}" ] \ + && A_DEFAULT_SETTINGS_LOG_CONSOLE=$(cat << EOF +[log.console] + +EOF +) + diff --git a/.defaults/log.file.sh b/.defaults/log.file.sh new file mode 100644 index 0000000..3042164 --- /dev/null +++ b/.defaults/log.file.sh @@ -0,0 +1,8 @@ +# log.file +[ -z "${A_DEFAULT_SETTINGS_LOG_FILE}" ] \ + && A_DEFAULT_SETTINGS_LOG_FILE=$(cat << EOF +[log.file] + +EOF +) + diff --git a/.defaults/log.sh b/.defaults/log.sh new file mode 100644 index 0000000..9c54fbe --- /dev/null +++ b/.defaults/log.sh @@ -0,0 +1,11 @@ +# log +[ -z "${A_DEFAULT_SETTINGS_LOG}" ] \ + && A_DEFAULT_SETTINGS_LOG=$(cat << EOF +[log] +ROOT_PATH = {{%MAIN_DIR%}}/data/gitea/log +MODE = file +LEVEL = Info + +EOF +) + diff --git a/.defaults/log.smtp.sh b/.defaults/log.smtp.sh new file mode 100644 index 0000000..16422b7 --- /dev/null +++ b/.defaults/log.smtp.sh @@ -0,0 +1,8 @@ +# log.smtp +[ -z "${A_DEFAULT_SETTINGS_LOG_SMTP}" ] \ + && A_DEFAULT_SETTINGS_LOG_SMTP=$(cat << EOF +[log.smtp] + +EOF +) + diff --git a/.defaults/log.x.sh b/.defaults/log.x.sh new file mode 100644 index 0000000..99a529b --- /dev/null +++ b/.defaults/log.x.sh @@ -0,0 +1,8 @@ +# log.x +[ -z "${A_DEFAULT_SETTINGS_LOG_X}" ] \ + && A_DEFAULT_SETTINGS_LOG_X=$(cat << EOF +[log.x] + +EOF +) + diff --git a/.defaults/mailer.sh b/.defaults/mailer.sh new file mode 100644 index 0000000..f651316 --- /dev/null +++ b/.defaults/mailer.sh @@ -0,0 +1,9 @@ +# mailer +[ -z "${A_DEFAULT_SETTINGS_MAILER}" ] \ + && A_DEFAULT_SETTINGS_MAILER=$(cat << EOF +[mailer] +ENABLED = false + +EOF +) + diff --git a/.defaults/markdown.sh b/.defaults/markdown.sh new file mode 100644 index 0000000..ebae735 --- /dev/null +++ b/.defaults/markdown.sh @@ -0,0 +1,8 @@ +# markdown +[ -z "${A_DEFAULT_SETTINGS_MARKDOWN}" ] \ + && A_DEFAULT_SETTINGS_MARKDOWN=$(cat << EOF +[markdown] + +EOF +) + diff --git a/.defaults/markup.asciidoc.sh b/.defaults/markup.asciidoc.sh new file mode 100644 index 0000000..62e4e8e --- /dev/null +++ b/.defaults/markup.asciidoc.sh @@ -0,0 +1,8 @@ +# markup.asciidoc +[ -z "${A_DEFAULT_SETTINGS_MARKUP_ASCIIDOC}" ] \ + && A_DEFAULT_SETTINGS_MARKUP_ASCIIDOC=$(cat << EOF +[markup.asciidoc] + +EOF +) + diff --git a/.defaults/metrics.sh b/.defaults/metrics.sh new file mode 100644 index 0000000..333642f --- /dev/null +++ b/.defaults/metrics.sh @@ -0,0 +1,8 @@ +# metrics +[ -z "${A_DEFAULT_SETTINGS_METRICS}" ] \ + && A_DEFAULT_SETTINGS_METRICS=$(cat << EOF +[metrics] + +EOF +) + diff --git a/.defaults/mirror.sh b/.defaults/mirror.sh new file mode 100644 index 0000000..190d006 --- /dev/null +++ b/.defaults/mirror.sh @@ -0,0 +1,8 @@ +# mirror +[ -z "${A_DEFAULT_SETTINGS_MIRROR}" ] \ + && A_DEFAULT_SETTINGS_MIRROR=$(cat << EOF +[mirror] + +EOF +) + diff --git a/.defaults/oauth2.sh b/.defaults/oauth2.sh new file mode 100644 index 0000000..45ca6da --- /dev/null +++ b/.defaults/oauth2.sh @@ -0,0 +1,9 @@ +# oauth2 +[ -z "${A_DEFAULT_SETTINGS_OAUTH2}" ] \ + && A_DEFAULT_SETTINGS_OAUTH2=$(cat << EOF +[oauth2] +JWT_SECRET = {{%JWT_SECRET%}} + +EOF +) + diff --git a/.defaults/openid.sh b/.defaults/openid.sh new file mode 100644 index 0000000..838f454 --- /dev/null +++ b/.defaults/openid.sh @@ -0,0 +1,10 @@ +# openid +[ -z "${A_DEFAULT_SETTINGS_OPENID}" ] \ + && A_DEFAULT_SETTINGS_OPENID=$(cat << EOF +[openid] +ENABLE_OPENID_SIGNIN = false +ENABLE_OPENID_SIGNUP = false + +EOF +) + diff --git a/.defaults/other.sh b/.defaults/other.sh new file mode 100644 index 0000000..1f0b300 --- /dev/null +++ b/.defaults/other.sh @@ -0,0 +1,8 @@ +# other +[ -z "${A_DEFAULT_SETTINGS_OTHER}" ] \ + && A_DEFAULT_SETTINGS_OTHER=$(cat << EOF +[other] + +EOF +) + diff --git a/.defaults/picture.sh b/.defaults/picture.sh new file mode 100644 index 0000000..e7cb76a --- /dev/null +++ b/.defaults/picture.sh @@ -0,0 +1,11 @@ +# picture +[ -z "${A_DEFAULT_SETTINGS_PICTURE}" ] \ + && A_DEFAULT_SETTINGS_PICTURE=$(cat << EOF +[picture] +AVATAR_UPLOAD_PATH = {{%MAIN_DIR%}}/data/gitea/avatars +DISABLE_GRAVATAR = false +ENABLE_FEDERATED_AVATAR = true + +EOF +) + diff --git a/.defaults/repository.editor.sh b/.defaults/repository.editor.sh new file mode 100644 index 0000000..0419df8 --- /dev/null +++ b/.defaults/repository.editor.sh @@ -0,0 +1,8 @@ +# repository.editor +[ -z "${A_DEFAULT_SETTINGS_REPOSITORY_EDITOR}" ] \ + && A_DEFAULT_SETTINGS_REPOSITORY_EDITOR=$(cat << EOF +[repository.editor] + +EOF +) + diff --git a/.defaults/repository.issue.sh b/.defaults/repository.issue.sh new file mode 100644 index 0000000..c8f9371 --- /dev/null +++ b/.defaults/repository.issue.sh @@ -0,0 +1,8 @@ +# repository.issue +[ -z "${A_DEFAULT_SETTINGS_REPOSITORY_ISSUE}" ] \ + && A_DEFAULT_SETTINGS_REPOSITORY_ISSUE=$(cat << EOF +[repository.issue] + +EOF +) + diff --git a/.defaults/repository.local.sh b/.defaults/repository.local.sh new file mode 100644 index 0000000..c7fac1a --- /dev/null +++ b/.defaults/repository.local.sh @@ -0,0 +1,9 @@ +# repository.local +[ -z "${A_DEFAULT_SETTINGS_REPOSITORY_LOCAL}" ] \ + && A_DEFAULT_SETTINGS_REPOSITORY_LOCAL=$(cat << EOF +[repository.local] +LOCAL_COPY_PATH = {{%MAIN_DIR%}}/data/gitea/tmp/local-repo + +EOF +) + diff --git a/.defaults/repository.pull-request.sh b/.defaults/repository.pull-request.sh new file mode 100644 index 0000000..a3593c3 --- /dev/null +++ b/.defaults/repository.pull-request.sh @@ -0,0 +1,8 @@ +# repository.pull-request +[ -z "${A_DEFAULT_SETTINGS_REPOSITORY_PULL_REQUEST}" ] \ + && A_DEFAULT_SETTINGS_REPOSITORY_PULL_REQUEST=$(cat << EOF +[repository.pull-request] + +EOF +) + diff --git a/.defaults/repository.sh b/.defaults/repository.sh new file mode 100644 index 0000000..0fdbcd8 --- /dev/null +++ b/.defaults/repository.sh @@ -0,0 +1,9 @@ +# repository +[ -z "${A_DEFAULT_SETTINGS_REPOSITORY}" ] \ + && A_DEFAULT_SETTINGS_REPOSITORY=$(cat << EOF +[repository] +ROOT = {{%MAIN_DIR%}}/data/git/repositories + +EOF +) + diff --git a/.defaults/repository.upload.sh b/.defaults/repository.upload.sh new file mode 100644 index 0000000..c48faad --- /dev/null +++ b/.defaults/repository.upload.sh @@ -0,0 +1,9 @@ +# repository.upload +[ -z "${A_DEFAULT_SETTINGS_REPOSITORY_UPLOAD}" ] \ + && A_DEFAULT_SETTINGS_REPOSITORY_UPLOAD=$(cat << EOF +[repository.upload] +TEMP_PATH = {{%MAIN_DIR%}}/data/gitea/uploads + +EOF +) + diff --git a/.defaults/security.sh b/.defaults/security.sh new file mode 100644 index 0000000..d718c97 --- /dev/null +++ b/.defaults/security.sh @@ -0,0 +1,11 @@ +# security +[ -z "${A_DEFAULT_SETTINGS_SECURITY}" ] \ + && A_DEFAULT_SETTINGS_SECURITY=$(cat << EOF +[security] +INSTALL_LOCK = true +SECRET_KEY = {{%SECRET_KEY%}} +INTERNAL_TOKEN = {{%INTERNAL_TOKEN%}} + +EOF +) + diff --git a/.defaults/server.sh b/.defaults/server.sh new file mode 100644 index 0000000..97fe368 --- /dev/null +++ b/.defaults/server.sh @@ -0,0 +1,20 @@ +# server +[ -z "${A_DEFAULT_SETTINGS_SERVER}" ] \ + && A_DEFAULT_SETTINGS_SERVER=$(cat << EOF +[server] +APP_DATA_PATH = {{%MAIN_DIR%}}/data/gitea +SSH_DOMAIN = {{%SSH_DOMAIN%}} +HTTP_PORT = {{%HTTP_PORT%}} +ROOT_URL = {{%ROOT_URL%}} +DISABLE_SSH = {{%DISABLE_SSH%}} +START_SSH_SERVER = true +SSH_PORT = {{%SSH_PORT%}} +LFS_CONTENT_PATH = {{%MAIN_DIR%}}/data/git/lfs +DOMAIN = localhost +LFS_START_SERVER = true +LFS_JWT_SECRET = {{%LFS_JWT_SECRET%}} +OFFLINE_MODE = false + +EOF +) + diff --git a/.defaults/service.sh b/.defaults/service.sh new file mode 100644 index 0000000..d174926 --- /dev/null +++ b/.defaults/service.sh @@ -0,0 +1,18 @@ +# service +[ -z "${A_DEFAULT_SETTINGS_SERVICE}" ] \ + && A_DEFAULT_SETTINGS_SERVICE=$(cat << EOF +[service] +DISABLE_REGISTRATION = true +REQUIRE_SIGNIN_VIEW = false +REGISTER_EMAIL_CONFIRM = false +ENABLE_NOTIFY_MAIL = false +ALLOW_ONLY_EXTERNAL_REGISTRATION = false +ENABLE_CAPTCHA = false +DEFAULT_KEEP_EMAIL_PRIVATE = false +DEFAULT_ALLOW_CREATE_ORGANIZATION = true +DEFAULT_ENABLE_TIMETRACKING = true +NO_REPLY_ADDRESS = noreply.example.org + +EOF +) + diff --git a/.defaults/session.sh b/.defaults/session.sh new file mode 100644 index 0000000..4277421 --- /dev/null +++ b/.defaults/session.sh @@ -0,0 +1,10 @@ +# session +[ -z "${A_DEFAULT_SETTINGS_SESSION}" ] \ + && A_DEFAULT_SETTINGS_SESSION=$(cat << EOF +[session] +PROVIDER_CONFIG = {{%MAIN_DIR%}}/data/gitea/sessions +PROVIDER = file + +EOF +) + diff --git a/.defaults/ssh.minimum_key_sizes.sh b/.defaults/ssh.minimum_key_sizes.sh new file mode 100644 index 0000000..e6f5856 --- /dev/null +++ b/.defaults/ssh.minimum_key_sizes.sh @@ -0,0 +1,8 @@ +# ssh.minimum_key_sizes +[ -z "${A_DEFAULT_SETTINGS_SSH_MINIMUM_KEY_SIZES}" ] \ + && A_DEFAULT_SETTINGS_SSH_MINIMUM_KEY_SIZES=$(cat << EOF +[ssh.minimum_key_sizes] + +EOF +) + diff --git a/.defaults/time.sh b/.defaults/time.sh new file mode 100644 index 0000000..6aa82a1 --- /dev/null +++ b/.defaults/time.sh @@ -0,0 +1,8 @@ +# time +[ -z "${A_DEFAULT_SETTINGS_TIME}" ] \ + && A_DEFAULT_SETTINGS_TIME=$(cat << EOF +[time] + +EOF +) + diff --git a/.defaults/ui.admin.sh b/.defaults/ui.admin.sh new file mode 100644 index 0000000..6d2d4f4 --- /dev/null +++ b/.defaults/ui.admin.sh @@ -0,0 +1,8 @@ +# ui.admin +[ -z "${A_DEFAULT_SETTINGS_UI_ADMIN}" ] \ + && A_DEFAULT_SETTINGS_UI_ADMIN=$(cat << EOF +[ui.admin] + +EOF +) + diff --git a/.defaults/ui.meta.sh b/.defaults/ui.meta.sh new file mode 100644 index 0000000..7d61d9e --- /dev/null +++ b/.defaults/ui.meta.sh @@ -0,0 +1,8 @@ +# ui.meta +[ -z "${A_DEFAULT_SETTINGS_UI_META}" ] \ + && A_DEFAULT_SETTINGS_UI_META=$(cat << EOF +[ui.meta] + +EOF +) + diff --git a/.defaults/ui.sh b/.defaults/ui.sh new file mode 100644 index 0000000..c9b51c4 --- /dev/null +++ b/.defaults/ui.sh @@ -0,0 +1,8 @@ +# ui +[ -z "${A_DEFAULT_SETTINGS_UI}" ] \ + && A_DEFAULT_SETTINGS_UI=$(cat << EOF +[ui] + +EOF +) + diff --git a/.defaults/ui.user.sh b/.defaults/ui.user.sh new file mode 100644 index 0000000..a8f3175 --- /dev/null +++ b/.defaults/ui.user.sh @@ -0,0 +1,8 @@ +# ui.user +[ -z "${A_DEFAULT_SETTINGS_UI_USER}" ] \ + && A_DEFAULT_SETTINGS_UI_USER=$(cat << EOF +[ui.user] + +EOF +) + diff --git a/.defaults/webhook.sh b/.defaults/webhook.sh new file mode 100644 index 0000000..8ddcd72 --- /dev/null +++ b/.defaults/webhook.sh @@ -0,0 +1,8 @@ +# webhook +[ -z "${A_DEFAULT_SETTINGS_WEBHOOK}" ] \ + && A_DEFAULT_SETTINGS_WEBHOOK=$(cat << EOF +[webhook] + +EOF +) + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..76429ff --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +# executable file +/gitea +# local setup variables +/.custom_defaults.sh +/data +/custom +/log diff --git a/.helpers/gen_empty_sections.sh b/.helpers/gen_empty_sections.sh new file mode 100755 index 0000000..fc546d1 --- /dev/null +++ b/.helpers/gen_empty_sections.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +set -e + +# get sections +sections=$(curl -L https://raw.githubusercontent.com/go-gitea/gitea/master/custom/conf/app.ini.sample 2>/dev/null | grep '^\[.*\]' | tr '\n' ' '|tr -d '[' | tr -d ']' ) + +for x in $sections; do + # to upper and remove dot + y=$(echo -n "$x" | tr '[:lower:]' '[:upper:]' | tr '.' '_' | tr '-' '_' ) + # skip existing files + [ -f "$PWD/$x.sh" ] && continue + # generate empty section file + cat>"$PWD/$x.sh" << EOB +# $x +[ -z "\${A_DEFAULT_SETTINGS_${y}}" ] \\ + && A_DEFAULT_SETTINGS_${y}=\$(cat << EOF +[$x] + +EOF +) + +EOB + +done diff --git a/setup.sh b/setup.sh new file mode 100755 index 0000000..e472adb --- /dev/null +++ b/setup.sh @@ -0,0 +1,139 @@ +#!/usr/bin/env bash +set -e + +curp="$(cd "$(dirname "$0")" && pwd)" + +# prefer gitea executable in project folder and fallback to $PATH +[[ -x "$curp/gitea" ]] && giteae="$curp/gitea" \ + || giteae=$(command -v gitea 2>/dev/null) \ + || { echo "gitea executable not found!" 1>&2;exit 1; } + +set_in_file() { + # ensure there is a line with $1=$2 in file $3 + grep -q "^$1=" "$3" && sed "s/^$1=.*/$1=$2/" -i "$3" \ + || echo "$1=$2" >> "$3" + +} +gen_app_ini() { + source "$curp/.defaults.sh" + for x in $(find "$curp/.defaults" -type f -name "*.sh"); do + source "$x" + done + truncate -s 0 "$curp/custom/conf/app.ini" + + # first build the template + for x in $( ( set -o posix ; set ) |grep -o '^A_DEFAULT_SETTINGS.*=' | cut -d '=' -f1); do + echo -e "${!x}\n" >> "$curp/custom/conf/app.ini" + done + # then replace variables in the template + for x in $(cat "$curp/custom/conf/app.ini" | grep -o '{{%.*%}}' | sed -e 's/^{{%//' -e 's/%}}//' | sort | uniq); do + sed -i -e "s#{{%$x%}}#$(echo -n "${!x}"|sed -z 's/\n/\\n/g')#" "$curp/custom/conf/app.ini" + done +} +create_admin() { + if [ -z "${ADMIN_PASSWORD}" ]; then + ADMIN_PASSWORD=$(head /dev/urandom | tr -dc 'A-Za-z0-9_' | head -c 32) + echo "pass: ${ADMIN_PASSWORD}" + set_in_file "ADMIN_PASSWORD" "${ADMIN_PASSWORD}" "$curp/.custom_defaults.sh" + fi + set +e + output=$("$giteae" admin create-user \ + --username "${ADMIN_USER}" \ + --email "${ADMIN_EMAIL}" \ + --password "${ADMIN_PASSWORD}" \ + --admin \ + --access-token) + ecode="$?" + set -e + echo "$output" 1>&2 + if [ "$ecode" -ne 0 ]; then + echo "command exited with status code: $ecode" + return "$ecode" + else + ADMIN_TOKEN=$(echo -n "$output" | grep 'Access token was successfully created' | rev | cut -d ' ' -f1 | rev) + echo "token: ${ADMIN_TOKEN}" + set_in_file "ADMIN_TOKEN" "${ADMIN_TOKEN}" "$curp/.custom_defaults.sh" + fi +} +create_org() { + curl --silent -X POST "${apiurl}/orgs" \ + -H "Authorization: token ${ADMIN_TOKEN}" \ + -H "accept: application/json" \ + -H "Content-Type: application/json" \ + -d "{ \"username\": \"$1\", \"visibility\": \"limited\"}" 1>&2 +} + +create_repo() { + curl --silent -X POST "${apiurl}$2" \ + -H "Authorization: token ${ADMIN_TOKEN}" \ + -H "accept: application/json" \ + -H "Content-Type: application/json" \ + -d "{\"auto_init\": false, \"private\": true, \"name\": \"$1\"}" 1>&2 +} + +# load local file +touch "$curp/.custom_defaults.sh" && chmod 0600 "$curp/.custom_defaults.sh" +source "$curp/.custom_defaults.sh" +if [ -z "${ADMIN_EMAIL}" ]; then + while [ -z "${ADMIN_EMAIL}" ]; do + read -p "ADMIN_EMAIL=" ADMIN_EMAIL + done + set_in_file "ADMIN_EMAIL" "${ADMIN_EMAIL}" "$curp/.custom_defaults.sh" +fi + +mkdir -p "$curp/custom/conf/" "$curp/log" + +[ -z "$ADMIN_USER" ] && ADMIN_USER="$USER" + +# generate app.ini +gen_app_ini + +# migrate database +"$giteae" migrate 1>>"$curp/log/db_init.log" 2>>"$curp/log/db_init.log" + +# create admin user +[ -z "${ADMIN_TOKEN}" ] && admininit=$(create_admin 2>>"$curp/log/admin_init.log") + +SCREEN_SES_NAME=${SCREEN_SES_NAME:-gitea-dev} + +# run gitea in screen +if ! screen -S ${SCREEN_SES_NAME} -Q "select" . > /dev/null 2>&1; then + screen -S "${SCREEN_SES_NAME}" -d -m -- sh -c "\"$giteae\" web 2>&1 | tee \"$curp/log/web.log\"" + SLEEP_SECS=10 + echo "Sleeping for ${SLEEP_SECS} seconds for web service to start!" 1>&2 + for x in $(seq ${SLEEP_SECS} -1 1); do + echo -n "$x " 1>&2 + sleep 1 + done + echo "" 1>&2 +fi + +# reload .custom_defaults as they may have been changed +source "$curp/.custom_defaults.sh" + +serverurl="$(cat custom/conf/app.ini | grep '^ROOT_URL.*=' | rev | cut -d '=' -f1 | rev | tr -d '[:space:]')" +pushuri="$(echo "$serverurl" | perl -pe "s#(https?://)#\${1}${ADMIN_USER}:${ADMIN_PASSWORD}@#" )" +apiurl="$serverurl/api/v1" +# init ripos +for REPO in ${REPOS}; do + repoPath="$(echo "$REPO" | cut -d ':' -f1 | tr -d '[:space:]')" + repoOrg="$(echo "$REPO" | cut -d ':' -f2 | tr -d '[:space:]')" + repoName="$(echo "$REPO" | cut -d ':' -f3 | tr -d '[:space:]')" + [ -z "$repoName" ] && repoName="$(basename "$repoPath")" + if [ -z "$repoOrg" ]; then + repoAPIEP="/user/repos" + repoOwner="${ADMIN_USER}" + else + create_org "$repoOrg" + sleep 1 + repoAPIEP="/org/$repoOrg/repos" + repoOwner="$repoOrg" + fi + create_repo "${repoName}" "${repoAPIEP}" 1>&2 + ( + cd "$repoPath" + git remote add gitea-debug-dev "$pushuri/${repoOwner}/${repoName}.git" || true + git push "gitea-debug-dev" master + ) + exit +done