diff --git a/.gitea/workflows/auto-rebase.yml b/.gitea/workflows/auto-rebase.yml new file mode 100644 index 0000000..13d0ad1 --- /dev/null +++ b/.gitea/workflows/auto-rebase.yml @@ -0,0 +1,21 @@ +name: Rebase Remote Branches + +on: + push: + branches: + - dev + +# Disable multiple workflows at the same time +concurrency: + group: ${{ github.head_ref || github.ref_name }} + +jobs: + rebase-branches: + runs-on: skydust-runner + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Rebase + uses: https://gitea.skydust.fr/actions/auto-rebase@main diff --git a/.gitea/workflows/production.yml b/.gitea/workflows/production.yml new file mode 100644 index 0000000..7654a30 --- /dev/null +++ b/.gitea/workflows/production.yml @@ -0,0 +1,64 @@ +# This defines the name of the workflow as it will appear in the "Actions" tab of the Gitea repository. +name: Production deployment + +on: + push: + tags: + - 'v*' + +env: + HOMEBREW_REPO: "git@gitea.skydust.fr:Skydust/homebrew-clearscript.git" + +jobs: + build-docker: + name: Building and pushing + runs-on: skydust-runner + timeout-minutes: 30 + steps: + - name: Check out repo's default branch + uses: actions/checkout@v4 + - name: Getting version + uses: https://gitea.skydust.fr/actions/get-version@main + - name: Update package version + run: | + log_info "Updating version in version.sh to $(yellow)$NEW_VERSION" + sed -Ei "s|^(Version=\")[^\"]*|\1${NEW_VERSION}|" version.sh + cat version.sh + - name: TARRRRRRRR and push + run: | + PACKAGE_NAME="clearscript-v${NEW_VERSION}" + log_info "Packaging app into $(yellow)${PACKAGE_NAME}" + tar -zcf "${PACKAGE_NAME}.tar.gz" Clear.sh version.sh README.md + + log_info "Sending package" + PKG_URL="${GITHUB_SERVER_URL}/api/packages/Skydust/generic/brew-clearscript/${NEW_VERSION}/package.tar.gz" + curl --user "MilaBot:${{ secrets.CI_TOKEN }}" \ + --upload-file "${PACKAGE_NAME}.tar.gz" \ + "${PKG_URL}" + + echo "PKG_SHA=$(sha256 -q "${PACKAGE_NAME}.tar.gz" | tr -d '\n')" >> $GITEA_ENV + echo "PKG_URL=${PKG_URL}" >> $GITEA_ENV + - name: Update homebrew repo + run: | + git config user.email "release@example.com" + git config user.name "Release" + + log_info "Overriding git repository auth with PAT" + repo_url="$(git remote get-url origin)" + repo_url="${repo_url#https://}" # Remove HTTPS + GIT_NEW_URL="https://MilaBot:${{ secrets.CI_TOKEN }}@${repo_url}.git" + git remote set-url origin "$GIT_NEW_URL" + git config --local --unset http.https://${GITHUB_SERVER_URL#https://}/.extraheader + + log_info "Shallow cloning the brew repo $(yellow)${HOMEBREW_REPO}" + git clone --depth 1 "${HOMEBREW_REPO}" ./brew_repo/ + cd brew_repo/ + + log_info "Modifying brew version" + sed -Ei "s|(url \")[^\"]*|\1${PKG_URL}|" Formula/clearscript.rb + sed -Ei "s|(sha256 \")[^\"]*|\1${PKG_SHA}|" Formula/clearscript.rb + cat Formula/clearscript.rb + + log_info "Pushing the new version" + git add Formula + git push diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml new file mode 100644 index 0000000..1a3713d --- /dev/null +++ b/.gitea/workflows/release.yml @@ -0,0 +1,23 @@ +name: Release + +on: + workflow_dispatch: + inputs: + semver: + type: choice + description: Choose the semver + options: + - "Major - Incompatible API changes" + - "Minor - Adding functionality in a backward compatible manner" + - "Patch - Backward compatible bug fixes" + +jobs: + release: + name: Release + runs-on: skydust-runner + steps: + - name: Release + uses: https://gitea.skydust.fr/actions/create-release@main + with: + semver: ${{ inputs.semver }} + token: ${{ secrets.CI_TOKEN }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..090a1f0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.idea +.DS_Store diff --git a/Clear.sh b/Clear.sh index 93509b9..ce50be6 100755 --- a/Clear.sh +++ b/Clear.sh @@ -1,5 +1,5 @@ #!/bin/zsh -Version="2.0" +source "./version.sh" # ------ COLOR SETUP ------ # # Reset @@ -79,7 +79,7 @@ addJob() { jobSteps["$name"]="$step" - if [[ -z $jobCategories["$category"] ]]; then + if [[ -z "${jobCategories["$category"]}" ]]; then jobCategories["$category"]="$name" else jobCategories["$category"]+="\n$name" @@ -150,8 +150,8 @@ addClearedVal() { clearFolderNew() { local folderPath="$2" local clearableName="$1" - - jobTitle "$clearableName" + + jobTitle "$clearableName" echo "Checking for ${ClearableNameColor}${clearableName}${Color_Off}'s cache folder..." if [ -n "$(find "${folderPath}" -mindepth 1 -maxdepth 1 2>/dev/null)" ]; @@ -177,14 +177,16 @@ runJobs() { # Elevate permissions... asksudo + # shellcheck disable=SC2296 for category in ${(k)jobCategories}; do echo echo "${BarColor}[ --====-- $CategoryColor$category${BarColor} --====-- ]${Color_Off}" - echo "$jobCategories[$category]" | while IFS= read -r jobName; do + echo "${jobCategories[$category]}" | while IFS= read -r jobName; do if [[ "${jobEnabled["\"$jobName\""]}" = true ]]; then - local step=$jobSteps["$jobName"] + local step=${jobSteps["$jobName"]} + # shellcheck disable=SC2296 if print -l ${(ok)functions} | grep -q "^$step$"; then jobTitle "$jobName" # Running the custom job function @@ -207,6 +209,7 @@ read_config_file() { fi while IFS= read -r line; do + # shellcheck disable=SC2296 parts=(${(s/=/)line}) configKey=${parts[1]} @@ -220,6 +223,7 @@ read_config_file() { fi done < $config_filepath + # shellcheck disable=SC2296 for job in ${(k)jobSteps}; do # If the job doesn't exist in the config file then it should be added in it if [[ -z "${jobEnabled["$job"]}" ]]; then @@ -235,6 +239,7 @@ configure() { typeset -A optionsToJob local all_options=() + # shellcheck disable=SC2296 for job in ${(k)jobSteps}; do local current_option="" if [[ "${jobEnabled["$job"]}" = true ]]; then @@ -287,7 +292,7 @@ gradleJavaClear() { if [ -n "$(ls -d ${GradleJarFiles}/jars-* 2>/dev/null)" ]; then echo "${FoundText}" - + sizeToClear="$(du -sck ${GradleJarFiles}/jars-* | grep 'total' | cut -f1)" getHumanReadableValue readableSize $sizeToClear @@ -306,7 +311,7 @@ deleteOldestInstallFusion360() { echo "Clearing outdated Fusion360 versions" local targetDirectory="${HOME}/Library/Application Support/Autodesk/webdeploy/production" - + if [[ -d "$targetDirectory" ]] then local linkToFind="$(readlink ${HOME}/Library/Application\ Support/Autodesk/webdeploy/production/Autodesk\ Fusion\ 360.app)" @@ -314,7 +319,7 @@ deleteOldestInstallFusion360() { echo "Target Directory is '""$targetDirectory""'" echo "Currently used Fusion360 folder: ${extractedFolderName}" - + if [ "$extractedFolderName" = "" ] || [ "$extractedFolderName" = "." ]; then echo "${NotFoundColor}Unable to find the right folder${Color_Off}" @@ -330,18 +335,18 @@ deleteOldestInstallFusion360() { getHumanReadableValue readableSize $toDelete echo "Deleting folders... ${SizeColor}(${readableSize})${Color_Off}" - + # Updating cleared addClearedVal cleared $toDelete # Clearing folders w/ progression find "$targetDirectory" -mindepth 1 -maxdepth 1 ! -name "$extractedFolderName" ! -name "Autodesk Fusion 360.app" ! -name ".DS_Store" -exec sh -c 'sudo rm -rv "$0" | pv -l -s $(du -a "$0" | wc -l)> /dev/null' "{}" \; - + echo "Done!" fi fi else - echo "${ClearableNameColor}Fusion360${Color_Off}'s folder ${NotFoundColor}not found${Color_Off}." + echo "${ClearableNameColor}Fusion360${Color_Off}'s folder ${NotFoundColor}not found${Color_Off}." fi } @@ -356,7 +361,7 @@ clearDocker() { fi docker system prune --all --force else - echo "${ClearableNameColor}Docker${Color_Off} was ${NotFoundColor}not found${Color_Off}." + echo "${ClearableNameColor}Docker${Color_Off} was ${NotFoundColor}not found${Color_Off}." fi } @@ -385,6 +390,7 @@ echo "${BarColor}==========================================${Color_Off}" read_config_file while true; do + # shellcheck disable=SC2168 local response print -n "Want to configure? (y/N): " diff --git a/version.sh b/version.sh new file mode 100644 index 0000000..2978efb --- /dev/null +++ b/version.sh @@ -0,0 +1,3 @@ +#!/bin/zsh +# shellcheck disable=SC2034 +Version="2.0"