Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # Name: remove_versions
- # Author: pinagamer
- # Date: 2019-04-09
- # Version: 1.0
- DEFAULT_TIMESTAMP="2 month"
- DATE_FORMAT="+%FT%T"
- TEST_ARG=0
- NUM_VERSIONS=0
- check_service_name(){
- SERVICES_NAME=($(gcloud app services list | tail -n +2 | awk '{ print $1 }'))
- for serv in "${SERVICES_NAME[@]}"
- do
- :
- if [[ "$SERVICE_ARG" == "$serv" ]]; then
- return 1
- fi
- done
- return 0
- }
- show_help_menu(){
- echo "Help command"
- echo " -h : Show this menu"
- echo " -t : Test mode. It will not perform any risky operation"
- echo " -d : Date filter. Specify the interval to filter the versions"
- echo " -s : Service filter"
- }
- # Check arguments
- while getopts ":htd:s:" opt; do
- case $opt in
- h)
- show_help_menu
- exit
- ;;
- t)
- echo "testing option (-t) detected"
- TEST_ARG=1
- ;;
- d)
- echo "date option (-d) detected. Parameter: $OPTARG" >&2
- DATE_ARG=$OPTARG
- ;;
- s)
- echo "service option (-s) detected. Parameter: $OPTARG" >&2
- SERVICE_ARG=$OPTARG
- check_service_name
- if [[ $? != 1 ]]; then
- echo "ERROR! Invalid service with the name '$SERVICE_ARG'"
- echo "Possible values: [ ${SERVICES_NAME[@]} ]"
- exit
- fi
- ;;
- \?)
- echo "Invalid option: -$OPTARG" >&2
- ;;
- :)
- echo "Option -$OPTARG requires an argument" >&2
- exit 1
- ;;
- esac
- done
- DATE_LIMIT=$(date $DATE_FORMAT -d "-${DATE_ARG:-$DEFAULT_TIMESTAMP}")
- echo $DATE_LIMIT
- # Apply logic
- if [[ $TEST_ARG == 0 ]]; then
- echo "WARNING! This is not test mode"
- if [[ $SERVICE_ARG == "" ]]; then
- echo "WARNING! Versions will be deleted from all versions"
- gcloud app versions list | tail -n +2 | awk -v DATE_LIMIT=$DATE_LIMIT '{
- SERVICE_FIELD=$1;
- VERSION_FIELD=$2;
- LAST_DEPLOYED_FIELD=$4;
- if(DATE_LIMIT > LAST_DEPLOYED_FIELD){
- printf("Removing version %s from service %s\n", VERSION_FIELD, SERVICE_FIELD);
- system("gcloud app versions delete --quiet --service " SERVICE_FIELD " " VERSION_FIELD);
- }
- }'
- else
- echo "Service identified"
- echo "Versions will be deleted only from '$SERVICE_ARG' service"
- gcloud app versions list | tail -n +2 | awk -v DATE_LIMIT=$DATE_LIMIT -v SERVICE_ARG=$SERVICE_ARG '{
- SERVICE_FIELD=$1;
- VERSION_FIELD=$2;
- LAST_DEPLOYED_FIELD=$4;
- if(DATE_LIMIT > LAST_DEPLOYED_FIELD && SERVICE_ARG == SERVICE_FIELD){
- printf("Removing version %s from service %s\n", VERSION_FIELD, SERVICE_FIELD);
- system("gcloud app versions delete --quiet --service " SERVICE_FIELD " " VERSION_FIELD);
- }
- }'
- fi
- else
- echo "This is the test mode. It WILL NOT DELETE any version"
- if [[ $SERVICE_ARG == "" ]]; then
- gcloud app versions list | tail -n +2 | awk -v DATE_LIMIT=$DATE_LIMIT '{
- SERVICE_FIELD=$1;
- VERSION_FIELD=$2;
- LAST_DEPLOYED_FIELD=$4;
- if(DATE_LIMIT > LAST_DEPLOYED_FIELD){
- printf("Version %s from service %s would be removed\n", VERSION_FIELD, SERVICE_FIELD);
- }
- }'
- else
- echo "Service identified"
- gcloud app versions list | tail -n +2 | awk -v DATE_LIMIT=$DATE_LIMIT -v SERVICE_ARG=$SERVICE_ARG '{
- SERVICE_FIELD=$1;
- VERSION_FIELD=$2;
- LAST_DEPLOYED_FIELD=$4;
- if(DATE_LIMIT > LAST_DEPLOYED_FIELD && SERVICE_ARG == SERVICE_FIELD){
- printf("Version %s from service %s would be removed\n", VERSION_FIELD, SERVICE_FIELD);
- }
- }'
- fi
- fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement