refactor: Update Build Scripts And Workflows (#1848)
* refactor: Update Build Scripts And Workflows * chore: Update Prettier Workflow * chore: Update Publish Plugins Workflow * chore: Update Prettier Workflow * chore: Update Workflows * chore: Update Workflows * chore: Update Prettier Workflow * chore: Update Prettier Workflow
This commit is contained in:
committed by
GitHub
parent
8108df39a1
commit
851330a52e
@@ -1,262 +1,263 @@
|
|||||||
# DO NOT EDIT
|
# DO NOT EDIT THIS FILE DIRECTLY
|
||||||
# THIS FILE IS AUTO GENERATED FROM blank_report_issue.yml in the .github/scripts folder.
|
# This file is auto-generated from blank_report_issue.yml in .github/scripts/
|
||||||
|
# Any changes made here will be overwritten when plugins are published.
|
||||||
|
|
||||||
name: Issue report
|
name: Report Issue
|
||||||
description: Report a source issue in LNReader
|
description: Report a plugin issue in LNReader
|
||||||
labels: [Bug]
|
labels: [Bug]
|
||||||
body:
|
body:
|
||||||
- type: dropdown
|
- type: dropdown
|
||||||
id: source
|
id: source
|
||||||
attributes:
|
attributes:
|
||||||
label: Plugin
|
label: Plugin
|
||||||
description: Select the plugin associated with the issue.
|
description: Select the affected plugin(s).
|
||||||
multiple: true
|
multiple: true
|
||||||
options:
|
options:
|
||||||
- "العربية: ArNovel"
|
- 'العربية: ArNovel'
|
||||||
- "العربية: Azora"
|
- 'العربية: Azora'
|
||||||
- "العربية: dilar tube"
|
- 'العربية: dilar tube'
|
||||||
- "العربية: HizoManga"
|
- 'العربية: HizoManga'
|
||||||
- "العربية: Kol Novel"
|
- 'العربية: Kol Novel'
|
||||||
- "العربية: Novel4Up"
|
- 'العربية: Novel4Up'
|
||||||
- "العربية: Novels Paradise"
|
- 'العربية: Novels Paradise'
|
||||||
- "العربية: Olaoe.cyou"
|
- 'العربية: Olaoe.cyou'
|
||||||
- "العربية: Rewayat Club"
|
- 'العربية: Rewayat Club'
|
||||||
- "العربية: Riwyat"
|
- 'العربية: Riwyat'
|
||||||
- "العربية: Sunovels"
|
- 'العربية: Sunovels'
|
||||||
- "中文, 汉语, 漢語: 69书吧"
|
- '中文, 汉语, 漢語: 69书吧'
|
||||||
- "中文, 汉语, 漢語: 爱下电子书"
|
- '中文, 汉语, 漢語: 爱下电子书'
|
||||||
- "中文, 汉语, 漢語: linovel"
|
- '中文, 汉语, 漢語: linovel'
|
||||||
- "中文, 汉语, 漢語: Linovelib"
|
- '中文, 汉语, 漢語: Linovelib'
|
||||||
- "中文, 汉语, 漢語: Linovelib(繁體)"
|
- '中文, 汉语, 漢語: Linovelib(繁體)'
|
||||||
- "中文, 汉语, 漢語: Novel543"
|
- '中文, 汉语, 漢語: Novel543'
|
||||||
- "中文, 汉语, 漢語: Quanben"
|
- '中文, 汉语, 漢語: Quanben'
|
||||||
- "English: FirstKissNovel"
|
- 'English: FirstKissNovel'
|
||||||
- "English: AllNovel"
|
- 'English: AllNovel'
|
||||||
- "English: AllNovelFull"
|
- 'English: AllNovelFull'
|
||||||
- "English: Arcane Translations"
|
- 'English: Arcane Translations'
|
||||||
- "English: Archive Of Our Own"
|
- 'English: Archive Of Our Own'
|
||||||
- "English: Srank Manga"
|
- 'English: Srank Manga'
|
||||||
- "English: Belle Reservoir"
|
- 'English: Belle Reservoir'
|
||||||
- "English: BestLightNovel"
|
- 'English: BestLightNovel'
|
||||||
- "English: BoxNovel"
|
- 'English: BoxNovel'
|
||||||
- "English: Chrysanthemum Garden"
|
- 'English: Chrysanthemum Garden'
|
||||||
- "English: Citrus Aurora"
|
- 'English: Citrus Aurora'
|
||||||
- "English: Coral Boutique"
|
- 'English: Coral Boutique'
|
||||||
- "English: CPUnovel"
|
- 'English: CPUnovel'
|
||||||
- "English: Daoist Quest"
|
- 'English: Daoist Quest'
|
||||||
- "English: DaoNovel"
|
- 'English: DaoNovel'
|
||||||
- "English: DaoTranslate"
|
- 'English: DaoTranslate'
|
||||||
- "English: Divine Dao Library"
|
- 'English: Divine Dao Library'
|
||||||
- "English: Dearest Rosalie"
|
- 'English: Dearest Rosalie'
|
||||||
- "English: Dragonholic"
|
- 'English: Dragonholic'
|
||||||
- "English: Dragon Tea"
|
- 'English: Dragon Tea'
|
||||||
- "English: Dream Big Translations"
|
- 'English: Dream Big Translations'
|
||||||
- "English: Dusk Blossoms"
|
- 'English: Dusk Blossoms'
|
||||||
- "English: Early Novel"
|
- 'English: Early Novel'
|
||||||
- "English: ElloTL"
|
- 'English: ElloTL'
|
||||||
- "English: Eternalune"
|
- 'English: Eternalune'
|
||||||
- "English: Etude Translations"
|
- 'English: Etude Translations'
|
||||||
- "English: FanNovel"
|
- 'English: FanNovel'
|
||||||
- "English: Fans Translations"
|
- 'English: Fans Translations'
|
||||||
- "English: Fenrir Realm"
|
- 'English: Fenrir Realm'
|
||||||
- "English: Fiction Zone"
|
- 'English: Fiction Zone'
|
||||||
- "English: Foxaholic"
|
- 'English: Foxaholic'
|
||||||
- "English: Foxteller"
|
- 'English: Foxteller'
|
||||||
- "English: Faq Wiki"
|
- 'English: Faq Wiki'
|
||||||
- "English: Free Web Novel"
|
- 'English: Free Web Novel'
|
||||||
- "English: Galaxy Translations"
|
- 'English: Galaxy Translations'
|
||||||
- "English: Genesis"
|
- 'English: Genesis'
|
||||||
- "English: Guavaread"
|
- 'English: Guavaread'
|
||||||
- "English: Hiraeth Translation"
|
- 'English: Hiraeth Translation'
|
||||||
- "English: HotNovelPub"
|
- 'English: HotNovelPub'
|
||||||
- "English: Inkitt"
|
- 'English: Inkitt'
|
||||||
- "English: Ippotranslations"
|
- 'English: Ippotranslations'
|
||||||
- "English: KDT Novels"
|
- 'English: KDT Novels'
|
||||||
- "English: Keopi Translations"
|
- 'English: Keopi Translations'
|
||||||
- "English: KnoxT"
|
- 'English: KnoxT'
|
||||||
- "English: Lazy Girl Translations"
|
- 'English: Lazy Girl Translations'
|
||||||
- "English: Lib Read"
|
- 'English: Lib Read'
|
||||||
- "English: LightNovelCave"
|
- 'English: LightNovelCave'
|
||||||
- "English: LightNovelPlus"
|
- 'English: LightNovelPlus'
|
||||||
- "English: LightNovelPub"
|
- 'English: LightNovelPub'
|
||||||
- "English: LightNovelPub Vip"
|
- 'English: LightNovelPub Vip'
|
||||||
- "English: Light Novel Translations"
|
- 'English: Light Novel Translations'
|
||||||
- "English: Light Novel Updates"
|
- 'English: Light Novel Updates'
|
||||||
- "English: LightNovelWord"
|
- 'English: LightNovelWord'
|
||||||
- "English: Lily on the Valley"
|
- 'English: Lily on the Valley'
|
||||||
- "English: LightNovelHeaven"
|
- 'English: LightNovelHeaven'
|
||||||
- "English: LnMTL"
|
- 'English: LnMTL'
|
||||||
- "English: Ltnovel"
|
- 'English: Ltnovel'
|
||||||
- "English: LunarLetters"
|
- 'English: LunarLetters'
|
||||||
- "English: Meownovel"
|
- 'English: Meownovel'
|
||||||
- "English: Moonlight Novels"
|
- 'English: Moonlight Novels'
|
||||||
- "English: MostNovel"
|
- 'English: MostNovel'
|
||||||
- "English: MTL-Novel"
|
- 'English: MTL-Novel'
|
||||||
- "English: MTL Novel"
|
- 'English: MTL Novel'
|
||||||
- "English: MTL Reader"
|
- 'English: MTL Reader'
|
||||||
- "English: MVLEMPYR"
|
- 'English: MVLEMPYR'
|
||||||
- "English: MysticalSeries"
|
- 'English: MysticalSeries'
|
||||||
- "English: NeoSekai Translations"
|
- 'English: NeoSekai Translations'
|
||||||
- "English: Nitro Manga"
|
- 'English: Nitro Manga'
|
||||||
- "English: novelsOnline"
|
- 'English: novelsOnline'
|
||||||
- "English: NobleMTL"
|
- 'English: NobleMTL'
|
||||||
- "English: Novel Bin"
|
- 'English: Novel Bin'
|
||||||
- "English: NovelBuddy.io"
|
- 'English: NovelBuddy.io'
|
||||||
- "English: NovelCool"
|
- 'English: NovelCool'
|
||||||
- "English: Novel Fire"
|
- 'English: Novel Fire'
|
||||||
- "English: NovelFull"
|
- 'English: NovelFull'
|
||||||
- "English: Novel Hall"
|
- 'English: Novel Hall'
|
||||||
- "English: NovelLib"
|
- 'English: NovelLib'
|
||||||
- "English: Novelight"
|
- 'English: Novelight'
|
||||||
- "English: NovelMultiverse"
|
- 'English: NovelMultiverse'
|
||||||
- "English: NovelsKnight"
|
- 'English: NovelsKnight'
|
||||||
- "English: NovelTranslate"
|
- 'English: NovelTranslate'
|
||||||
- "English: Novel Updates"
|
- 'English: Novel Updates'
|
||||||
- "English: Panda Machine Translations"
|
- 'English: Panda Machine Translations'
|
||||||
- "English: Pastel Tales"
|
- 'English: Pastel Tales'
|
||||||
- "English: PawRead"
|
- 'English: PawRead'
|
||||||
- "English: Penguin Squad"
|
- 'English: Penguin Squad'
|
||||||
- "English: Prizma"
|
- 'English: Prizma'
|
||||||
- "English: Rainofsnow"
|
- 'English: Rainofsnow'
|
||||||
- "English: Ranobes"
|
- 'English: Ranobes'
|
||||||
- "English: Ranovel"
|
- 'English: Ranovel'
|
||||||
- "English: Read Fanfic"
|
- 'English: Read Fanfic'
|
||||||
- "English: Read From Net"
|
- 'English: Read From Net'
|
||||||
- "English: ReadNovelFull"
|
- 'English: ReadNovelFull'
|
||||||
- "English: Reaper Scans"
|
- 'English: Reaper Scans'
|
||||||
- "English: Re:Library"
|
- 'English: Re:Library'
|
||||||
- "English: Requiem Translations"
|
- 'English: Requiem Translations'
|
||||||
- "English: ReadLiteNovel"
|
- 'English: ReadLiteNovel'
|
||||||
- "English: Royal Road"
|
- 'English: Royal Road'
|
||||||
- "English: Salmon Latte"
|
- 'English: Salmon Latte'
|
||||||
- "English: Scribble Hub"
|
- 'English: Scribble Hub'
|
||||||
- "English: SleepyTranslations"
|
- 'English: SleepyTranslations'
|
||||||
- "English: SonicMTL"
|
- 'English: SonicMTL'
|
||||||
- "English: StorySeedling"
|
- 'English: StorySeedling'
|
||||||
- "English: Sweet Escape"
|
- 'English: Sweet Escape'
|
||||||
- "English: System Translation"
|
- 'English: System Translation'
|
||||||
- "English: TranslatinOtaku"
|
- 'English: TranslatinOtaku'
|
||||||
- "English: Translation Weaver"
|
- 'English: Translation Weaver'
|
||||||
- "English: Universal Novel"
|
- 'English: Universal Novel'
|
||||||
- "English: Vandy Translate"
|
- 'English: Vandy Translate'
|
||||||
- "English: Violet Lily"
|
- 'English: Violet Lily'
|
||||||
- "English: VyNovel"
|
- 'English: VyNovel'
|
||||||
- "English: Webnovel"
|
- 'English: Webnovel'
|
||||||
- "English: WebNovelLover"
|
- 'English: WebNovelLover'
|
||||||
- "English: Web Novel Translation"
|
- 'English: Web Novel Translation'
|
||||||
- "English: Web Novel Pub"
|
- 'English: Web Novel Pub'
|
||||||
- "English: White Moonlight Novels"
|
- 'English: White Moonlight Novels'
|
||||||
- "English: Wook's Teahouse"
|
- "English: Wook's Teahouse"
|
||||||
- "English: WordExcerpt"
|
- 'English: WordExcerpt'
|
||||||
- "English: WTR-LAB"
|
- 'English: WTR-LAB'
|
||||||
- "English: Wuxiafox"
|
- 'English: Wuxiafox'
|
||||||
- "English: Fans MTL"
|
- 'English: Fans MTL'
|
||||||
- "English: Wuxiabox"
|
- 'English: Wuxiabox'
|
||||||
- "English: Wuxia Space"
|
- 'English: Wuxia Space'
|
||||||
- "English: WuxiaV"
|
- 'English: WuxiaV'
|
||||||
- "English: Wuxia World"
|
- 'English: Wuxia World'
|
||||||
- "English: WuxiaWorld.Site"
|
- 'English: WuxiaWorld.Site'
|
||||||
- "English: Zetro Translation"
|
- 'English: Zetro Translation'
|
||||||
- "Français: Chireads"
|
- 'Français: Chireads'
|
||||||
- "Français: HarkenEliwood"
|
- 'Français: HarkenEliwood'
|
||||||
- "Français: KissWood"
|
- 'Français: KissWood'
|
||||||
- "Français: Ligh Novel FR"
|
- 'Français: Ligh Novel FR'
|
||||||
- "Français: MassNovel"
|
- 'Français: MassNovel'
|
||||||
- "Français: MTL Novel (FR)"
|
- 'Français: MTL Novel (FR)'
|
||||||
- "Français: NovelDeGlace"
|
- 'Français: NovelDeGlace'
|
||||||
- "Français: Novhell"
|
- 'Français: Novhell'
|
||||||
- "Français: PhenixScans"
|
- 'Français: PhenixScans'
|
||||||
- "Français: Warrior Legend Trad"
|
- 'Français: Warrior Legend Trad'
|
||||||
- "Français: WorldNovel"
|
- 'Français: WorldNovel'
|
||||||
- "Français: WuxiaLnScantrad"
|
- 'Français: WuxiaLnScantrad'
|
||||||
- "Français: Xiaowaz"
|
- 'Français: Xiaowaz'
|
||||||
- "Bahasa Indonesia: Baca Light Novel"
|
- 'Bahasa Indonesia: Baca Light Novel'
|
||||||
- "Bahasa Indonesia: IndoWebNovel"
|
- 'Bahasa Indonesia: IndoWebNovel'
|
||||||
- "Bahasa Indonesia: MeioNovel"
|
- 'Bahasa Indonesia: MeioNovel'
|
||||||
- "Bahasa Indonesia: Risenovel"
|
- 'Bahasa Indonesia: Risenovel'
|
||||||
- "Bahasa Indonesia: MTL Novel (ID)"
|
- 'Bahasa Indonesia: MTL Novel (ID)'
|
||||||
- "Bahasa Indonesia: NovelBookID"
|
- 'Bahasa Indonesia: NovelBookID'
|
||||||
- "Bahasa Indonesia: NovelRingan"
|
- 'Bahasa Indonesia: NovelRingan'
|
||||||
- "Bahasa Indonesia: SakuraNovel"
|
- 'Bahasa Indonesia: SakuraNovel'
|
||||||
- "Bahasa Indonesia: Sekte Novel"
|
- 'Bahasa Indonesia: Sekte Novel'
|
||||||
- "Bahasa Indonesia: WBNovel"
|
- 'Bahasa Indonesia: WBNovel'
|
||||||
- "日本語: kakuyomu"
|
- '日本語: kakuyomu'
|
||||||
- "日本語: Syosetu"
|
- '日本語: Syosetu'
|
||||||
- "조선말, 한국어: Agitoon"
|
- '조선말, 한국어: Agitoon'
|
||||||
- "조선말, 한국어: Fortune Eternal"
|
- '조선말, 한국어: Fortune Eternal'
|
||||||
- "Polski: Novelki"
|
- 'Polski: Novelki'
|
||||||
- "Português: Better Novels"
|
- 'Português: Better Novels'
|
||||||
- "Português: Blog do Amon Novels"
|
- 'Português: Blog do Amon Novels'
|
||||||
- "Português: Central Novel"
|
- 'Português: Central Novel'
|
||||||
- "Português: Kiniga"
|
- 'Português: Kiniga'
|
||||||
- "Português: LaNovels"
|
- 'Português: LaNovels'
|
||||||
- "Português: Light Novel Brasil"
|
- 'Português: Light Novel Brasil'
|
||||||
- "Português: MTL Novel (PT)"
|
- 'Português: MTL Novel (PT)'
|
||||||
- "Português: Novel Mania"
|
- 'Português: Novel Mania'
|
||||||
- "Português: Tsundoku Traduções"
|
- 'Português: Tsundoku Traduções'
|
||||||
- "Русский: Автор Тудей"
|
- 'Русский: Автор Тудей'
|
||||||
- "Русский: Bookhamster"
|
- 'Русский: Bookhamster'
|
||||||
- "Русский: Bookriver"
|
- 'Русский: Bookriver'
|
||||||
- "Русский: Erolate"
|
- 'Русский: Erolate'
|
||||||
- "Русский: EzNovels"
|
- 'Русский: EzNovels'
|
||||||
- "Русский: ficbook"
|
- 'Русский: ficbook'
|
||||||
- "Русский: LitSpace"
|
- 'Русский: LitSpace'
|
||||||
- "Русский: Свободный Мир Ранобэ"
|
- 'Русский: Свободный Мир Ранобэ'
|
||||||
- "Русский: Jaomix"
|
- 'Русский: Jaomix'
|
||||||
- "Русский: MTL Novel (RU)"
|
- 'Русский: MTL Novel (RU)'
|
||||||
- "Русский: Neobook"
|
- 'Русский: Neobook'
|
||||||
- "Русский: NovelCool (RU)"
|
- 'Русский: NovelCool (RU)'
|
||||||
- "Русский: НовелОВХ"
|
- 'Русский: НовелОВХ'
|
||||||
- "Русский: Ranobes (RU)"
|
- 'Русский: Ranobes (RU)'
|
||||||
- "Русский: Renovels"
|
- 'Русский: Renovels'
|
||||||
- "Русский: RanobeLib"
|
- 'Русский: RanobeLib'
|
||||||
- "Русский: RanobeHub"
|
- 'Русский: RanobeHub'
|
||||||
- "Русский: РанобэРФ"
|
- 'Русский: РанобэРФ'
|
||||||
- "Русский: Rulate"
|
- 'Русский: Rulate'
|
||||||
- "Русский: Ruvers"
|
- 'Русский: Ruvers'
|
||||||
- "Русский: NovelTL"
|
- 'Русский: NovelTL'
|
||||||
- "Русский: ТопЛиба"
|
- 'Русский: ТопЛиба'
|
||||||
- "Русский: Целлюлоза"
|
- 'Русский: Целлюлоза'
|
||||||
- "Español: AllNovelRead"
|
- 'Español: AllNovelRead'
|
||||||
- "Español: AnimesHoy12"
|
- 'Español: AnimesHoy12'
|
||||||
- "Español: Hasu Translations"
|
- 'Español: Hasu Translations'
|
||||||
- "Español: LightNovelDaily"
|
- 'Español: LightNovelDaily'
|
||||||
- "Español: MTL Novel (ES)"
|
- 'Español: MTL Novel (ES)'
|
||||||
- "Español: Novelas Ligera"
|
- 'Español: Novelas Ligera'
|
||||||
- "Español: Oasis Translations"
|
- 'Español: Oasis Translations'
|
||||||
- "Español: Pancho Translations"
|
- 'Español: Pancho Translations'
|
||||||
- "Español: ReinoWuxia"
|
- 'Español: ReinoWuxia'
|
||||||
- "Español: SkyNovels"
|
- 'Español: SkyNovels'
|
||||||
- "Español: TC & Sega"
|
- 'Español: TC & Sega'
|
||||||
- "Español: Traducciones Amistosas"
|
- 'Español: Traducciones Amistosas'
|
||||||
- "Español: TuNovelaLigera"
|
- 'Español: TuNovelaLigera'
|
||||||
- "Español: Yuuki Tls"
|
- 'Español: Yuuki Tls'
|
||||||
- "ไทย: Novel Lucky"
|
- 'ไทย: Novel Lucky'
|
||||||
- "ไทย: Novel PDF"
|
- 'ไทย: Novel PDF'
|
||||||
- "Türkçe: Araz Novel"
|
- 'Türkçe: Araz Novel'
|
||||||
- "Türkçe: E-KİTAPLAR"
|
- 'Türkçe: E-KİTAPLAR'
|
||||||
- "Türkçe: EpikNovel"
|
- 'Türkçe: EpikNovel'
|
||||||
- "Türkçe: kakikata"
|
- 'Türkçe: kakikata'
|
||||||
- "Türkçe: Kodeks Library"
|
- 'Türkçe: Kodeks Library'
|
||||||
- "Türkçe: MangaTR"
|
- 'Türkçe: MangaTR'
|
||||||
- "Türkçe: NABİ SCANS"
|
- 'Türkçe: NABİ SCANS'
|
||||||
- "Türkçe: Namevt"
|
- 'Türkçe: Namevt'
|
||||||
- "Türkçe: Novel oku"
|
- 'Türkçe: Novel oku'
|
||||||
- "Türkçe: NovelTR"
|
- 'Türkçe: NovelTR'
|
||||||
- "Türkçe: Ragnar Scans"
|
- 'Türkçe: Ragnar Scans'
|
||||||
- "Türkçe: ThNovels"
|
- 'Türkçe: ThNovels'
|
||||||
- "Türkçe: TurkceLightNovels"
|
- 'Türkçe: TurkceLightNovels'
|
||||||
- "Türkçe: WebNovelOku"
|
- 'Türkçe: WebNovelOku'
|
||||||
- "Українська: BakaInUA"
|
- 'Українська: BakaInUA'
|
||||||
- "Українська: Смаколики"
|
- 'Українська: Смаколики'
|
||||||
- "Українська: UA Ranobe Club"
|
- 'Українська: UA Ranobe Club'
|
||||||
- "Tiếng Việt: Light Novel VN"
|
- 'Tiếng Việt: Light Novel VN'
|
||||||
- "Tiếng Việt: Hako"
|
- 'Tiếng Việt: Hako'
|
||||||
- "Tiếng Việt: Nettruyen"
|
- 'Tiếng Việt: Nettruyen'
|
||||||
- "Tiếng Việt: Truyện Chữ"
|
- 'Tiếng Việt: Truyện Chữ'
|
||||||
- "Tiếng Việt: Truyen Conect"
|
- 'Tiếng Việt: Truyen Conect'
|
||||||
- "Tiếng Việt: Truyện Full"
|
- 'Tiếng Việt: Truyện Full'
|
||||||
- "Multi: Komga"
|
- 'Multi: Komga'
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
@@ -264,14 +265,15 @@ body:
|
|||||||
id: severity
|
id: severity
|
||||||
attributes:
|
attributes:
|
||||||
label: Severity
|
label: Severity
|
||||||
description: Select the severity of the issue you want to report.
|
description: Select the issue severity level.
|
||||||
multiple: false
|
multiple: false
|
||||||
options:
|
options:
|
||||||
- Wrong formatting
|
- Wrong Formatting
|
||||||
- Wrong content
|
- Wrong Content
|
||||||
- Missing chapter
|
- Missing Chapter
|
||||||
- Missing images
|
- Missing Images
|
||||||
- Can't load novels
|
- Can't Load Novels
|
||||||
|
- Domain Changed
|
||||||
- Other
|
- Other
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
@@ -279,42 +281,43 @@ body:
|
|||||||
- type: textarea
|
- type: textarea
|
||||||
id: reproduce-steps
|
id: reproduce-steps
|
||||||
attributes:
|
attributes:
|
||||||
label: Steps to reproduce
|
label: Steps To Reproduce
|
||||||
description: Provide an example of the issue.
|
description: Describe the steps to reproduce the issue.
|
||||||
placeholder: |
|
placeholder: |
|
||||||
Example:
|
Example:
|
||||||
1. First step
|
1. Open the plugin
|
||||||
2. Second step
|
2. Search for a novel
|
||||||
3. Issue here
|
3. Error appears
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: expected-behavior
|
id: expected-behavior
|
||||||
attributes:
|
attributes:
|
||||||
label: Expected behavior
|
label: Expected Behavior
|
||||||
|
description: What should happen?
|
||||||
placeholder: |
|
placeholder: |
|
||||||
Example:
|
Example:
|
||||||
"This should happen..."
|
"The search results should display correctly..."
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: actual-behavior
|
id: actual-behavior
|
||||||
attributes:
|
attributes:
|
||||||
label: Actual behavior
|
label: Actual Behavior
|
||||||
|
description: What actually happened?
|
||||||
placeholder: |
|
placeholder: |
|
||||||
Example:
|
Example:
|
||||||
"This happened instead..."
|
"An error message appeared instead..."
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
- type: input
|
- type: input
|
||||||
id: lnreader-version
|
id: lnreader-version
|
||||||
attributes:
|
attributes:
|
||||||
label: LNReader version
|
label: LNReader Version
|
||||||
description: |
|
description: Find this in **More → About**.
|
||||||
You can find your LNReader version in **More → About**.
|
|
||||||
placeholder: |
|
placeholder: |
|
||||||
Example: "2.0.0"
|
Example: "2.0.0"
|
||||||
validations:
|
validations:
|
||||||
@@ -323,9 +326,8 @@ body:
|
|||||||
- type: input
|
- type: input
|
||||||
id: plugin-version
|
id: plugin-version
|
||||||
attributes:
|
attributes:
|
||||||
label: Plugin version
|
label: Plugin Version
|
||||||
description: |
|
description: Find this in **Browse → Installed** next to the plugin name.
|
||||||
You can find your Plugin version in **Browse → Installed** and scrolling to the desired source.
|
|
||||||
placeholder: |
|
placeholder: |
|
||||||
Example: "1.0.1"
|
Example: "1.0.1"
|
||||||
validations:
|
validations:
|
||||||
@@ -334,9 +336,8 @@ body:
|
|||||||
- type: input
|
- type: input
|
||||||
id: android-version
|
id: android-version
|
||||||
attributes:
|
attributes:
|
||||||
label: Android version
|
label: Android Version
|
||||||
description: |
|
description: Find this in your device settings.
|
||||||
You can find this somewhere in your Android settings.
|
|
||||||
placeholder: |
|
placeholder: |
|
||||||
Example: "Android 15"
|
Example: "Android 15"
|
||||||
validations:
|
validations:
|
||||||
@@ -345,24 +346,24 @@ body:
|
|||||||
- type: textarea
|
- type: textarea
|
||||||
id: other-details
|
id: other-details
|
||||||
attributes:
|
attributes:
|
||||||
label: Other details
|
label: Other Details
|
||||||
|
description: Any additional information or screenshots.
|
||||||
placeholder: |
|
placeholder: |
|
||||||
Additional details and attachments.
|
Additional context, screenshots, or relevant information.
|
||||||
|
|
||||||
- type: checkboxes
|
- type: checkboxes
|
||||||
id: acknowledgements
|
id: acknowledgements
|
||||||
attributes:
|
attributes:
|
||||||
label: Acknowledgements
|
label: Acknowledgements
|
||||||
description: Your issue will be closed if you haven't done these steps.
|
description: Your issue will be closed if these requirements are not met.
|
||||||
options:
|
options:
|
||||||
- label: I have searched the existing issues and this is a new ticket, **NOT** a duplicate or related to another open issue.
|
- label: I have searched existing issues and confirmed this is not a duplicate.
|
||||||
required: true
|
required: true
|
||||||
- label: I have written a short but informative title.
|
- label: I have written a clear and descriptive title.
|
||||||
required: true
|
required: true
|
||||||
- label: I have updated the app to version **[2.0.0](https://github.com/LNReader/lnreader/releases/tag/v2.0.0-beta.3).**
|
- label: I have updated the app to the latest version **[2.0.0](https://github.com/LNReader/lnreader/releases/tag/v2.0.0-beta.3)**.
|
||||||
required: true
|
required: true
|
||||||
- label: I have updated all installed extensions.
|
- label: I have updated all installed plugins to the latest version.
|
||||||
required: true
|
required: true
|
||||||
- label: If this is an issue with the app itself, I should be opening an issue in the [app repository](https://github.com/LNReader/lnreader/issues/new/choose).
|
- label: I understand that app-specific issues should be reported in the [app repository](https://github.com/LNReader/lnreader/issues/new/choose).
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
|
|||||||
@@ -1,38 +1,39 @@
|
|||||||
name: Feature request
|
name: Request Feature
|
||||||
description: Suggest a feature to improve a source
|
description: Suggest an improvement for an existing plugin
|
||||||
labels: [Feature Request]
|
labels: [Feature Request]
|
||||||
body:
|
body:
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: feature-description
|
id: feature-description
|
||||||
attributes:
|
attributes:
|
||||||
label: Describe your suggested feature
|
label: Feature Description
|
||||||
description: How can an existing extension be improved?
|
description: Describe the feature you would like to see added.
|
||||||
placeholder: |
|
placeholder: |
|
||||||
Example:
|
Example:
|
||||||
"It should work like this..."
|
"Add support for latest novels list in Royal Road plugin..."
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: other-details
|
id: other-details
|
||||||
attributes:
|
attributes:
|
||||||
label: Other details
|
label: Other Details
|
||||||
|
description: Any additional context or mockups.
|
||||||
placeholder: |
|
placeholder: |
|
||||||
Additional details and attachments.
|
Additional information, use cases, or examples.
|
||||||
|
|
||||||
- type: checkboxes
|
- type: checkboxes
|
||||||
id: acknowledgements
|
id: acknowledgements
|
||||||
attributes:
|
attributes:
|
||||||
label: Acknowledgements
|
label: Acknowledgements
|
||||||
description: Your issue will be closed if you haven't done these steps.
|
description: Your issue will be closed if these requirements are not met.
|
||||||
options:
|
options:
|
||||||
- label: I have searched the existing issues and this is a new ticket, **NOT** a duplicate or related to another open issue.
|
- label: I have searched existing issues and confirmed this is not a duplicate.
|
||||||
required: true
|
required: true
|
||||||
- label: I have written a short but informative title.
|
- label: I have written a clear and descriptive title.
|
||||||
required: true
|
required: true
|
||||||
- label: If this is an issue with the app itself, I should be opening an issue in the [app repository](https://github.com/LNReader/lnreader/issues/new/choose).
|
- label: I understand that app-specific features should be requested in the [app repository](https://github.com/LNReader/lnreader/issues/new/choose).
|
||||||
required: true
|
required: true
|
||||||
- label: I have updated the app to version **[1.1.19](https://github.com/LNReader/lnreader/releases/latest)**.
|
- label: I have updated the app to the latest version **[1.1.19](https://github.com/LNReader/lnreader/releases/latest)**.
|
||||||
required: true
|
required: true
|
||||||
- label: I will fill out all of the requested information in this form.
|
- label: I have provided all requested information in this form.
|
||||||
required: true
|
required: true
|
||||||
|
|||||||
@@ -0,0 +1,56 @@
|
|||||||
|
name: Request Plugin
|
||||||
|
description: Request a new plugin for LNReader
|
||||||
|
labels: [Plugin Request]
|
||||||
|
body:
|
||||||
|
- type: input
|
||||||
|
id: name
|
||||||
|
attributes:
|
||||||
|
label: Plugin Name
|
||||||
|
description: The name of the website or platform.
|
||||||
|
placeholder: |
|
||||||
|
Example: "Novel Updates"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: input
|
||||||
|
id: link
|
||||||
|
attributes:
|
||||||
|
label: Website URL
|
||||||
|
description: The URL of the website.
|
||||||
|
placeholder: |
|
||||||
|
Example: "https://example.com"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: input
|
||||||
|
id: language
|
||||||
|
attributes:
|
||||||
|
label: Language
|
||||||
|
description: The primary language of the website.
|
||||||
|
placeholder: |
|
||||||
|
Example: "English"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: other-details
|
||||||
|
attributes:
|
||||||
|
label: Other Details
|
||||||
|
description: Any additional information about the website.
|
||||||
|
placeholder: |
|
||||||
|
Why this plugin would be useful, special features, etc.
|
||||||
|
|
||||||
|
- type: checkboxes
|
||||||
|
id: acknowledgements
|
||||||
|
attributes:
|
||||||
|
label: Acknowledgements
|
||||||
|
description: Your issue will be closed if these requirements are not met.
|
||||||
|
options:
|
||||||
|
- label: I have searched existing issues and confirmed this plugin has not been requested before.
|
||||||
|
required: true
|
||||||
|
- label: I have used the plugin name as the issue title.
|
||||||
|
required: true
|
||||||
|
- label: I have verified this plugin does not already exist in the [repository](https://github.com/LNReader/lnreader-plugins).
|
||||||
|
required: true
|
||||||
|
- label: I have provided all requested information in this form.
|
||||||
|
required: true
|
||||||
@@ -1,18 +1,24 @@
|
|||||||
name: Source request
|
name: Request Plugin
|
||||||
description: Suggest a new source for LNReader
|
description: Request a new plugin for LNReader
|
||||||
labels: [Source Request]
|
labels: [Plugin Request]
|
||||||
body:
|
body:
|
||||||
- type: input
|
- type: input
|
||||||
id: name
|
id: name
|
||||||
attributes:
|
attributes:
|
||||||
label: Source name
|
label: Plugin Name
|
||||||
|
description: The name of the website or platform.
|
||||||
|
placeholder: |
|
||||||
|
Example: "Novel Updates"
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
- type: input
|
- type: input
|
||||||
id: link
|
id: link
|
||||||
attributes:
|
attributes:
|
||||||
label: Source link
|
label: Website URL
|
||||||
|
description: The URL of the website.
|
||||||
|
placeholder: |
|
||||||
|
Example: "https://example.com"
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
@@ -20,6 +26,7 @@ body:
|
|||||||
id: language
|
id: language
|
||||||
attributes:
|
attributes:
|
||||||
label: Language
|
label: Language
|
||||||
|
description: The primary language of the website.
|
||||||
placeholder: |
|
placeholder: |
|
||||||
Example: "English"
|
Example: "English"
|
||||||
validations:
|
validations:
|
||||||
@@ -28,21 +35,22 @@ body:
|
|||||||
- type: textarea
|
- type: textarea
|
||||||
id: other-details
|
id: other-details
|
||||||
attributes:
|
attributes:
|
||||||
label: Other details
|
label: Other Details
|
||||||
|
description: Any additional information about the website.
|
||||||
placeholder: |
|
placeholder: |
|
||||||
Additional details and attachments.
|
Why this plugin would be useful, special features, etc.
|
||||||
|
|
||||||
- type: checkboxes
|
- type: checkboxes
|
||||||
id: acknowledgements
|
id: acknowledgements
|
||||||
attributes:
|
attributes:
|
||||||
label: Acknowledgements
|
label: Acknowledgements
|
||||||
description: Your issue will be closed if you haven't done these steps.
|
description: Your issue will be closed if these requirements are not met.
|
||||||
options:
|
options:
|
||||||
- label: I have searched the existing issues and this is a new ticket, **NOT** a duplicate or related to another open issue.
|
- label: I have searched existing issues and confirmed this plugin has not been requested before.
|
||||||
required: true
|
required: true
|
||||||
- label: I have written a title with source name.
|
- label: I have used the plugin name as the issue title.
|
||||||
required: true
|
required: true
|
||||||
- label: I have checked that the extension does not already exist by searching the [GitHub repository](https://github.com/LNReader/lnreader/) and verified it does not appear in the code base.
|
- label: I have verified this plugin does not already exist in the [repository](https://github.com/LNReader/lnreader-plugins).
|
||||||
required: true
|
required: true
|
||||||
- label: I will fill out all of the requested information in this form.
|
- label: I have provided all requested information in this form.
|
||||||
required: true
|
required: true
|
||||||
|
|||||||
@@ -1,15 +1,16 @@
|
|||||||
# DO NOT EDIT
|
# DO NOT EDIT THIS FILE DIRECTLY
|
||||||
# THIS FILE IS AUTO GENERATED FROM blank_report_issue.yml in the .github/scripts folder.
|
# This file is auto-generated from blank_report_issue.yml in .github/scripts/
|
||||||
|
# Any changes made here will be overwritten when plugins are published.
|
||||||
|
|
||||||
name: Issue report
|
name: Report Issue
|
||||||
description: Report a source issue in LNReader
|
description: Report a plugin issue in LNReader
|
||||||
labels: [Bug]
|
labels: [Bug]
|
||||||
body:
|
body:
|
||||||
- type: dropdown
|
- type: dropdown
|
||||||
id: source
|
id: source
|
||||||
attributes:
|
attributes:
|
||||||
label: Plugin
|
label: Plugin
|
||||||
description: Select the plugin associated with the issue.
|
description: Select the affected plugin(s).
|
||||||
multiple: true
|
multiple: true
|
||||||
options:
|
options:
|
||||||
{#CHANGE#}
|
{#CHANGE#}
|
||||||
@@ -20,14 +21,15 @@ body:
|
|||||||
id: severity
|
id: severity
|
||||||
attributes:
|
attributes:
|
||||||
label: Severity
|
label: Severity
|
||||||
description: Select the severity of the issue you want to report.
|
description: Select the issue severity level.
|
||||||
multiple: false
|
multiple: false
|
||||||
options:
|
options:
|
||||||
- Wrong formatting
|
- Wrong Formatting
|
||||||
- Wrong content
|
- Wrong Content
|
||||||
- Missing chapter
|
- Missing Chapter
|
||||||
- Missing images
|
- Missing Images
|
||||||
- Can't load novels
|
- Can't Load Novels
|
||||||
|
- Domain Changed
|
||||||
- Other
|
- Other
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
@@ -35,42 +37,43 @@ body:
|
|||||||
- type: textarea
|
- type: textarea
|
||||||
id: reproduce-steps
|
id: reproduce-steps
|
||||||
attributes:
|
attributes:
|
||||||
label: Steps to reproduce
|
label: Steps To Reproduce
|
||||||
description: Provide an example of the issue.
|
description: Describe the steps to reproduce the issue.
|
||||||
placeholder: |
|
placeholder: |
|
||||||
Example:
|
Example:
|
||||||
1. First step
|
1. Open the plugin
|
||||||
2. Second step
|
2. Search for a novel
|
||||||
3. Issue here
|
3. Error appears
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: expected-behavior
|
id: expected-behavior
|
||||||
attributes:
|
attributes:
|
||||||
label: Expected behavior
|
label: Expected Behavior
|
||||||
|
description: What should happen?
|
||||||
placeholder: |
|
placeholder: |
|
||||||
Example:
|
Example:
|
||||||
"This should happen..."
|
"The search results should display correctly..."
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: actual-behavior
|
id: actual-behavior
|
||||||
attributes:
|
attributes:
|
||||||
label: Actual behavior
|
label: Actual Behavior
|
||||||
|
description: What actually happened?
|
||||||
placeholder: |
|
placeholder: |
|
||||||
Example:
|
Example:
|
||||||
"This happened instead..."
|
"An error message appeared instead..."
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
- type: input
|
- type: input
|
||||||
id: lnreader-version
|
id: lnreader-version
|
||||||
attributes:
|
attributes:
|
||||||
label: LNReader version
|
label: LNReader Version
|
||||||
description: |
|
description: Find this in **More → About**.
|
||||||
You can find your LNReader version in **More → About**.
|
|
||||||
placeholder: |
|
placeholder: |
|
||||||
Example: "2.0.0"
|
Example: "2.0.0"
|
||||||
validations:
|
validations:
|
||||||
@@ -79,9 +82,8 @@ body:
|
|||||||
- type: input
|
- type: input
|
||||||
id: plugin-version
|
id: plugin-version
|
||||||
attributes:
|
attributes:
|
||||||
label: Plugin version
|
label: Plugin Version
|
||||||
description: |
|
description: Find this in **Browse → Installed** next to the plugin name.
|
||||||
You can find your Plugin version in **Browse → Installed** and scrolling to the desired source.
|
|
||||||
placeholder: |
|
placeholder: |
|
||||||
Example: "1.0.1"
|
Example: "1.0.1"
|
||||||
validations:
|
validations:
|
||||||
@@ -90,9 +92,8 @@ body:
|
|||||||
- type: input
|
- type: input
|
||||||
id: android-version
|
id: android-version
|
||||||
attributes:
|
attributes:
|
||||||
label: Android version
|
label: Android Version
|
||||||
description: |
|
description: Find this in your device settings.
|
||||||
You can find this somewhere in your Android settings.
|
|
||||||
placeholder: |
|
placeholder: |
|
||||||
Example: "Android 15"
|
Example: "Android 15"
|
||||||
validations:
|
validations:
|
||||||
@@ -101,24 +102,24 @@ body:
|
|||||||
- type: textarea
|
- type: textarea
|
||||||
id: other-details
|
id: other-details
|
||||||
attributes:
|
attributes:
|
||||||
label: Other details
|
label: Other Details
|
||||||
|
description: Any additional information or screenshots.
|
||||||
placeholder: |
|
placeholder: |
|
||||||
Additional details and attachments.
|
Additional context, screenshots, or relevant information.
|
||||||
|
|
||||||
- type: checkboxes
|
- type: checkboxes
|
||||||
id: acknowledgements
|
id: acknowledgements
|
||||||
attributes:
|
attributes:
|
||||||
label: Acknowledgements
|
label: Acknowledgements
|
||||||
description: Your issue will be closed if you haven't done these steps.
|
description: Your issue will be closed if these requirements are not met.
|
||||||
options:
|
options:
|
||||||
- label: I have searched the existing issues and this is a new ticket, **NOT** a duplicate or related to another open issue.
|
- label: I have searched existing issues and confirmed this is not a duplicate.
|
||||||
required: true
|
required: true
|
||||||
- label: I have written a short but informative title.
|
- label: I have written a clear and descriptive title.
|
||||||
required: true
|
required: true
|
||||||
- label: I have updated the app to version **[2.0.0](https://github.com/LNReader/lnreader/releases/tag/v2.0.0-beta.3).**
|
- label: I have updated the app to the latest version **[2.0.0](https://github.com/LNReader/lnreader/releases/tag/v2.0.0-beta.3)**.
|
||||||
required: true
|
required: true
|
||||||
- label: I have updated all installed extensions.
|
- label: I have updated all installed plugins to the latest version.
|
||||||
required: true
|
required: true
|
||||||
- label: If this is an issue with the app itself, I should be opening an issue in the [app repository](https://github.com/LNReader/lnreader/issues/new/choose).
|
- label: I understand that app-specific issues should be reported in the [app repository](https://github.com/LNReader/lnreader/issues/new/choose).
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
|
|||||||
@@ -1,40 +0,0 @@
|
|||||||
const version = require('../../package.json').version;
|
|
||||||
const dist = `plugins/v${version}`;
|
|
||||||
const fs = require('fs');
|
|
||||||
|
|
||||||
const rawText = fs.readFileSync(
|
|
||||||
'.github/scripts/blank_report_issue.yml',
|
|
||||||
'utf8',
|
|
||||||
);
|
|
||||||
|
|
||||||
async function main() {
|
|
||||||
const pluginsRaw = await fetch(
|
|
||||||
`https://raw.githubusercontent.com/LNReader/lnreader-plugins/${dist}/.dist/plugins.min.json`,
|
|
||||||
).then(res => res.json());
|
|
||||||
const plugins = pluginsRaw.reduce((arr, plugin) => {
|
|
||||||
arr[plugin.lang + ': ' + plugin.name] = plugin.id;
|
|
||||||
return arr;
|
|
||||||
}, {});
|
|
||||||
|
|
||||||
let newKeys = Object.keys(plugins);
|
|
||||||
let savedKeys = [];
|
|
||||||
try {
|
|
||||||
let keys = JSON.parse(fs.readFileSync('.github/scripts/keys.json', 'utf8'));
|
|
||||||
savedKeys = Object.keys(keys);
|
|
||||||
} catch (err) {
|
|
||||||
console.log(err);
|
|
||||||
}
|
|
||||||
if (!sameKeys(newKeys, savedKeys) && Array.isArray(newKeys)) {
|
|
||||||
const text = newKeys.join('"\n - "');
|
|
||||||
fs.writeFileSync(
|
|
||||||
'.github/ISSUE_TEMPLATE/report_issue.yml',
|
|
||||||
rawText.replace(/{#CHANGE#}/g, '- "' + text + '"'),
|
|
||||||
);
|
|
||||||
fs.writeFileSync('.github/scripts/keys.json', JSON.stringify(plugins));
|
|
||||||
}
|
|
||||||
function sameKeys(a, b) {
|
|
||||||
return a.length === b.length && a.every(value => b.includes(value));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
main();
|
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
const version = require('../../package.json').version;
|
||||||
|
const dist = `plugins/v${version}`;
|
||||||
|
const fs = require('fs');
|
||||||
|
|
||||||
|
const rawText = fs.readFileSync(
|
||||||
|
'.github/scripts/blank_report_issue.yml',
|
||||||
|
'utf8',
|
||||||
|
);
|
||||||
|
|
||||||
|
async function main() {
|
||||||
|
console.log(`Fetching plugins from: ${dist}`);
|
||||||
|
|
||||||
|
try {
|
||||||
|
const response = await fetch(
|
||||||
|
`https://raw.githubusercontent.com/LNReader/lnreader-plugins/${dist}/.dist/plugins.min.json`,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!response.ok) {
|
||||||
|
throw new Error(
|
||||||
|
`Failed to fetch plugins: ${response.status} ${response.statusText}`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const pluginsRaw = await response.json();
|
||||||
|
console.log(`Found ${pluginsRaw.length} plugins`);
|
||||||
|
|
||||||
|
const plugins = pluginsRaw.reduce((arr, plugin) => {
|
||||||
|
arr[plugin.lang + ': ' + plugin.name] = plugin.id;
|
||||||
|
return arr;
|
||||||
|
}, {});
|
||||||
|
|
||||||
|
let newKeys = Object.keys(plugins);
|
||||||
|
let savedKeys = [];
|
||||||
|
try {
|
||||||
|
let keys = JSON.parse(
|
||||||
|
fs.readFileSync('.github/scripts/keys.json', 'utf8'),
|
||||||
|
);
|
||||||
|
savedKeys = Object.keys(keys);
|
||||||
|
console.log(`Loaded ${savedKeys.length} existing plugin keys`);
|
||||||
|
} catch (err) {
|
||||||
|
console.log('No existing keys file found, creating new one');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!sameKeys(newKeys, savedKeys) && Array.isArray(newKeys)) {
|
||||||
|
console.log('Plugin list has changed, updating issue template...');
|
||||||
|
const text = newKeys.join('"\n - "');
|
||||||
|
fs.writeFileSync(
|
||||||
|
'.github/ISSUE_TEMPLATE/report_issue.yml',
|
||||||
|
rawText.replace(/{#CHANGE#}/g, '- "' + text + '"'),
|
||||||
|
);
|
||||||
|
fs.writeFileSync('.github/scripts/keys.json', JSON.stringify(plugins));
|
||||||
|
console.log('Issue template updated successfully');
|
||||||
|
} else {
|
||||||
|
console.log('No changes detected in plugin list');
|
||||||
|
}
|
||||||
|
|
||||||
|
function sameKeys(a, b) {
|
||||||
|
return a.length === b.length && a.every(value => b.includes(value));
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error generating issue template options:', error.message);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
main().catch(err => {
|
||||||
|
console.error('Fatal error:', err);
|
||||||
|
process.exit(1);
|
||||||
|
});
|
||||||
@@ -6,23 +6,28 @@ on:
|
|||||||
- opened
|
- opened
|
||||||
- edited
|
- edited
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.event.issue.number }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
auto-label:
|
auto-label:
|
||||||
|
name: Auto Label Issues
|
||||||
if: ${{ github.event.issue.body && contains(github.event.issue.body, '### Plugin') }}
|
if: ${{ github.event.issue.body && contains(github.event.issue.body, '### Plugin') }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout Repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Extract the severity from issue body
|
- name: Extract Severity From Issue Body
|
||||||
id: extract-severity
|
id: extract-severity
|
||||||
run: |
|
run: |
|
||||||
USER_SELECTED_SEVERITY=$(echo "${{ github.event.issue.body }}" | grep "### Severity" -A 2 | tail -n 1 | sed 's/[[:space:]]*$//')
|
USER_SELECTED_SEVERITY=$(echo "${{ github.event.issue.body }}" | grep "### Severity" -A 2 | tail -n 1 | sed 's/[[:space:]]*$//')
|
||||||
SELECTED_SEVERITY=""
|
SELECTED_SEVERITY=""
|
||||||
|
|
||||||
case "$USER_SELECTED_SEVERITY" in
|
case "$USER_SELECTED_SEVERITY" in
|
||||||
"Wrong formatting"|"Wrong content"|"Missing chapter"|"Missing images"|"Can't load novels")
|
"Wrong Formatting"|"Wrong Content"|"Missing Chapter"|"Missing Images"|"Can't Load Novels"|"Domain Changed")
|
||||||
SELECTED_SEVERITY="$USER_SELECTED_SEVERITY"
|
SELECTED_SEVERITY="$USER_SELECTED_SEVERITY"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
@@ -31,14 +36,14 @@ jobs:
|
|||||||
esac
|
esac
|
||||||
echo "SELECTED_SEVERITY=$SELECTED_SEVERITY" >> $GITHUB_ENV
|
echo "SELECTED_SEVERITY=$SELECTED_SEVERITY" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Extract the plugin from issue body
|
- name: Extract Plugin From Issue Body
|
||||||
id: parse-issue
|
id: parse-issue
|
||||||
run: |
|
run: |
|
||||||
SELECTED_PLUGIN=$(echo "${{ github.event.issue.body }}" | awk '/### Plugin/ {f=1; next} f && NF {print; exit}' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
|
SELECTED_PLUGIN=$(echo "${{ github.event.issue.body }}" | awk '/### Plugin/ {f=1; next} f && NF {print; exit}' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
|
||||||
|
|
||||||
echo "SELECTED_PLUGIN=$SELECTED_PLUGIN" >> $GITHUB_ENV
|
echo "SELECTED_PLUGIN=$SELECTED_PLUGIN" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Determine corresponding label
|
- name: Determine Corresponding Label
|
||||||
id: determine-label
|
id: determine-label
|
||||||
run: |
|
run: |
|
||||||
LABELS="$( jq --arg keys "${{ env.SELECTED_PLUGIN }}" '. as $data | $keys | split(", ") as $keyList | $keyList[] | . as $key | if $data[$key] != null then "\($key)[\($data[$key])]" else empty end' ./.github/scripts/keys.json | sed 's/"//g' | sed 's/^[^:]*: //' )"
|
LABELS="$( jq --arg keys "${{ env.SELECTED_PLUGIN }}" '. as $data | $keys | split(", ") as $keyList | $keyList[] | . as $key | if $data[$key] != null then "\($key)[\($data[$key])]" else empty end' ./.github/scripts/keys.json | sed 's/"//g' | sed 's/^[^:]*: //' )"
|
||||||
@@ -49,8 +54,7 @@ jobs:
|
|||||||
# Save to GitHub environment
|
# Save to GitHub environment
|
||||||
printf "LABELS<<EOF\n%s\nEOF\n" "$LABELS_WITH_PREFIX" >> $GITHUB_ENV
|
printf "LABELS<<EOF\n%s\nEOF\n" "$LABELS_WITH_PREFIX" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Add Labels To Issue
|
||||||
- name: Add label to the issue
|
|
||||||
if: env.LABELS != ''
|
if: env.LABELS != ''
|
||||||
uses: actions-ecosystem/action-add-labels@v1
|
uses: actions-ecosystem/action-add-labels@v1
|
||||||
with:
|
with:
|
||||||
@@ -59,6 +63,6 @@ jobs:
|
|||||||
Severity: ${{ env.SELECTED_SEVERITY }}
|
Severity: ${{ env.SELECTED_SEVERITY }}
|
||||||
${{ env.LABELS }}
|
${{ env.LABELS }}
|
||||||
|
|
||||||
- name: Handle missing label
|
- name: Handle Missing Label
|
||||||
if: env.LABELS == ''
|
if: env.LABELS == ''
|
||||||
run: echo "No matching label found for the selected plugin."
|
run: echo "No matching label found for the selected plugin."
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
name: Issue moderator
|
name: Issue Moderator
|
||||||
|
|
||||||
on:
|
on:
|
||||||
issues:
|
issues:
|
||||||
@@ -6,11 +6,16 @@ on:
|
|||||||
issue_comment:
|
issue_comment:
|
||||||
types: [created]
|
types: [created]
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.event.issue.number }}
|
||||||
|
cancel-in-progress: false
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
autoclose:
|
autoclose:
|
||||||
|
name: Auto Close Invalid Issues
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Moderate issues
|
- name: Moderate Issues
|
||||||
uses: tachiyomiorg/issue-moderator-action@v2
|
uses: tachiyomiorg/issue-moderator-action@v2
|
||||||
with:
|
with:
|
||||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
@@ -18,7 +23,7 @@ jobs:
|
|||||||
|
|
||||||
duplicate-check-enabled: true
|
duplicate-check-enabled: true
|
||||||
duplicate-check-labels: |
|
duplicate-check-labels: |
|
||||||
["Source Request", "Domain Changed"]
|
["Plugin Request", "Domain Changed"]
|
||||||
|
|
||||||
existing-check-enabled: false
|
existing-check-enabled: false
|
||||||
|
|
||||||
@@ -36,7 +41,7 @@ jobs:
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "title",
|
"type": "title",
|
||||||
"regex": ".*(Source name|Short description).*",
|
"regex": ".*(Plugin name|Short description).*",
|
||||||
"message": "You did not fill out the description in the title"
|
"message": "You did not fill out the description in the title"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,19 +1,22 @@
|
|||||||
name: Lock threads
|
name: Lock Threads
|
||||||
|
|
||||||
on:
|
on:
|
||||||
# Daily
|
|
||||||
schedule:
|
schedule:
|
||||||
- cron: "0 0 * * *"
|
- cron: '0 0 * * *'
|
||||||
# Manual trigger
|
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
inputs:
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}
|
||||||
|
cancel-in-progress: false
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
lock:
|
lock:
|
||||||
|
name: Lock Inactive Threads
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: dessant/lock-threads@v2
|
- name: Lock Inactive Issues And Pull Requests
|
||||||
|
uses: dessant/lock-threads@v5
|
||||||
with:
|
with:
|
||||||
github-token: ${{ github.token }}
|
github-token: ${{ github.token }}
|
||||||
issue-lock-inactive-days: "2"
|
issue-lock-inactive-days: '2'
|
||||||
pr-lock-inactive-days: "2"
|
pr-lock-inactive-days: '2'
|
||||||
|
|||||||
@@ -1,29 +1,33 @@
|
|||||||
name: Prettier
|
name: Format Check
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: [master]
|
branches: [master]
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
Prettier:
|
format-check:
|
||||||
|
name: Check Code Formatting
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Code
|
- name: Checkout Repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Use Node.js
|
- name: Setup Node.js
|
||||||
uses: actions/setup-node@v3
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: '20'
|
node-version: '20'
|
||||||
|
|
||||||
- name: Install Dependencies
|
- name: Install Prettier
|
||||||
run: |
|
run: |
|
||||||
rm package.json
|
rm package.json
|
||||||
rm package-lock.json
|
rm package-lock.json
|
||||||
npm init -y
|
npm init -y
|
||||||
npm pkg set type="module"
|
npm install prettier@3.2.5
|
||||||
npm i prettier@3.2.5
|
|
||||||
|
|
||||||
- name: Prettier
|
- name: Check Code Formatting
|
||||||
run: npx prettier --check "./src/**/*.{ts,tsx,js,css}"
|
run: npx prettier --check "./src/**/*.{ts,tsx,js,css}"
|
||||||
|
|||||||
@@ -2,35 +2,42 @@ name: Publish Plugins
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}
|
group: ${{ github.workflow }}
|
||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
Publish:
|
publish:
|
||||||
|
name: Publish Plugins
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- name: Checkout Repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.REPO_SCOPED_TOKEN }}
|
token: ${{ secrets.REPO_SCOPED_TOKEN }}
|
||||||
- uses: actions/setup-node@v3
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: '20'
|
node-version: '20'
|
||||||
|
|
||||||
- name: Install Dependencies
|
- name: Install Dependencies
|
||||||
run: npm install --omit=dev --ignore-scripts
|
run: npm install --omit=dev --ignore-scripts
|
||||||
|
|
||||||
- name: Setup Git
|
- name: Configure Git
|
||||||
run: |
|
run: |
|
||||||
git config user.name "github-actions[bot]"
|
git config user.name "github-actions[bot]"
|
||||||
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
|
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
|
||||||
|
|
||||||
- if: github.repository == 'LNReader/lnreader-plugins'
|
- name: Publish Plugins (Main Repository)
|
||||||
name: Publish Plugins Main Repo
|
if: github.repository == 'LNReader/lnreader-plugins'
|
||||||
run: npm run publish:plugins 2>> $GITHUB_STEP_SUMMARY
|
run: npm run publish:plugins 2>> $GITHUB_STEP_SUMMARY
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|
||||||
- if: github.repository != 'LNReader/lnreader-plugins'
|
- name: Publish Plugins (Fork - All Branches)
|
||||||
name: Publish Plugins All Branches
|
if: github.repository != 'LNReader/lnreader-plugins'
|
||||||
run: npm run publish:plugins -- --all-branches
|
run: npm run publish:plugins -- --all-branches
|
||||||
shell: bash
|
shell: bash
|
||||||
@@ -4,20 +4,25 @@ on:
|
|||||||
issues:
|
issues:
|
||||||
types: [labeled]
|
types: [labeled]
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.event.issue.number }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
auto-label:
|
auto-label:
|
||||||
if: contains(github.event.issue.labels.*.name, 'Source Request')
|
name: Auto Label Theme
|
||||||
|
if: contains(github.event.issue.labels.*.name, 'Plugin Request')
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
env:
|
env:
|
||||||
REPO: ${{ github.repository }}
|
REPO: ${{ github.repository }}
|
||||||
ISSUE_NUMBER: ${{ github.event.issue.number }}
|
ISSUE_NUMBER: ${{ github.event.issue.number }}
|
||||||
steps:
|
steps:
|
||||||
- name: Get Source Request URL
|
- name: Get Plugin Website URL
|
||||||
id: get_url
|
id: get_url
|
||||||
env:
|
env:
|
||||||
ISSUE_BODY: ${{ github.event.issue.body }}
|
ISSUE_BODY: ${{ github.event.issue.body }}
|
||||||
run: |
|
run: |
|
||||||
URL=$(echo "$ISSUE_BODY" | sed -n '/### Source link/,+2p' | sed '1,2d' | tr -d '[:space:]')
|
URL=$(echo "$ISSUE_BODY" | sed -n '/### Website URL/,+2p' | sed '1,2d' | tr -d '[:space:]')
|
||||||
echo "URL=$URL" >> $GITHUB_OUTPUT
|
echo "URL=$URL" >> $GITHUB_OUTPUT
|
||||||
echo "Using URL: \`$URL\`" >> $GITHUB_STEP_SUMMARY
|
echo "Using URL: \`$URL\`" >> $GITHUB_STEP_SUMMARY
|
||||||
|
|
||||||
@@ -36,71 +41,75 @@ jobs:
|
|||||||
CHROME_VERSION=$(curl -s https://chromiumdash.appspot.com/fetch_releases?channel=Stable\&platform=Windows\&num=1 | jq -r '.[0].version // "126.0.6478.36"')
|
CHROME_VERSION=$(curl -s https://chromiumdash.appspot.com/fetch_releases?channel=Stable\&platform=Windows\&num=1 | jq -r '.[0].version // "126.0.6478.36"')
|
||||||
echo "USER_AGENT=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/$CHROME_VERSION Safari/537.36" >> $GITHUB_OUTPUT
|
echo "USER_AGENT=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/$CHROME_VERSION Safari/537.36" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Check Madara theme
|
- name: Check Madara Theme
|
||||||
id: check_madara
|
id: check_madara
|
||||||
env:
|
env:
|
||||||
BASE_URL: ${{ steps.get_base_url.outputs.BASE_URL }}
|
BASE_URL: ${{ steps.get_base_url.outputs.BASE_URL }}
|
||||||
USER_AGENT: ${{ steps.get_user_agent.outputs.USER_AGENT }}
|
USER_AGENT: ${{ steps.get_user_agent.outputs.USER_AGENT }}
|
||||||
run: |
|
run: |
|
||||||
if curl --location --output /dev/null --silent --head --fail "https://$BASE_URL/wp-content/themes/madara/style.css" -H "User-Agent: $USER_AGENT"; then
|
echo "🔍 Checking for Madara theme..." >> $GITHUB_STEP_SUMMARY
|
||||||
echo "madara=true" >> $GITHUB_OUTPUT
|
if curl --location --output /dev/null --silent --head --fail --max-time 10 "https://$BASE_URL/wp-content/themes/madara/style.css" -H "User-Agent: $USER_AGENT" 2>/dev/null || \
|
||||||
echo "✅ Madara Theme Detected" >> $GITHUB_STEP_SUMMARY
|
curl --location --output /dev/null --silent --head --fail --max-time 10 "http://$BASE_URL/wp-content/themes/madara/style.css" -H "User-Agent: $USER_AGENT" 2>/dev/null; then
|
||||||
elif curl --location --output /dev/null --silent --head --fail "http://$BASE_URL/wp-content/themes/madara/style.css" -H "User-Agent: $USER_AGENT"; then
|
|
||||||
echo "madara=true" >> $GITHUB_OUTPUT
|
echo "madara=true" >> $GITHUB_OUTPUT
|
||||||
echo "✅ Madara Theme Detected" >> $GITHUB_STEP_SUMMARY
|
echo "✅ Madara Theme Detected" >> $GITHUB_STEP_SUMMARY
|
||||||
else
|
else
|
||||||
echo "madara=false" >> $GITHUB_OUTPUT
|
echo "madara=false" >> $GITHUB_OUTPUT
|
||||||
|
echo "❌ Madara Theme Not Found" >> $GITHUB_STEP_SUMMARY
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Check Lighnovelwp theme
|
- name: Check Lightnovelwp Theme
|
||||||
id: check_lighnovelwp
|
id: check_lighnovelwp
|
||||||
|
if: always() && steps.check_madara.outputs.madara != 'true'
|
||||||
env:
|
env:
|
||||||
BASE_URL: ${{ steps.get_base_url.outputs.BASE_URL }}
|
BASE_URL: ${{ steps.get_base_url.outputs.BASE_URL }}
|
||||||
USER_AGENT: ${{ steps.get_user_agent.outputs.USER_AGENT }}
|
USER_AGENT: ${{ steps.get_user_agent.outputs.USER_AGENT }}
|
||||||
run: |
|
run: |
|
||||||
if curl --location --output /dev/null --silent --head --fail "https://$BASE_URL/wp-content/themes/lightnovel/style.css" -H "User-Agent: $USER_AGENT"; then
|
echo "🔍 Checking for Lightnovelwp theme..." >> $GITHUB_STEP_SUMMARY
|
||||||
|
if curl --location --output /dev/null --silent --head --fail --max-time 10 "https://$BASE_URL/wp-content/themes/lightnovel/style.css" -H "User-Agent: $USER_AGENT" 2>/dev/null || \
|
||||||
|
curl --location --output /dev/null --silent --head --fail --max-time 10 "http://$BASE_URL/wp-content/themes/lightnovel/style.css" -H "User-Agent: $USER_AGENT" 2>/dev/null; then
|
||||||
echo "lighnovelwp=true" >> $GITHUB_OUTPUT
|
echo "lighnovelwp=true" >> $GITHUB_OUTPUT
|
||||||
echo "✅ Lighnovelwp Theme Detected" >> $GITHUB_STEP_SUMMARY
|
echo "✅ Lightnovelwp Theme Detected" >> $GITHUB_STEP_SUMMARY
|
||||||
elif curl --location --output /dev/null --silent --head --fail "http://$BASE_URL/wp-content/themes/lightnovel/style.css" -H "User-Agent: $USER_AGENT"; then
|
|
||||||
echo "lighnovelwp=true" >> $GITHUB_OUTPUT
|
|
||||||
echo "✅ Lighnovelwp Theme Detected" >> $GITHUB_STEP_SUMMARY
|
|
||||||
else
|
else
|
||||||
echo "lighnovelwp=false" >> $GITHUB_OUTPUT
|
echo "lighnovelwp=false" >> $GITHUB_OUTPUT
|
||||||
|
echo "❌ Lightnovelwp Theme Not Found" >> $GITHUB_STEP_SUMMARY
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Check HotNovelPub theme
|
- name: Check HotNovelPub Theme
|
||||||
id: check_hotnovelpub
|
id: check_hotnovelpub
|
||||||
|
if: always() && steps.check_madara.outputs.madara != 'true' && steps.check_lighnovelwp.outputs.lighnovelwp != 'true'
|
||||||
env:
|
env:
|
||||||
BASE_URL: ${{ steps.get_base_url.outputs.BASE_URL }}
|
BASE_URL: ${{ steps.get_base_url.outputs.BASE_URL }}
|
||||||
USER_AGENT: ${{ steps.get_user_agent.outputs.USER_AGENT }}
|
USER_AGENT: ${{ steps.get_user_agent.outputs.USER_AGENT }}
|
||||||
run: |
|
run: |
|
||||||
if curl --location --silent --fail "https://api.$BASE_URL" -H "User-Agent: $USER_AGENT" | grep -q "Hello\!"; then
|
echo "🔍 Checking for HotNovelPub theme..." >> $GITHUB_STEP_SUMMARY
|
||||||
echo "hotnovelpub=true" >> $GITHUB_OUTPUT
|
if curl --location --silent --fail --max-time 10 "https://api.$BASE_URL" -H "User-Agent: $USER_AGENT" 2>/dev/null | grep -q "Hello\!" || \
|
||||||
echo "✅ HotNovelPub Theme Detected" >> $GITHUB_STEP_SUMMARY
|
curl --location --silent --fail --max-time 10 "http://api.$BASE_URL" -H "User-Agent: $USER_AGENT" 2>/dev/null | grep -q "Hello\!"; then
|
||||||
elif curl --location --silent --fail "http://api.$BASE_URL" -H "User-Agent: $USER_AGENT" | grep -q "Hello\!"; then
|
|
||||||
echo "hotnovelpub=true" >> $GITHUB_OUTPUT
|
echo "hotnovelpub=true" >> $GITHUB_OUTPUT
|
||||||
echo "✅ HotNovelPub Theme Detected" >> $GITHUB_STEP_SUMMARY
|
echo "✅ HotNovelPub Theme Detected" >> $GITHUB_STEP_SUMMARY
|
||||||
else
|
else
|
||||||
echo "hotnovelpub=false" >> $GITHUB_OUTPUT
|
echo "hotnovelpub=false" >> $GITHUB_OUTPUT
|
||||||
|
echo "❌ HotNovelPub Theme Not Found" >> $GITHUB_STEP_SUMMARY
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Check Fictioneer theme
|
- name: Check Fictioneer Theme
|
||||||
id: check_fictioneer
|
id: check_fictioneer
|
||||||
|
if: always() && steps.check_madara.outputs.madara != 'true' && steps.check_lighnovelwp.outputs.lighnovelwp != 'true' && steps.check_hotnovelpub.outputs.hotnovelpub != 'true'
|
||||||
env:
|
env:
|
||||||
BASE_URL: ${{ steps.get_base_url.outputs.BASE_URL }}
|
BASE_URL: ${{ steps.get_base_url.outputs.BASE_URL }}
|
||||||
USER_AGENT: ${{ steps.get_user_agent.outputs.USER_AGENT }}
|
USER_AGENT: ${{ steps.get_user_agent.outputs.USER_AGENT }}
|
||||||
run: |
|
run: |
|
||||||
if curl --location --output /dev/null --silent --head --fail "https://$BASE_URL/wp-content/themes/fictioneer/css/application.css" -H "User-Agent: $USER_AGENT"; then
|
echo "🔍 Checking for Fictioneer theme..." >> $GITHUB_STEP_SUMMARY
|
||||||
echo "fictioneer=true" >> $GITHUB_OUTPUT
|
if curl --location --output /dev/null --silent --head --fail --max-time 10 "https://$BASE_URL/wp-content/themes/fictioneer/css/application.css" -H "User-Agent: $USER_AGENT" 2>/dev/null || \
|
||||||
echo "✅ Fictioneer Theme Detected" >> $GITHUB_STEP_SUMMARY
|
curl --location --output /dev/null --silent --head --fail --max-time 10 "http://$BASE_URL/wp-content/themes/fictioneer/css/application.css" -H "User-Agent: $USER_AGENT" 2>/dev/null; then
|
||||||
elif curl --location --output /dev/null --silent --head --fail "http://$BASE_URL/wp-content/themes/fictioneer/css/application.css" -H "User-Agent: $USER_AGENT"; then
|
|
||||||
echo "fictioneer=true" >> $GITHUB_OUTPUT
|
echo "fictioneer=true" >> $GITHUB_OUTPUT
|
||||||
echo "✅ Fictioneer Theme Detected" >> $GITHUB_STEP_SUMMARY
|
echo "✅ Fictioneer Theme Detected" >> $GITHUB_STEP_SUMMARY
|
||||||
else
|
else
|
||||||
echo "fictioneer=false" >> $GITHUB_OUTPUT
|
echo "fictioneer=false" >> $GITHUB_OUTPUT
|
||||||
|
echo "❌ Fictioneer Theme Not Found" >> $GITHUB_STEP_SUMMARY
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Add Label
|
- name: Add Theme Label To Issue
|
||||||
|
if: always()
|
||||||
env:
|
env:
|
||||||
MADARA: ${{ steps.check_madara.outputs.madara }}
|
MADARA: ${{ steps.check_madara.outputs.madara }}
|
||||||
LIGHNOVELWP: ${{ steps.check_lighnovelwp.outputs.lighnovelwp }}
|
LIGHNOVELWP: ${{ steps.check_lighnovelwp.outputs.lighnovelwp }}
|
||||||
@@ -108,14 +117,19 @@ jobs:
|
|||||||
FICTIONEER: ${{ steps.check_fictioneer.outputs.fictioneer }}
|
FICTIONEER: ${{ steps.check_fictioneer.outputs.fictioneer }}
|
||||||
GH_TOKEN: ${{ github.token }}
|
GH_TOKEN: ${{ github.token }}
|
||||||
run: |
|
run: |
|
||||||
|
echo "## Theme Detection Result" >> $GITHUB_STEP_SUMMARY
|
||||||
if [[ "$MADARA" == "true" ]]; then
|
if [[ "$MADARA" == "true" ]]; then
|
||||||
|
echo "🏷️ Adding label: Theme: Madara" >> $GITHUB_STEP_SUMMARY
|
||||||
gh issue edit $ISSUE_NUMBER --add-label "Theme: Madara" -R $REPO
|
gh issue edit $ISSUE_NUMBER --add-label "Theme: Madara" -R $REPO
|
||||||
elif [[ "$LIGHNOVELWP" == "true" ]]; then
|
elif [[ "$LIGHNOVELWP" == "true" ]]; then
|
||||||
|
echo "🏷️ Adding label: Theme: Lighnovelwp" >> $GITHUB_STEP_SUMMARY
|
||||||
gh issue edit $ISSUE_NUMBER --add-label "Theme: Lighnovelwp" -R $REPO
|
gh issue edit $ISSUE_NUMBER --add-label "Theme: Lighnovelwp" -R $REPO
|
||||||
elif [[ "$HOTNOVELPUB" == "true" ]]; then
|
elif [[ "$HOTNOVELPUB" == "true" ]]; then
|
||||||
|
echo "🏷️ Adding label: Theme: Hotnovelpub" >> $GITHUB_STEP_SUMMARY
|
||||||
gh issue edit $ISSUE_NUMBER --add-label "Theme: Hotnovelpub" -R $REPO
|
gh issue edit $ISSUE_NUMBER --add-label "Theme: Hotnovelpub" -R $REPO
|
||||||
elif [[ "$FICTIONEER" == "true" ]]; then
|
elif [[ "$FICTIONEER" == "true" ]]; then
|
||||||
|
echo "🏷️ Adding label: Theme: Fictioneer" >> $GITHUB_STEP_SUMMARY
|
||||||
gh issue edit $ISSUE_NUMBER --add-label "Theme: Fictioneer" -R $REPO
|
gh issue edit $ISSUE_NUMBER --add-label "Theme: Fictioneer" -R $REPO
|
||||||
else
|
else
|
||||||
echo "No Theme Detected" >> $GITHUB_STEP_SUMMARY
|
echo "❌ No Theme Detected" >> $GITHUB_STEP_SUMMARY
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -0,0 +1,53 @@
|
|||||||
|
name: Update Issue Template
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_run:
|
||||||
|
workflows:
|
||||||
|
- Publish Plugins
|
||||||
|
types:
|
||||||
|
- completed
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
update_template:
|
||||||
|
name: Update Issue Template
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
pull-requests: write
|
||||||
|
if: |
|
||||||
|
github.repository == 'LNReader/lnreader-plugins' &&
|
||||||
|
github.event.workflow_run.conclusion == 'success' &&
|
||||||
|
github.event.workflow_run.event == 'push'
|
||||||
|
steps:
|
||||||
|
- name: Checkout Repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
ref: master
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: '20'
|
||||||
|
|
||||||
|
- name: Generate Issue Template Options
|
||||||
|
run: node ./.github/scripts/generate-issue-template-options.cjs
|
||||||
|
|
||||||
|
- name: Create Or Update Pull Request
|
||||||
|
uses: peter-evans/create-pull-request@v7
|
||||||
|
with:
|
||||||
|
commit-message: 'chore: Update Issue Template Plugin Options [skip ci]'
|
||||||
|
branch: 'update-issue-template'
|
||||||
|
title: 'chore: Update Issue Template Plugin Options'
|
||||||
|
body: |
|
||||||
|
Updates the issue template with the latest plugin dropdown options.
|
||||||
|
|
||||||
|
This PR is automatically generated after plugins are published.
|
||||||
|
labels: 'bot'
|
||||||
|
base: 'master'
|
||||||
|
delete-branch: true
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
name: Update Issue Template
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_run:
|
|
||||||
workflows:
|
|
||||||
- Publish Plugins
|
|
||||||
types:
|
|
||||||
- completed
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
update_template:
|
|
||||||
if: github.repository == 'LNReader/lnreader-plugins' && github.event.workflow_run.conclusion == 'success'
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
ref: master
|
|
||||||
|
|
||||||
- uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
node-version: '20'
|
|
||||||
|
|
||||||
- name: Recreating report issue template
|
|
||||||
run: |
|
|
||||||
node ./.github/scripts/createOptions.cjs
|
|
||||||
|
|
||||||
- name: Create or Update Pull Request
|
|
||||||
uses: peter-evans/create-pull-request@v5
|
|
||||||
with:
|
|
||||||
commit-message: '[skip ci] Update issue template with plugin dropdown options'
|
|
||||||
branch: 'update-issue-template'
|
|
||||||
title: 'Update Issue Template'
|
|
||||||
body: |
|
|
||||||
This PR updates the issue template with the latest plugin dropdown options.
|
|
||||||
If this PR already exists, it will be updated automatically with the latest changes.
|
|
||||||
labels: 'bot'
|
|
||||||
base: 'master'
|
|
||||||
delete-branch: true
|
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
<p>
|
<p>
|
||||||
<img alt="LNReader plugins counting" src="https://raw.githubusercontent.com/LNReader/lnreader-plugins/plugins/v3.0.0/total.svg">
|
<img alt="LNReader plugins counting" src="https://raw.githubusercontent.com/LNReader/lnreader-plugins/plugins/v3.0.0/total.svg">
|
||||||
<img alt="GitHub issues by-label" src="https://img.shields.io/github/issues/lnreader/lnreader-plugins/Source%20Request?color=success&label=source%20requests">
|
<img alt="GitHub issues by-label" src="https://img.shields.io/github/issues/lnreader/lnreader-plugins/Plugin%20Request?color=success&label=plugin%20requests">
|
||||||
<img alt="GitHub issues by-label" src="https://img.shields.io/github/issues/lnreader/lnreader-plugins/Bug?color=red&label=bugs">
|
<img alt="GitHub issues by-label" src="https://img.shields.io/github/issues/lnreader/lnreader-plugins/Bug?color=red&label=bugs">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|||||||
@@ -192,8 +192,8 @@ if (!ONLY_NEW)
|
|||||||
<rect width="80" height="20" fill="url(#s)"/>
|
<rect width="80" height="20" fill="url(#s)"/>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110">
|
<g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110">
|
||||||
<text aria-hidden="true" x="255" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="390">Plugins</text>
|
<text aria-hidden="true" x="255" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="390">plugins</text>
|
||||||
<text x="255" y="140" transform="scale(.1)" fill="#fff" textLength="390">Plugins</text>
|
<text x="255" y="140" transform="scale(.1)" fill="#fff" textLength="390">plugins</text>
|
||||||
<text aria-hidden="true" x="635" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="210">${totalPlugins}</text>
|
<text aria-hidden="true" x="635" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="210">${totalPlugins}</text>
|
||||||
<text x="635" y="140" transform="scale(.1)" fill="#fff" textLength="210">${totalPlugins}</text>
|
<text x="635" y="140" transform="scale(.1)" fill="#fff" textLength="210">${totalPlugins}</text>
|
||||||
</g>
|
</g>
|
||||||
|
|||||||
Reference in New Issue
Block a user