lib/gdk/command/pristine.rb (88 lines of code) (raw):
# frozen_string_literal: true
require 'fileutils'
module GDK
module Command
# Handles `gdk pristine` command execution
class Pristine < BaseCommand
BUNDLE_PRISTINE_CMD = 'bundle pristine'
YARN_CLEAN_CMD = 'yarn clean'
GIT_CLEAN_TMP_CMD = 'git clean -fX -- tmp/'
RESET_CONFIGS_CMD = 'make reconfigure'
def run(_args = [])
%i[
gdk_stop
gdk_tmp_clean
gdk_bundle
reset_configs
gitlab_bundle
gitlab_tmp_clean
gitlab_yarn_clean
].each do |task_name|
run_task(task_name)
end
GDK::Output.success("Successfully ran 'gdk pristine'!")
true
rescue StandardError => e
GDK::Output.error("Failed to run 'gdk pristine' - #{e.message}.", e)
display_help_message
false
end
def bundle_install_cmd
"bundle install --jobs #{GDK.config.restrict_cpu_count} --quiet"
end
private
def run_task(method_name)
send(method_name) || # rubocop:disable GitlabSecurity/PublicSend
raise("Had an issue with '#{method_name}'")
end
def notice(msg)
GDK::Output.notice(msg)
end
def gdk_stop
notice('Stopping GDK..')
Runit.stop(quiet: true)
end
def gdk_tmp_clean
notice('Cleaning GDK tmp/ ..')
shellout(GIT_CLEAN_TMP_CMD)
end
def gdk_bundle
notice('Ensuring GDK Ruby gems are installed and pristine..')
gdk_bundle_install && gdk_bundle_pristine
end
def reset_configs
shellout(RESET_CONFIGS_CMD)
end
def gdk_bundle_install
shellout(bundle_install_cmd)
end
def gdk_bundle_pristine
shellout(BUNDLE_PRISTINE_CMD)
end
def gitlab_bundle
notice('Ensuring gitlab/ Ruby gems are installed and pristine..')
gitlab_bundle_install && gitlab_bundle_pristine
end
def gitlab_bundle_install
shellout(bundle_install_cmd, chdir: config.gitlab.dir)
end
def gitlab_bundle_pristine
shellout(BUNDLE_PRISTINE_CMD, chdir: config.gitlab.dir)
end
def gitlab_yarn_clean
notice('Cleaning gitlab/ Yarn cache..')
shellout(YARN_CLEAN_CMD, chdir: config.gitlab.dir)
end
def gitlab_tmp_clean
notice('Cleaning gitlab/tmp/ ..')
shellout(GIT_CLEAN_TMP_CMD, chdir: config.gitlab.dir)
end
def shellout(cmd, **opts)
sh = Shellout.new(cmd, **opts)
sh.stream
sh.success?
rescue StandardError => e
GDK::Output.puts(e.message, stderr: true)
false
end
end
end
end