diff --git a/deploy_new_python_project.sh b/deploy_new_python_project.sh index 34ae228..1a63083 100755 --- a/deploy_new_python_project.sh +++ b/deploy_new_python_project.sh @@ -1,6 +1,6 @@ #!/bin/bash function usage() { - echo "$(basename "${0}" .sh) [--help|-h|-?] [--author|-a 'Author name'] [--authoring-date|-d 'date of creation'] [--project-name|-n 'Name of the project'] [--project-codename|-p short_project_name] [--version|-v 'version number'] [--deployment-path|-r 'path/to/copy/skeleton'] [--author-email|-e 'email@example.org'] [--url|-u 'https://domain.com'] [--license|-l 'LICENSEv1']" + echo "$(basename "${0}" .sh) [--help|-h|-?] [--author|-a 'Author name'] [--authoring-date|-d 'date of creation'] [--project-name|-n 'Name of the project'] [--project-codename|-p short_project_name] [--version|-v 'version number'] [--deployment-path|-r 'path/to/copy/skeleton'] [--author-email|-e 'email@example.org'] [--url|-u 'https://domain.com'] [--license|-l 'LICENSEv1'] [--forgejo-instance|-f 'https://repos.example.org'] [--forgejo-token|-t 'Very Secret Token']" echo "" echo " --help Show this help." echo " --author Author name, between quotes for spaces." @@ -14,6 +14,8 @@ function usage() { echo " --license License name." echo " --license-url License URL to fetch in plain text and save in your project folder." echo " --description Description." + echo " --forgejo-instance URL to your Forgejo instance to create a repository. If present, will try to create a private repository." + echo " --forgeto-token API token to authenticate to your Forgejo instance." if [ -e "$(dirname "${0}")/defaults" ] then echo "Defaults:" @@ -22,6 +24,8 @@ function usage() { echo "" } AUTHOR_EMAIL="${USER}@$(hostname -f)" +FORGEJO_INSTANCE='' +FORGEJO_TOKEN='' # shellcheck disable=SC1090 if [ -e "$(dirname "${0}")/defaults" ] then @@ -90,6 +94,16 @@ do DESCRIPTION="${1}" shift ;; + "--forgejo-instance"|"-f") + shift + FORGEJO_INSTANCE="${1}" + shift + ;; + "--forgejo-token"|"-t") + shift + FORGEJO_TOKEN="${1}" + shift + ;; *) echo "Ignoring unknwon parameter '${1}'" shift @@ -141,3 +155,21 @@ do sed -i "s/__license__/${LICENSE}/g" "${file}" sed -i "s/__description__/${DESCRIPTION}/g" "${file}" done <<< "$(find "${destination_path}/" -type f)" + +if [ -n "${FORGEJO_INSTANCE}" ]; then + data="{ \"default_branch\": \"main\", \"description\": \"${DESCRIPTION}\", \"name\": \"${PROJECT_CODENAME}\", \"private\": true}" + response=$(curl -s "${FORGEJO_INSTANCE}/api/v1/user/repos" \ + -H "Authorization: Bearer ${FORGEJO_TOKEN}" \ + -H 'accept: application/json' \ + -H 'Content-Type: application/json' \ + -X POST \ + -d "${data}") + git_url=$(echo "${response}" | jq '.ssh_url') + cd "${destination_path}" || exit 1 + git init + git checkout -b main + git add . + git commit -m "Initial commit" + git remote add origin "${git_url}" + git push -u origin main +fi