Skip to content

Instantly share code, notes, and snippets.

@HaradaKumiko
Created April 13, 2024 12:12
Show Gist options
  • Save HaradaKumiko/20b26f82097fb392c4b2dcfbbd59bfbf to your computer and use it in GitHub Desktop.
Save HaradaKumiko/20b26f82097fb392c4b2dcfbbd59bfbf to your computer and use it in GitHub Desktop.
Script init using bash to init project using go | Alterra Academy
#!/bin/bash
clean_project_name() {
local input="$1"
input=$(echo "$input" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
input=$(echo "$input" | tr -s '[:space:]' '-')
input=$(echo "$input" | sed 's/\-*$//')
echo "$input"
}
install_packages() {
go get github.com/google/uuid
go get github.com/labstack/echo/v4
go get github.com/labstack/echo/v4/middleware
go get github.com/golang-jwt/jwt/v5
go get github.com/labstack/echo-jwt/v4
go get golang.org/x/crypto/argon2
go get github.com/spf13/viper
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql
}
# Belum kelar ntar dipake
# content_config_database () {
# cat <<EOF >> configs/database.go
# package main
# func main(){
# // configs.DBinit()
# // e := routers.Routes()
# // e.Logger.Fatal(e.Start(":8080"))
# }
# EOF
# }
# content_main () {
# cat <<EOF >> main.go
# package main
# func main(){
# // configs.DBinit()
# // e := routers.Routes()
# // e.Logger.Fatal(e.Start(":8080"))
# }
# EOF
# }
create_project() {
mkdir "$1"
cd "$1" || exit
git init -q
go mod init "$1"
install_packages
mkdir routes controllers services repositories models middlewares utils helpers configs
touch main.go
echo "Project '$1' telah dibuat."
}
echo "===== Create Golang Project ====="
while true; do
read -p "Masukkan nama project : " project_name_input
project_name=$(clean_project_name "$project_name_input")
if [ -z "$project_name" ]; then
echo "Nama project tidak boleh kosong. Harap masukkan nama yang valid."
else
if [ -d "$project_name" ]; then
echo "Folder dengan nama '$project_name' sudah ada."
read -p "Pilih nama lain atau tekan 'x' untuk keluar: " choice
if [ "$choice" == "x" ]; then
echo "Keluar dari program."
exit 1
fi
else
create_project "$project_name"
echo "Init Project Done"
break
fi
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment