var renamedFiles []renFile
var yetToCopyFiles []renFile
-// Create directories and copy files, which don't need editing.
-func copyToLower(p0 string, d fs.DirEntry, err error) error {
- if err != nil { return err }
+var editFileExts = map[string]bool {
+ ".html": true,
+ ".htm": true,
+ ".asp": true,
+ ".css": true,
+ ".dwt": true,
+ }
- log.Println("Path: ", p0)
+func convertFileName(p0 string, newExt string) (string, error) {
rel0, err := filepath.Rel(rootPath, p0)
- if err != nil { return err }
+ if err != nil { return "", err }
rel1 := strings.ToLower(rel0)
//rel1 := rel0
-
p1 := filepath.Join(newRootPath, rel1)
- log.Println("New name ", p1)
- inf0, err := d.Info()
- if err != nil { return err }
-
if rel0 != rel1 {
renamedFiles = append(renamedFiles, renFile{oldName: p0, newName: p1})
}
- log.Println(inf0.Mode())
ext1 := filepath.Ext(p1)
- log.Println(ext1)
+ if newExt != "" && ext1 != newExt {
+ log.Printf("Replacing extension from %q to %q\n", ext1, newExt)
+ x := p1
+ p1 = strings.TrimSuffix(p1, ext1) + newExt
+ renamedFiles = append(renamedFiles, renFile{oldName: x, newName: p1})
+ }
+ log.Printf("Convert %q to %q\n", p0, p1)
+ return p1, nil
+}
+
+// Create directories and copy files, which don't need editing.
+func copyFiles(p0 string, d fs.DirEntry, err error) error {
+ if err != nil { return err }
+ log.Println("Path: ", p0)
+
+ var p1 string
+ if strings.ToLower(filepath.Ext(p0)) == ".asp" {
+ p1, err = convertFileName(p0, ".htm")
+ } else {
+ p1, err = convertFileName(p0, "")
+ }
+ if err != nil { return err }
+ //rel1 := rel0
+
+ ext1 := filepath.Ext(p1)
+ inf0, err := d.Info()
+ if err != nil { return err }
+
if d.IsDir() {
log.Printf("Creating dir %v\n", p1)
err = os.Mkdir(p1, inf0.Mode())
if err != nil && !errors.Is(err, fs.ErrExist) {
return err
}
- } else if ext1 != ".html" && ext1 != ".htm" && ext1 != ".asp" && ext1 != ".css" {
+ } else if !editFileExts[ext1] {
log.Printf("Copying file %v\n", p1)
h0, err := os.Open(p0)
if err != nil { return err }
//yetToCopyFiles = append(yetToCopyFiles, renFile{oldName: p0, newName: filepath.Join(newRootPath, rel0)})
}
return nil
+}
- /*
- err = os.Rename(p0, filepath.Join(newRootPath, relL))
- if err != nil { return err }*/
+func fixRenamedPathes(s0 string) string {
+ s1 := s0
+
+ //log.Printf("Started with %q\n", s0)
+ for _, v := range renamedFiles {
+ x := strings.SplitAfter(v.oldName, "/")
+ //log.Printf("Split old name: %q\n", x)
+ y := strings.SplitAfter(v.newName, "/")
+ //log.Printf("Split new name: %q\n", y)
+
+ if len(x) > 2 { x = x[len(x)-2:] }
+ //log.Printf("Work on old name: %q\n", x)
+ if len(y) > 2 { y = y[len(y)-2:] }
+ //log.Printf("Work on new name: %q\n", y)
+ for i, j := 0, 0; i < len(x) && j < len(y); i, j = i+1, j+1 {
+ s1 = strings.ReplaceAll(s1, x[i], y[j])
+ if s0 != s1 {
+ //log.Printf("Replaced at %q, %q, %q\n", x[i], y[j], s1)
+ }
+ }
+ }
+ return s1
}
-func rewritePathes(p0 string, _ fs.DirEntry, err error) error {
- return nil
+func main() {
+ /*
+ h0, err := os.Open("int.go")
+ if err != nil { panic("huynya") }
+ defer h0.Close()
+
+ h1, err := os.OpenFile("2.tmp", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
+ if err != nil { panic("huynya") }
+ defer h1.Close()
+
+ v := LineByLine{input: h0}
+ for {
+ l, err := v.ReadLine()
+ if err == io.EOF { break }
+ fmt.Printf("Received %q\n", l)
+ h1.Write(l)
+ }
+ */
+
+ var err error
+
+ /*
+ renamedFiles = []renFile{ {"ABC", "abc"}, {"ABC/DEF", "abc/def"}, {"ABC/DEF/HUY.TXT", "abc/def/huy.txt"}, {"ABC/DEF/GHI/NYA.TXT", "abc/def/ghi/nya.txt"}}
+ res := fixRenamedPathes("file=NYA.TXT")
+ fmt.Printf("Result: %q\n", res)
+
+ return*/
+ _, ok := editFileExts[".html"]
+ fmt.Println(ok)
+ err = filepath.WalkDir(rootPath, copyFiles)
+ if err != nil {
+ fmt.Println(err)
+ fmt.Println("huynya bro")
+ }
+ //fmt.Printf("%#v", yetToCopyFiles)
+ for _, fn := range yetToCopyFiles {
+ log.Printf("Rewriting %q\n", fn.newName)
+ h0, err := os.Open(fn.oldName)
+ if err != nil { log.Fatal(err) }
+ defer h0.Close()
+
+ h1, err := os.OpenFile(fn.newName, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
+ if err != nil { log.Fatal(err) }
+ defer h1.Close()
+
+ s := bufio.NewScanner(h0)
+ for s.Scan() {
+ //log.Printf("Scanner read %q\n", s.Text())
+ //l := strings.ReplaceAll(s.Text(), "main", "NYAAA") + "\n"
+ l := s.Text()
+ if l == "<%@ language=JavaScript %>" { continue }
+ l = fixRenamedPathes(l) + "\n"
+ //l = l + "\n"
+ h1.Write([]byte(l))
+ }
+ }
}
+
+
+
+
+
+
+
type LineByLine struct {
input io.Reader
buf []byte
}
}
-func main() {
- /*
- h0, err := os.Open("int.go")
- if err != nil { panic("huynya") }
- defer h0.Close()
-
- h1, err := os.OpenFile("2.tmp", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
- if err != nil { panic("huynya") }
- defer h1.Close()
-
- v := LineByLine{input: h0}
- for {
- l, err := v.ReadLine()
- if err == io.EOF { break }
- fmt.Printf("Received %q\n", l)
- h1.Write(l)
- }
- */
-
- var err error
-
- err = filepath.WalkDir(rootPath, copyToLower)
- if err != nil {
- fmt.Println(err)
- fmt.Println("huynya bro")
- }
- fmt.Printf("%#v", yetToCopyFiles)
- for _, fn := range yetToCopyFiles {
- h0, err := os.Open(fn.oldName)
- if err != nil { log.Fatal(err) }
- defer h0.Close()
-
- h1, err := os.OpenFile(fn.newName, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
- if err != nil { log.Fatal(err) }
- defer h1.Close()
-
- s := bufio.NewScanner(h0)
- for s.Scan() {
- //log.Printf("Scanner read %q\n", s.Text())
- //l := strings.ReplaceAll(s.Text(), "main", "NYAAA") + "\n"
- l := s.Text()
- if l == "<%@ language=JavaScript %>" { continue }
- l = l + "\n"
- h1.Write([]byte(l))
- }
- }
-}