Skip to content

Commit

Permalink
Fix rubocop offences manually
Browse files Browse the repository at this point in the history
  • Loading branch information
iangmaia committed Sep 20, 2023
1 parent f249117 commit 0d7d744
Show file tree
Hide file tree
Showing 5 changed files with 79 additions and 75 deletions.
6 changes: 6 additions & 0 deletions .rubocop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,24 @@ Layout/LineLength:
Max: 180
Exclude:
- fastlane/Fastfile
- scripts/themes/download_themes.rb
- scripts/themes/generate_themes.rb
- scripts/themes/generate_kotlin.rb

Metrics/BlockLength:
Exclude:
- fastlane/Fastfile
- scripts/themes/download_themes.rb
- scripts/themes/generate_themes.rb
- scripts/themes/generate_kotlin.rb

Metrics/MethodLength:
Max: 30
Exclude:
- fastlane/Fastfile
- scripts/themes/download_themes.rb
- scripts/themes/generate_themes.rb
- scripts/themes/generate_kotlin.rb

Naming/FileName:
Exclude:
Expand Down
4 changes: 2 additions & 2 deletions fastlane/Fastfile
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ platform :android do
desc 'Builds and uploads a new build to Google Play (without releasing it)'
lane :build_and_upload_to_play_store do |options|
version = android_get_release_version
is_beta = is_beta_version(version)
is_beta = beta_version?(version)
android_build_prechecks(skip_confirm: options[:skip_confirm], alpha: false, beta: is_beta, final: !is_beta) unless options[:skip_prechecks]
android_build_preflight unless options[:skip_prechecks]

Expand Down Expand Up @@ -308,7 +308,7 @@ platform :android do
key_file_secrets[name]
end

def is_beta_version(version)
def beta_version?(version)
version['name'].include? '-rc-'
end
end
122 changes: 60 additions & 62 deletions scripts/themes/generate_kotlin.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,23 @@
require 'csv'
require './download_themes'

filePathColors = '../../modules/services/ui/src/main/java/au/com/shiftyjelly/pocketcasts/ui/theme/ThemeColor.kt'
filePathStyles = '../../modules/services/ui/src/main/java/au/com/shiftyjelly/pocketcasts/ui/theme/ThemeStyle.kt'
FILE_PATH_COLORS = '../../modules/services/ui/src/main/java/au/com/shiftyjelly/pocketcasts/ui/theme/ThemeColor.kt'
FILE_PATH_STYLES = '../../modules/services/ui/src/main/java/au/com/shiftyjelly/pocketcasts/ui/theme/ThemeStyle.kt'

class String
def uncapitalize
self[0, 1].downcase + self[1..]
end
end

def writeThemeValue(hex_val, opacity, tokenName, filePath, themeName)
if tokenName.start_with?('filterU') || tokenName.start_with?('filterI') || tokenName.start_with?('filterT')
def write_theme_value(hex_val, opacity, token_name, file_path, theme_name)
if token_name.start_with?('filterU') || token_name.start_with?('filterI') || token_name.start_with?('filterT')
str = ''
# deal with special filter overlay colours
if ['filter', '$filter', '#filter'].include?(hex_val)
# the ones without any custom opacity are easy
if opacity == '100%' || opacity.nil? || opacity.empty?
str = " @ColorInt fun #{tokenName}#{themeName}(@ColorInt filterColor: Int): Int {
str = " @ColorInt fun #{token_name}#{theme_name}(@ColorInt filterColor: Int): Int {
return filterColor
}\n\n"
else
Expand All @@ -30,39 +30,39 @@ def writeThemeValue(hex_val, opacity, tokenName, filePath, themeName)
words = opacity.split

actual_opacity = words[1].gsub('%', '')
originalColor = if words[3] == 'white'
'Color.WHITE'
elsif words[3].start_with?('#')
"Color.parseColor(\"#{words[3]}\")"
else
'Color.BLACK'
end

overlayColor = "ColorUtils.colorWithAlpha(filterColor, #{(actual_opacity.to_f / 100.0 * 255.0).round})"

str = " @ColorInt fun #{tokenName}#{themeName}(@ColorInt filterColor: Int): Int {
return ColorUtils.calculateCombinedColor(#{originalColor}, #{overlayColor})
original_color = if words[3] == 'white'
'Color.WHITE'
elsif words[3].start_with?('#')
"Color.parseColor(\"#{words[3]}\")"
else
'Color.BLACK'
end

overlay_color = "ColorUtils.colorWithAlpha(filterColor, #{(actual_opacity.to_f / 100.0 * 255.0).round})"

str = " @ColorInt fun #{token_name}#{theme_name}(@ColorInt filterColor: Int): Int {
return ColorUtils.calculateCombinedColor(#{original_color}, #{overlay_color})
}\n\n"
end

else
str = "@ColorInt fun #{tokenName}#{themeName}(@ColorInt filterColor: Int): Int { return Color.parseColor(\"#{hex_val}\") }\n\n"
str = "@ColorInt fun #{token_name}#{theme_name}(@ColorInt filterColor: Int): Int { return Color.parseColor(\"#{hex_val}\") }\n\n"
end

File.write(filePath, str, mode: 'a')
File.write(file_path, str, mode: 'a')
return
elsif tokenName.start_with?('podcast') || tokenName.start_with?('playerBackground') || tokenName.start_with?('playerHighlight')
elsif token_name.start_with?('podcast') || token_name.start_with?('playerBackground') || token_name.start_with?('playerHighlight')
str = ''
# deal with special podcast overlay colours
if ['podcast', '$podcast', '#podcast'].include?(hex_val)
# the ones without any custom opacity are easy
if opacity == '100%' || opacity.nil? || opacity.empty?
str = " @ColorInt fun #{tokenName}#{themeName}(@ColorInt podcastColor: Int): Int {
str = " @ColorInt fun #{token_name}#{theme_name}(@ColorInt podcastColor: Int): Int {
return podcastColor
}\n\n"
elsif opacity.split.size == 1
opacity = opacity.gsub('%', '')
str = " @ColorInt fun #{tokenName}#{themeName}(@ColorInt podcastColor: Int): Int {
str = " @ColorInt fun #{token_name}#{theme_name}(@ColorInt podcastColor: Int): Int {
return ColorUtils.colorWithAlpha(podcastColor, #{(opacity.to_f / 100.0 * 255.0).round})
}\n\n"
else
Expand All @@ -71,48 +71,48 @@ def writeThemeValue(hex_val, opacity, tokenName, filePath, themeName)
words = opacity.split

actual_opacity = words[1].gsub('%', '')
originalColor = "Color.parseColor(\"#{words[3]}\")"
overlayColor = "ColorUtils.colorWithAlpha(podcastColor, #{(actual_opacity.to_f / 100.0 * 255.0).round})"
original_color = "Color.parseColor(\"#{words[3]}\")"
overlay_color = "ColorUtils.colorWithAlpha(podcastColor, #{(actual_opacity.to_f / 100.0 * 255.0).round})"

str = " @ColorInt fun #{tokenName}#{themeName}(@ColorInt podcastColor: Int): Int {
return ColorUtils.calculateCombinedColor(#{originalColor}, #{overlayColor})
str = " @ColorInt fun #{token_name}#{theme_name}(@ColorInt podcastColor: Int): Int {
return ColorUtils.calculateCombinedColor(#{original_color}, #{overlay_color})
}\n\n"
end
elsif opacity == '100%' || opacity.nil? || opacity.empty?
str = " @ColorInt fun #{tokenName}#{themeName}(@ColorInt podcastColor: Int): Int { return Color.parseColor(\"#{hex_val}\") }\n\n"
str = " @ColorInt fun #{token_name}#{theme_name}(@ColorInt podcastColor: Int): Int { return Color.parseColor(\"#{hex_val}\") }\n\n"
elsif opacity.split.size == 1
opacity = opacity.gsub('%', '')
originalColor = "Color.parseColor(\"#{hex_val}\")"
str = " @ColorInt fun #{tokenName}#{themeName}(@ColorInt podcastColor: Int): Int {
return ColorUtils.colorWithAlpha(#{originalColor}, #{(opacity.to_f / 100.0 * 255.0).round})
original_color = "Color.parseColor(\"#{hex_val}\")"
str = " @ColorInt fun #{token_name}#{theme_name}(@ColorInt podcastColor: Int): Int {
return ColorUtils.colorWithAlpha(#{original_color}, #{(opacity.to_f / 100.0 * 255.0).round})
}\n\n"
end

File.write(filePath, str, mode: 'a')
File.write(file_path, str, mode: 'a')
return
end

unless hex_val.start_with?('#')
puts "Invalid hex value found #{hex_val}, found in #{tokenName} ignoring"
puts "Invalid hex value found #{hex_val}, found in #{token_name} ignoring"
return
end

variable_str = " val #{tokenName}#{themeName} = Color.parseColor(\"#{hex_val}\")"
variable_str = " val #{token_name}#{theme_name} = Color.parseColor(\"#{hex_val}\")"
if opacity == '100%' || opacity.nil? || opacity.empty?
File.write(filePath, "#{variable_str}\n", mode: 'a')
File.write(file_path, "#{variable_str}\n", mode: 'a')
else
opacity = opacity.gsub('%', '')
File.write(filePath, "#{variable_str}.colorIntWithAlpha(#{(opacity.to_f / 100.0 * 255.0).round})\n", mode: 'a')
File.write(file_path, "#{variable_str}.colorIntWithAlpha(#{(opacity.to_f / 100.0 * 255.0).round})\n", mode: 'a')
end
end

tokens = download_themes
exit if tokens.nil?

File.truncate(filePathColors, 0) if File.exist?(filePathColors)
File.truncate(filePathStyles, 0) if File.exist?(filePathStyles)
File.truncate(FILE_PATH_COLORS, 0) if File.exist?(FILE_PATH_COLORS)
File.truncate(FILE_PATH_STYLES, 0) if File.exist?(FILE_PATH_STYLES)

File.write(filePathColors, "// ************ WARNING AUTO GENERATED, DO NOT EDIT ************
File.write(FILE_PATH_COLORS, "// ************ WARNING AUTO GENERATED, DO NOT EDIT ************
@file:Suppress(\"unused\", \"MemberVisibilityCanBePrivate\", \"UNUSED_PARAMETER\")
package au.com.shiftyjelly.pocketcasts.ui.theme
Expand All @@ -123,11 +123,10 @@ def writeThemeValue(hex_val, opacity, tokenName, filePath, themeName)
import au.com.shiftyjelly.pocketcasts.ui.helper.colorIntWithAlpha
object ThemeColor {\n", mode: 'a')
File.write(filePathStyles, "package au.com.shiftyjelly.pocketcasts.ui.theme
File.write(FILE_PATH_STYLES, "package au.com.shiftyjelly.pocketcasts.ui.theme
// ************ WARNING AUTO GENERATED, DO NOT EDIT ************\nenum class ThemeStyle {\n", mode: 'a')

index = 0
all_token_names = []

tokens.each do |token_attrs|
Expand All @@ -147,8 +146,9 @@ def writeThemeValue(hex_val, opacity, tokenName, filePath, themeName)
classic_light_hex_value = themes[:classic_light][:hex]
classic_light_opacity = themes[:classic_light][:opacity]

classic_dark_hex_value = themes[:classic_dark][:hex]
classic_dark_opacity = themes[:classic_dark][:opacity]
# unused
# classic_dark_hex_value = themes[:classic_dark][:hex]
# classic_dark_opacity = themes[:classic_dark][:opacity]

electric_hex_value = themes[:electricity][:hex]
electric_opacity = themes[:electricity][:opacity]
Expand All @@ -173,23 +173,21 @@ def writeThemeValue(hex_val, opacity, tokenName, filePath, themeName)
token_name = token_name.gsub('$', '').split('-').collect(&:capitalize).join.uncapitalize
all_token_names << token_name

File.write(filePathStyles, " #{token_name},\n", mode: 'a')

writeThemeValue(light_hex_value, light_opacity, token_name, filePathColors, 'Light')
writeThemeValue(dark_hex_value, dark_opacity, token_name, filePathColors, 'Dark')
writeThemeValue(extra_dark_hex_value, extra_dark_opacity, token_name, filePathColors, 'ExtraDark')
writeThemeValue(classic_light_hex_value, classic_light_opacity, token_name, filePathColors, 'ClassicLight')
writeThemeValue(electric_hex_value, electric_opacity, token_name, filePathColors, 'Electric')
writeThemeValue(indigo_hex_value, indigo_opacity, token_name, filePathColors, 'Indigo')
writeThemeValue(radioactive_hex_value, radioactive_opacity, token_name, filePathColors, 'Radioactive')
writeThemeValue(rose_hex_value, rose_opacity, token_name, filePathColors, 'Rose')
writeThemeValue(light_contrast_hex_value, light_contrast_opacity, token_name, filePathColors, 'LightContrast')
writeThemeValue(dark_contrast_hex_value, dark_contrast_opacity, token_name, filePathColors, 'DarkContrast')

index += 1
File.write(FILE_PATH_STYLES, " #{token_name},\n", mode: 'a')

write_theme_value(light_hex_value, light_opacity, token_name, FILE_PATH_COLORS, 'Light')
write_theme_value(dark_hex_value, dark_opacity, token_name, FILE_PATH_COLORS, 'Dark')
write_theme_value(extra_dark_hex_value, extra_dark_opacity, token_name, FILE_PATH_COLORS, 'ExtraDark')
write_theme_value(classic_light_hex_value, classic_light_opacity, token_name, FILE_PATH_COLORS, 'ClassicLight')
write_theme_value(electric_hex_value, electric_opacity, token_name, FILE_PATH_COLORS, 'Electric')
write_theme_value(indigo_hex_value, indigo_opacity, token_name, FILE_PATH_COLORS, 'Indigo')
write_theme_value(radioactive_hex_value, radioactive_opacity, token_name, FILE_PATH_COLORS, 'Radioactive')
write_theme_value(rose_hex_value, rose_opacity, token_name, FILE_PATH_COLORS, 'Rose')
write_theme_value(light_contrast_hex_value, light_contrast_opacity, token_name, FILE_PATH_COLORS, 'LightContrast')
write_theme_value(dark_contrast_hex_value, dark_contrast_opacity, token_name, FILE_PATH_COLORS, 'DarkContrast')
end

File.write(filePathColors, "\n", mode: 'a')
File.write(FILE_PATH_COLORS, "\n", mode: 'a')
all_token_names.each_with_index do |token, index|
token_str = if token.start_with?('podcast') || token.start_with?('playerBackground') || token.start_with?('playerHighlight')
" @ColorInt fun #{token}(activeTheme: Theme.ThemeType, @ColorInt podcastColor: Int): Int {
Expand Down Expand Up @@ -267,12 +265,12 @@ def writeThemeValue(hex_val, opacity, tokenName, filePath, themeName)
}
}\n"
end
File.write(filePathColors, token_str, mode: 'a')
File.write(FILE_PATH_COLORS, token_str, mode: 'a')

File.write(filePathColors, "\n", mode: 'a') if index != all_token_names.length - 1
File.write(FILE_PATH_COLORS, "\n", mode: 'a') if index != all_token_names.length - 1
end

File.write(filePathColors, "}\n", mode: 'a')
File.write(FILE_PATH_COLORS, "}\n", mode: 'a')

File.truncate(filePathStyles, File.size(filePathStyles) - 2) # remove the trailing comma
File.write(filePathStyles, "\n}\n", mode: 'a')
File.truncate(FILE_PATH_STYLES, File.size(FILE_PATH_STYLES) - 2) # remove the trailing comma
File.write(FILE_PATH_STYLES, "\n}\n", mode: 'a')
18 changes: 9 additions & 9 deletions scripts/themes/generate_kotlin_compose.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
require 'csv'
require './download_themes'

filePath = '../../modules/services/compose/src/main/java/au/com/shiftyjelly/pocketcasts/compose/Colors.kt'
COLORS_FILE_PATH = '../../modules/services/compose/src/main/java/au/com/shiftyjelly/pocketcasts/compose/Colors.kt'

class String
def uncapitalize
Expand All @@ -20,7 +20,7 @@ def int_to_hex(value)
tokens = download_themes
exit if tokens.nil?

themeToCodeLines = {}
theme_to_code_lines = {}

tokens.each do |token_attrs|
key = token_attrs[:key]
Expand All @@ -42,29 +42,29 @@ def int_to_hex(value)
token_attrs[:themes].each do |name, attrs|
next if name.to_s == 'classic_dark'

cleanThemeName = name.to_s.split('_').collect(&:capitalize).join
lines = themeToCodeLines[cleanThemeName] || []
clean_theme_name = name.to_s.split('_').collect(&:capitalize).join
lines = theme_to_code_lines[clean_theme_name] || []
hex = attrs[:hex].gsub('#', '')
next if hex.include?('$')

opacity = attrs[:opacity]
next if opacity.to_i.zero?

lines << "#{kotlin_name} = Color(0x#{int_to_hex(opacity)}#{hex})"
themeToCodeLines[cleanThemeName] = lines
theme_to_code_lines[clean_theme_name] = lines
end
end

File.truncate(filePath, 0) if File.exist?(filePath)
File.truncate(COLORS_FILE_PATH, 0) if File.exist?(COLORS_FILE_PATH)

File.write(filePath, "// ************ WARNING AUTO GENERATED, DO NOT EDIT ************
File.write(COLORS_FILE_PATH, "// ************ WARNING AUTO GENERATED, DO NOT EDIT ************
package au.com.shiftyjelly.pocketcasts.compose
import androidx.compose.ui.graphics.Color
", mode: 'a')

themeToCodeLines.each do |theme, lines|
File.write(filePath, "
theme_to_code_lines.each do |theme, lines|
File.write(COLORS_FILE_PATH, "
val Theme#{theme}Colors = ThemeColors(
#{lines.join(",\n ")}
)
Expand Down
4 changes: 2 additions & 2 deletions scripts/themes/generate_xml.rb
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ def write_theme_colors(tokens, theme_name, file_marker)
opacity = theme[:opacity]
alpha = (opacity[0...-1].to_f / 100.0 * 255.0).to_i.to_s(16)
alpha = "0#{alpha}" if alpha.size == 1
colorWithAlpha = opacity == '100%' ? color : "##{alpha}#{color[1..]}"
output += %( <item name="#{key}">#{colorWithAlpha}</item>\n)
color_with_alpha = opacity == '100%' ? color : "##{alpha}#{color[1..]}"
output += %( <item name="#{key}">#{color_with_alpha}</item>\n)
end
write_to_theme_file(output, file_marker)
end
Expand Down

0 comments on commit 0d7d744

Please sign in to comment.