Clean some legacy files and move some build files (#23699)
* Clean the "tools" directory. The "tools" directory contains only two
files, move them.
* The "external_renderer.go" works like "cat" command to echo Stdin to
Stdout , to help testing.
* The `// gobuild: external_renderer` is incorrect, there should be no
space: `//gobuild: external_renderer`
* The `fmt.Print(os.Args[1])` is not a well-defined behavior, and it's
never used.
* The "watch.sh" is for "make watch", it's somewhat related to "build"
* After this PR, there is no "tools" directory, the project root
directory looks slightly simpler than before.
* Remove the legacy "contrib/autoboot.sh", there is no
"gogs_supervisord.sh"
* Remove the legacy "contrib/mysql.sql", it's never mentioned anywhere.
* Remove the legacy "contrib/pr/checkout.go", it has been broken for
long time, and it introduces unnecessary dependencies of the main code
base.
2023-03-25 23:22:51 +03:00
// Copyright 2023 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
2023-03-23 20:27:03 +03:00
//go:build ignore
package main
import (
"fmt"
"os"
"os/exec"
"path/filepath"
"strings"
"gopkg.in/ini.v1"
)
func main ( ) {
if len ( os . Args ) != 2 {
println ( "usage: backport-locales <to-ref>" )
println ( "eg: backport-locales release/v1.19" )
os . Exit ( 1 )
}
ini . PrettyFormat = false
mustNoErr := func ( err error ) {
if err != nil {
panic ( err )
}
}
collectInis := func ( ref string ) map [ string ] * ini . File {
inis := map [ string ] * ini . File { }
err := filepath . WalkDir ( "options/locale" , func ( path string , d os . DirEntry , err error ) error {
if err != nil {
return err
}
if d . IsDir ( ) || ! strings . HasSuffix ( d . Name ( ) , ".ini" ) {
return nil
}
cfg , err := ini . LoadSources ( ini . LoadOptions {
IgnoreInlineComment : true ,
UnescapeValueCommentSymbols : true ,
} , path )
mustNoErr ( err )
inis [ path ] = cfg
fmt . Printf ( "collecting: %s @ %s\n" , path , ref )
return nil
} )
mustNoErr ( err )
return inis
}
// collect new locales from current working directory
inisNew := collectInis ( "HEAD" )
// switch to the target ref, and collect the old locales
cmd := exec . Command ( "git" , "checkout" , os . Args [ 1 ] )
cmd . Stdout = os . Stdout
cmd . Stderr = os . Stderr
mustNoErr ( cmd . Run ( ) )
inisOld := collectInis ( os . Args [ 1 ] )
// use old en-US as the base, and copy the new translations to the old locales
enUsOld := inisOld [ "options/locale/locale_en-US.ini" ]
for path , iniOld := range inisOld {
if iniOld == enUsOld {
continue
}
iniNew := inisNew [ path ]
if iniNew == nil {
continue
}
for _ , secEnUS := range enUsOld . Sections ( ) {
secOld := iniOld . Section ( secEnUS . Name ( ) )
secNew := iniNew . Section ( secEnUS . Name ( ) )
for _ , keyEnUs := range secEnUS . Keys ( ) {
if secNew . HasKey ( keyEnUs . Name ( ) ) {
oldStr := secOld . Key ( keyEnUs . Name ( ) ) . String ( )
newStr := secNew . Key ( keyEnUs . Name ( ) ) . String ( )
2023-03-30 09:58:33 +03:00
if oldStr != "" && strings . Count ( oldStr , "%" ) != strings . Count ( newStr , "%" ) {
fmt . Printf ( "WARNING: locale %s [%s]%s has different number of arguments, skipping\n" , path , secEnUS . Name ( ) , keyEnUs . Name ( ) )
fmt . Printf ( "\told: %s\n" , oldStr )
fmt . Printf ( "\tnew: %s\n" , newStr )
fmt . Println ( "---- " )
2023-03-23 20:27:03 +03:00
continue
}
secOld . Key ( keyEnUs . Name ( ) ) . SetValue ( newStr )
}
}
}
mustNoErr ( iniOld . SaveTo ( path ) )
}
}