diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 17d19a494..ece10009d 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -21,30 +21,32 @@ jobs: run: | rm -f README.md mv content/* . - mv etc/* . + mv etc/cover_small.jpg . + mv etc/cover_square.png . + mv etc/cover.jpg . + mv etc/custom.css . + mv etc/main.go . + mv etc/robots.txt . npm install -g gitbook-cli - mv ./book.json ./book.json.template gitbook install cd ~/.gitbook/versions/3.2.3 && npm i npm@5 cd ${{ github.workspace }} - mv ./book.json.template ./book.json + mv etc/book.json . gitbook install - go run fix-webbook.go -type=pre + go run main.go -mode=webbook -adjustment=pre gitbook build - go run fix-webbook.go -type=post + go run main.go -mode=webbook -adjustment=post cd _book echo '' > 404.html - rm -rf LICENSE - rm -rf book* - rm -rf .git - rm -rf .gitignore - rm -rf .github rm -rf *.md - rm -rf *.sh - rm -rf *.psd - rm -rf *.go - rm -rf *.css - rm -rf *.js + rm -rf .gitmodules + rm -rf main.go + rm -rf in-progress + rm -rf crowdin.yml + rm -rf LICENSE + rm -rf package-lock.json + rm -rf package.json + rm -rf etc - name: 'Deploying' uses: peaceiris/actions-gh-pages@v3 with: @@ -70,17 +72,22 @@ jobs: run: | rm -f README.md mv content/* . - mv etc/* . - rm -f book.json - go run fix-ebook.go -type=pre - mkdir _book + mv etc/cover_small.jpg . + mv etc/cover_square.png . + mv etc/cover.jpg . + mv etc/main.go . + go run main.go -mode=ebook -adjustment=pre gitbook install + mkdir _book/ - name: 'Generating ebook in pdf' run: gitbook pdf ./ ./_book/dasarpemrogramangolang.pdf + continue-on-error: true - name: 'Generating ebook in epub' run: gitbook epub ./ ./_book/dasarpemrogramangolang.epub + continue-on-error: true - name: 'Generating ebook in mobi' run: gitbook mobi ./ ./_book/dasarpemrogramangolang.mobi + continue-on-error: true - name: 'Deploying' uses: peaceiris/actions-gh-pages@v3 with: diff --git a/etc/fix-ebook.go b/etc/fix-ebook.go deleted file mode 100644 index ac9bd6c1b..000000000 --- a/etc/fix-ebook.go +++ /dev/null @@ -1,89 +0,0 @@ -package main - -import ( - "flag" - "fmt" - "log" - "os" - "path/filepath" - "strings" - "time" -) - -var ( - baseVersion = 3 - bookName = "Dasar Pemrograman Golang" - ga4tagId = "G-MZ74P74K72" - now = time.Now() -) - -func main() { - flagAdjustment := flag.String("type", "", "adjustment type (pre/post)") - flag.Parse() - - switch *flagAdjustment { - case "pre": - preAdjustment() - default: - break - } -} - -func preAdjustment() { - basePath, _ := os.Getwd() - readmePath := filepath.Join(basePath, "README.md") - - buf, err := os.ReadFile(readmePath) - if err != nil { - log.Fatal(err.Error()) - } - mdString := string(buf) - - // ==== adjust version - versionToFind := `((VERSION))` - mdString = strings.ReplaceAll(mdString, versionToFind, getVersion()) - - err = os.WriteFile(readmePath, []byte(mdString), 0644) - if err != nil { - log.Fatal(err.Error()) - } - - // ==== adjust content - err = filepath.Walk(basePath, func(path string, info os.FileInfo, err error) error { - if err != nil { - return err - } - if info.IsDir() { - return nil - } - if filepath.Ext(info.Name()) != ".md" { - return nil - } - - buf, err := os.ReadFile(path) - if err != nil { - return err - } - htmlString := string(buf) - - // ==== remove substack embed - substackEmbedToRemove := `` - htmlString = strings.ReplaceAll(htmlString, substackEmbedToRemove, "") - - // ==== update file - err = os.WriteFile(path, []byte(strings.TrimSpace(htmlString)), info.Mode()) - if err != nil { - return err - } - - fmt.Println(" ==>", path) - return nil - }) - if err != nil { - log.Fatal(err.Error()) - } -} - -func getVersion() string { - return fmt.Sprintf("%d.%s", baseVersion, now.Format("2006.01.02.150405")) -} diff --git a/etc/fix-webbook.go b/etc/main.go similarity index 73% rename from etc/fix-webbook.go rename to etc/main.go index 2a306602b..c688080a7 100644 --- a/etc/fix-webbook.go +++ b/etc/main.go @@ -19,20 +19,37 @@ var ( ) func main() { - flagAdjustment := flag.String("type", "", "adjustment type (pre/post)") + flagMode := flag.String("mode", "", "mode (webbook/ebook)") + flagAdjustment := flag.String("adjustment", "", "adjustment type (pre/post)") flag.Parse() - switch *flagAdjustment { - case "pre": - preAdjustment() - case "post": - postAdjustment() + switch *flagMode { + case "webbook": + switch *flagAdjustment { + case "pre": + webbookPreAdjustment() + case "post": + webbookPostAdjustment() + default: + log.Fatalf("unrecognized flag -adjustment") + } + case "ebook": + switch *flagAdjustment { + case "pre": + ebookPreAdjustment() + default: + log.Fatalf("unrecognized flag -adjustment") + } default: - break + log.Fatalf("unrecognized flag -mode") } } -func preAdjustment() { +func getVersion() string { + return fmt.Sprintf("%d.%s", baseVersion, now.Format("2006.01.02.150405")) +} + +func webbookPreAdjustment() { basePath, _ := os.Getwd() readmePath := filepath.Join(basePath, "README.md") @@ -52,7 +69,7 @@ func preAdjustment() { } } -func postAdjustment() { +func webbookPostAdjustment() { basePath, _ := os.Getwd() bookPath := filepath.Join(basePath, "_book") @@ -149,7 +166,12 @@ func postAdjustment() { // ==== inject github stars button buttonToFind := `` - buttonReplacement := `
Star Follow @novalagung
` + buttonToFind + buttonReplacement := `
+ Sponsor  + Star  + Follow @novalagung + +
` + buttonToFind htmlString = strings.ReplaceAll(htmlString, buttonToFind, buttonReplacement) // ==== inject adjustment css @@ -180,16 +202,6 @@ func postAdjustment() { // fbPixelReplacement := `` + fbPixelToFind // htmlString = strings.Replace(htmlString, fbPixelToFind, fbPixelReplacement) - // ===== inject banner of new ebook - // bannerToFind := `` - // bannerReplacement := `Halo semua, Saya telah merilis ebook baru lo, tentang devops. Di ebook tersebut fokus tentang pembahasan banyak sekali stacks/teknologi devops, jadi tidak hanya membahas satu stack saja. Dan kabar baiknya tersedia dalam dua bahasa, Indonesia dan Inggris. Yuk mampir https://devops.novalagung.com/` + bannerToFind - // htmlString = strings.Replace(htmlString, bannerToFind, bannerReplacement) - - // ===== inject popup info banner if exists - // infoBannerToFind := `` - // infoBannerReplacement := `` + infoBannerToFind - // htmlString = strings.Replace(htmlString, infoBannerToFind, infoBannerReplacement) - // ==== update file err = os.WriteFile(path, []byte(strings.TrimSpace(htmlString)), info.Mode()) if err != nil { @@ -211,9 +223,6 @@ func postAdjustment() { } sitemapContent := string(buf) - // ===== change crawl frequency - // sitemapContent = strings.Replace(sitemapContent, `weekly`, `daily`) - // ===== inject files into sitemap sitemapContent = strings.ReplaceAll(sitemapContent, ``, strings.TrimSpace(` @@ -241,6 +250,61 @@ func postAdjustment() { fmt.Println(" ==>", siteMapPath) } -func getVersion() string { - return fmt.Sprintf("%d.%s", baseVersion, now.Format("2006.01.02.150405")) +func ebookPreAdjustment() { + basePath, _ := os.Getwd() + readmePath := filepath.Join(basePath, "README.md") + + buf, err := os.ReadFile(readmePath) + if err != nil { + log.Fatal(err.Error()) + } + mdString := string(buf) + + // ==== adjust version + versionToFind := `((VERSION))` + mdString = strings.ReplaceAll(mdString, versionToFind, getVersion()) + + err = os.WriteFile(readmePath, []byte(mdString), 0644) + if err != nil { + log.Fatal(err.Error()) + } + + // ==== adjust content + err = filepath.Walk(basePath, func(path string, info os.FileInfo, err error) error { + if err != nil { + return err + } + if info.IsDir() { + return nil + } + if filepath.Ext(info.Name()) != ".md" { + return nil + } + + buf, err := os.ReadFile(path) + if err != nil { + return err + } + htmlString := string(buf) + + // ==== remove substack embed + substackEmbedToRemove := `` + htmlString = strings.ReplaceAll(htmlString, substackEmbedToRemove, "") + + // ==== remove ebooks embed + ebooksEmbedToRemove := `` + htmlString = strings.ReplaceAll(htmlString, ebooksEmbedToRemove, "") + + // ==== update file + err = os.WriteFile(path, []byte(strings.TrimSpace(htmlString)), info.Mode()) + if err != nil { + return err + } + + fmt.Println(" ==>", path) + return nil + }) + if err != nil { + log.Fatal(err.Error()) + } }