forked from iv-org/invidious
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request iv-org#2152 from syeopite/hooks-and-scripts
Add scripts to ease development
- Loading branch information
Showing
10 changed files
with
126 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -416,4 +416,4 @@ | |
"hdr": "", | ||
"filter": "", | ||
"Current version: ": "Τρέχουσα έκδοση: " | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -338,4 +338,4 @@ | |
"Playlists": "", | ||
"Community": "", | ||
"Current version: ": "" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -416,4 +416,4 @@ | |
"hdr": "", | ||
"filter": "", | ||
"Current version: ": "نسخه فعلی: " | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -416,4 +416,4 @@ | |
"hdr": "", | ||
"filter": "", | ||
"Current version: ": "Tämänhetkinen versio: " | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -416,4 +416,4 @@ | |
"hdr": "", | ||
"filter": "", | ||
"Current version: ": "Núverandi útgáfa: " | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -416,4 +416,4 @@ | |
"hdr": "", | ||
"filter": "", | ||
"Current version: ": "Versão atual: " | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -416,4 +416,4 @@ | |
"hdr": "", | ||
"filter": "", | ||
"Current version: ": "" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
# Useful precomit hooks | ||
# Please see https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks for instructions on installation. | ||
|
||
# Crystal linter | ||
# This is a modified version of the pre-commit hook from the crystal repo. https://github.com/crystal-lang/crystal/blob/master/scripts/git/pre-commit | ||
# Please refer to that if you'd like an version that doesn't automatically format staged files. | ||
changed_cr_files=$(git diff --cached --name-only --diff-filter=ACM | grep '\.cr$') | ||
if [ ! -z "$changed_cr_files" ]; then | ||
if [ -x bin/crystal ]; then | ||
# use bin/crystal wrapper when available to run local compiler build | ||
bin/crystal tool format $changed_cr_files >&2 | ||
else | ||
crystal tool format $changed_cr_files >&2 | ||
fi | ||
|
||
git add $changed_cr_files | ||
fi | ||
|
||
# Locale equalizer | ||
if [ ! -z $(git diff --name-only --cached -- locales/) ]; then | ||
crystal run scripts/propagate-new-locale-keys.cr | ||
git add locales > /dev/null | ||
fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
require "json" | ||
require "../src/invidious/helpers/i18n.cr" | ||
|
||
def locale_to_array(locale_name) | ||
arrayifed_locale_data = [] of Tuple(String, JSON::Any | String) | ||
keys_only_array = [] of String | ||
LOCALES[locale_name].each do |k, v| | ||
if v.as_h? | ||
arrayifed_locale_data << {k, JSON.parse(v.as_h.to_json)} | ||
elsif v.as_s? | ||
arrayifed_locale_data << {k, v.as_s} | ||
end | ||
|
||
keys_only_array << k | ||
end | ||
|
||
return arrayifed_locale_data, keys_only_array | ||
end | ||
|
||
# Invidious currently has some unloaded localization files. We shouldn't need to propagate new keys onto those. | ||
# We'll also remove the reference locale (english) from the list to process. | ||
loaded_locales = LOCALES.keys.select! { |key| key != "en-US" } | ||
english_locale, english_locale_keys = locale_to_array("en-US") | ||
|
||
# In order to automatically propagate locale keys we're going to be needing two arrays. | ||
# One is an array containing each locale data encoded as tuples. The other would contain | ||
# sets of only the keys of each locale files. | ||
# | ||
# The second array is to make sure that an key from the english reference file is present | ||
# in whatever the current locale we're scanning is. | ||
locale_list = [] of Array(Tuple(String, JSON::Any | String)) | ||
locale_list_with_only_keys = [] of Array(String) | ||
|
||
# Populates the created arrays from above | ||
loaded_locales.each do |name| | ||
arrayifed_locale_data, keys_only_locale = locale_to_array(name) | ||
|
||
locale_list << arrayifed_locale_data | ||
locale_list_with_only_keys << keys_only_locale | ||
end | ||
|
||
# Propagate additions | ||
locale_list_with_only_keys.dup.each_with_index do |keys_of_locale_in_processing, index_of_locale_in_processing| | ||
insert_at = {} of Int32 => Tuple(String, JSON::Any | String) | ||
|
||
LOCALES["en-US"].each_with_index do |ref_locale_data, ref_locale_key_index| | ||
ref_locale_key, ref_locale_value = ref_locale_data | ||
|
||
# Found an new key that isn't present in the current locale.. | ||
if !keys_of_locale_in_processing.includes? ref_locale_key | ||
# In terms of structure there's currently only two types; one for plural and the other for singular translations. | ||
if ref_locale_value.as_h? | ||
insert_at[ref_locale_key_index] = {ref_locale_key, JSON.parse({"([^.,0-9]|^)1([^.,0-9]|$)" => "", "" => ""}.to_json)} | ||
else | ||
insert_at[ref_locale_key_index] = {ref_locale_key, ""} | ||
end | ||
end | ||
end | ||
|
||
insert_at.each do |location_to_insert, data| | ||
locale_list_with_only_keys[index_of_locale_in_processing].insert(location_to_insert, data[0]) | ||
locale_list[index_of_locale_in_processing].insert(location_to_insert, data) | ||
end | ||
end | ||
|
||
# Propagate removals | ||
locale_list_with_only_keys.dup.each_with_index do |keys_of_locale_in_processing, index_of_locale_in_processing| | ||
remove_at = [] of Int32 | ||
|
||
keys_of_locale_in_processing.each_with_index do |current_key, current_key_index| | ||
if !english_locale_keys.includes? current_key | ||
remove_at << current_key_index | ||
end | ||
end | ||
|
||
remove_at.each do |index_to_remove_at| | ||
locale_list_with_only_keys[index_of_locale_in_processing].delete_at(index_to_remove_at) | ||
locale_list[index_of_locale_in_processing].delete_at(index_to_remove_at) | ||
end | ||
end | ||
|
||
# Now we convert back to our original format. | ||
final_locale_list = [] of String | ||
locale_list.each do |locale| | ||
intermediate_hash = {} of String => (JSON::Any | String) | ||
locale.each { |k, v| intermediate_hash[k] = v } | ||
final_locale_list << intermediate_hash.to_pretty_json(indent = " ") | ||
end | ||
|
||
locale_map = Hash.zip(loaded_locales, final_locale_list) | ||
|
||
# Export | ||
locale_map.each do |locale_name, locale_contents| | ||
File.write("locales/#{locale_name}.json", "#{locale_contents}\n") | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters