laporan-generator 2.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/.agents/skills/laporan-generator/SKILL.md +132 -0
  2. package/.agents/skills/laporan-generator/agents/openai.yaml +3 -0
  3. package/.agents/skills/laporan-generator/references/campus-guide.md +120 -0
  4. package/.agents/skills/laporan-generator/references/metadata-schema.md +76 -0
  5. package/.agents/skills/laporan-generator/references/preset-schema.md +79 -0
  6. package/.agents/skills/laporan-generator/references/syntax-cheatsheet.md +122 -0
  7. package/.agents/skills/laporan-generator/references/template-guide.md +100 -0
  8. package/.agents/skills/laporan-generator/references/troubleshooting.md +105 -0
  9. package/.agents/skills/laporan-generator/resources/Makefile +90 -0
  10. package/.agents/skills/laporan-generator/resources/apa.csl +2273 -0
  11. package/.agents/skills/laporan-generator/resources/build-docx.sh +122 -0
  12. package/.agents/skills/laporan-generator/resources/build.sh +102 -0
  13. package/.agents/skills/laporan-generator/resources/chapters/bab1-pendahuluan.md +60 -0
  14. package/.agents/skills/laporan-generator/resources/chapters/bab2-tinjauan-pustaka.md +83 -0
  15. package/.agents/skills/laporan-generator/resources/chapters/bab3-metodologi.md +116 -0
  16. package/.agents/skills/laporan-generator/resources/chapters/bab4-hasil-dan-pembahasan.md +93 -0
  17. package/.agents/skills/laporan-generator/resources/chapters/bab5-penutup.md +27 -0
  18. package/.agents/skills/laporan-generator/resources/cover.md +50 -0
  19. package/.agents/skills/laporan-generator/resources/docx.lua +416 -0
  20. package/.agents/skills/laporan-generator/resources/laporan +464 -0
  21. package/.agents/skills/laporan-generator/resources/laporan.ps1 +552 -0
  22. package/.agents/skills/laporan-generator/resources/logo.jpg +0 -0
  23. package/.agents/skills/laporan-generator/resources/metadata.yml +35 -0
  24. package/.agents/skills/laporan-generator/resources/presets/itb-ta.yml +27 -0
  25. package/.agents/skills/laporan-generator/resources/presets/its-skripsi.yml +26 -0
  26. package/.agents/skills/laporan-generator/resources/presets/skripsi-4433.yml +26 -0
  27. package/.agents/skills/laporan-generator/resources/presets/standard.yml +26 -0
  28. package/.agents/skills/laporan-generator/resources/presets/ugm-skripsi.yml +26 -0
  29. package/.agents/skills/laporan-generator/resources/presets/ui-skripsi.yml +26 -0
  30. package/.agents/skills/laporan-generator/resources/presets/unpad-skripsi.yml +27 -0
  31. package/.agents/skills/laporan-generator/resources/reference.docx +0 -0
  32. package/.agents/skills/laporan-generator/resources/references.bib +115 -0
  33. package/.agents/skills/laporan-generator/resources/scripts/bundle.py +75 -0
  34. package/.agents/skills/laporan-generator/resources/scripts/docx-pagenum.py +192 -0
  35. package/.agents/skills/laporan-generator/resources/scripts/finalize-docx.py +291 -0
  36. package/.agents/skills/laporan-generator/resources/scripts/make-reference-docx.py +670 -0
  37. package/.agents/skills/laporan-generator/resources/scripts/report-doctor.py +211 -0
  38. package/.agents/skills/laporan-generator/resources/scripts/report-stats.py +149 -0
  39. package/.agents/skills/laporan-generator/resources/scripts/scan-preset.py +311 -0
  40. package/.agents/skills/laporan-generator/resources/scripts/setup-deps.ps1 +152 -0
  41. package/.agents/skills/laporan-generator/resources/scripts/setup-deps.sh +113 -0
  42. package/.agents/skills/laporan-generator/resources/scripts/test_scripts.py +128 -0
  43. package/.agents/skills/laporan-generator/resources/scripts/validate-preset.py +166 -0
  44. package/.agents/skills/laporan-generator/resources/template.typ +394 -0
  45. package/.agents/skills/laporan-generator/scripts/build.sh +78 -0
  46. package/.agents/skills/laporan-generator/scripts/bundle.py +75 -0
  47. package/.agents/skills/laporan-generator/scripts/docx-pagenum.py +192 -0
  48. package/.agents/skills/laporan-generator/scripts/finalize-docx.py +152 -0
  49. package/.agents/skills/laporan-generator/scripts/laporan +447 -0
  50. package/.agents/skills/laporan-generator/scripts/laporan.ps1 +529 -0
  51. package/.agents/skills/laporan-generator/scripts/make-reference-docx.py +630 -0
  52. package/.agents/skills/laporan-generator/scripts/report-doctor.py +211 -0
  53. package/.agents/skills/laporan-generator/scripts/report-stats.py +149 -0
  54. package/.agents/skills/laporan-generator/scripts/scan-preset.py +311 -0
  55. package/.agents/skills/laporan-generator/scripts/setup-deps.ps1 +152 -0
  56. package/.agents/skills/laporan-generator/scripts/setup-deps.sh +113 -0
  57. package/.agents/skills/laporan-generator/scripts/test_scripts.py +103 -0
  58. package/.agents/skills/laporan-generator/scripts/validate-preset.py +166 -0
  59. package/.agents/workflows/laporan-generator.md +8 -0
  60. package/LICENSE +21 -0
  61. package/Makefile +90 -0
  62. package/README.md +389 -0
  63. package/apa.csl +2273 -0
  64. package/bin/laporan-generator.js +71 -0
  65. package/build-docx.sh +122 -0
  66. package/build.sh +102 -0
  67. package/chapters/bab1-pendahuluan.md +60 -0
  68. package/chapters/bab2-tinjauan-pustaka.md +83 -0
  69. package/chapters/bab3-metodologi.md +116 -0
  70. package/chapters/bab4-hasil-dan-pembahasan.md +93 -0
  71. package/chapters/bab5-penutup.md +27 -0
  72. package/cover.md +50 -0
  73. package/docs/campus-guide.md +120 -0
  74. package/docs/metadata-schema.md +76 -0
  75. package/docs/preset-schema.md +79 -0
  76. package/docs/syntax-cheatsheet.md +122 -0
  77. package/docs/template-guide.md +100 -0
  78. package/docs/troubleshooting.md +105 -0
  79. package/docx.lua +416 -0
  80. package/laporan +464 -0
  81. package/laporan.ps1 +552 -0
  82. package/lib/init.js +118 -0
  83. package/lib/setup.js +33 -0
  84. package/lib/sync-hosts.js +194 -0
  85. package/lib/uninstall.js +123 -0
  86. package/logo.jpg +0 -0
  87. package/metadata.yml +35 -0
  88. package/package.json +65 -0
  89. package/presets/itb-ta.yml +27 -0
  90. package/presets/its-skripsi.yml +26 -0
  91. package/presets/skripsi-4433.yml +26 -0
  92. package/presets/standard.yml +26 -0
  93. package/presets/ugm-skripsi.yml +26 -0
  94. package/presets/ui-skripsi.yml +26 -0
  95. package/presets/unpad-skripsi.yml +27 -0
  96. package/reference.docx +0 -0
  97. package/references.bib +115 -0
  98. package/scripts/bundle.py +75 -0
  99. package/scripts/docx-pagenum.py +192 -0
  100. package/scripts/finalize-docx.py +291 -0
  101. package/scripts/make-reference-docx.py +670 -0
  102. package/scripts/report-doctor.py +211 -0
  103. package/scripts/report-stats.py +149 -0
  104. package/scripts/scan-preset.py +311 -0
  105. package/scripts/setup-deps.ps1 +152 -0
  106. package/scripts/setup-deps.sh +113 -0
  107. package/scripts/test_scripts.py +128 -0
  108. package/scripts/validate-preset.py +166 -0
  109. package/template.typ +394 -0
@@ -0,0 +1,105 @@
1
+ # Panduan Penanganan Masalah (Troubleshooting)
2
+
3
+ Dokumen ini berisi daftar masalah umum, kode kesalahan, dan solusi langkah-demi-langkah saat menjalankan **Laporan Generator**.
4
+
5
+ ---
6
+
7
+ ## 1. ImageMagick Security Policy Error
8
+
9
+ ### Gejala Error:
10
+ ```text
11
+ convert-im6.q16: attempt to perform an operation not allowed by the security policy 'PDF'
12
+ ```
13
+
14
+ ### Penyebab:
15
+ Kebijakan keamanan default ImageMagick pada beberapa distribusi Linux (seperti Ubuntu/Debian) membatasi pemrosesan berkas PDF/PNG untuk mencegah kerentanan keamanan.
16
+
17
+ ### Solusi:
18
+ 1. Buka file kebijakan ImageMagick dengan hak akses sudo:
19
+ ```bash
20
+ sudo nano /etc/ImageMagick-6/policy.xml
21
+ # atau untuk ImageMagick 7:
22
+ sudo nano /etc/ImageMagick-7/policy.xml
23
+ ```
24
+ 2. Cari baris berikut:
25
+ ```xml
26
+ <policy domain="coder" rights="none" pattern="PDF" />
27
+ ```
28
+ 3. Ubah `rights="none"` menjadi `rights="read|write"`:
29
+ ```xml
30
+ <policy domain="coder" rights="read|write" pattern="PDF" />
31
+ ```
32
+ 4. Simpan file (`Ctrl+O`, `Enter`) lalu keluar (`Ctrl+X`).
33
+
34
+ ---
35
+
36
+ ## 2. Font Tidak Ditemukan (Missing Font)
37
+
38
+ ### Gejala Error:
39
+ ```text
40
+ warning: font 'Nimbus Serif' not found, falling back to default
41
+ warning: failed to resolve font 'Times New Roman'
42
+ ```
43
+
44
+ ### Penyebab:
45
+ Font yang disebutkan di dalam `template.typ` tidak tersedia. Typst hanya memakai font yang dibundel di binary-nya (termasuk Libertinus Serif dan DejaVu Sans Mono) plus font yang terinstall di sistem.
46
+
47
+ ### Solusi:
48
+ 1. Gunakan font bawaan Typst: `Libertinus Serif`, `DejaVu Sans Mono`, atau `New Computer Modern`.
49
+ 2. Jika ingin font sistem lain, pastikan font tersebut sudah terinstall di OS/container.
50
+ 3. Cek daftar font yang tersedia:
51
+ ```bash
52
+ typst fonts
53
+ ```
54
+
55
+ ---
56
+
57
+ ## 3. Syntax Error Raw Typst di cover.md
58
+
59
+ ### Gejala Error:
60
+ ```text
61
+ error: expected `)`, found `]`
62
+ ┌─ cover.md:5:1
63
+ ```
64
+
65
+ ### Penyebab:
66
+ Blok raw Typst di dalam `cover.md` (diapit ``` ```typst ```) memiliki kesalahan sintaks. Contoh yang sering terjadi: `block(align: center)` (tidak valid di Typst, gunakan `align(center)[block(...)]`) atau `ns.first()` (dihapus sejak Typst 0.13, gunakan `ns.at(0)`).
67
+
68
+ ### Solusi:
69
+ Periksa pesan error Typst yang menyebutkan posisi baris, lalu perbaiki blok raw di `cover.md` atau konstruksi template di `template.typ`.
70
+
71
+ ---
72
+
73
+ ## 4. Citasi "Undefined Reference"
74
+
75
+ ### Gejala Error:
76
+ ```text
77
+ [WARNING] Citeproc: citation 'he2016deep' not found
78
+ ```
79
+
80
+ ### Penyebab:
81
+ Di dalam Markdown, sintaks sitasi tidak dikenali atau citekey tidak ada di `references.bib`.
82
+
83
+ ### Solusi:
84
+ Gunakan sintaks sitasi Pandoc `[@citekey]` atau `@citekey` di file Markdown:
85
+ - **Salah**: `Menurut \cite{he2016deep}...`
86
+ - **Benar**: `Menurut [@he2016deep]...`
87
+
88
+ ---
89
+
90
+ ## 5. Permission Denied pada Laporan.pdf (Docker Volume)
91
+
92
+ ### Gejala Error:
93
+ ```text
94
+ cannot create Laporan.pdf: Permission denied
95
+ ```
96
+
97
+ ### Penyebab:
98
+ Container Docker dijalankan sebagai user `root` sehingga menghalangi user lokal untuk mengubah atau menghapus file output.
99
+
100
+ ### Solusi:
101
+ Gunakan perintah `docker compose` yang sudah dikonfigurasi dengan variabel `UID/GID` lokal:
102
+ ```bash
103
+ docker compose run --rm laporan-generator
104
+ ```
105
+ *(File `docker-compose.yml` pada project ini secara otomatis memetakan `user: "${UID:-1000}:${GID:-1000}"`)*.
@@ -0,0 +1,90 @@
1
+ .PHONY: build clean lint-deps watch docx html crossref test docker-build init view reference-docx
2
+
3
+ build:
4
+ ./build.sh
5
+
6
+ init:
7
+ @git config core.hooksPath .githooks
8
+ @echo "[OK] Git pre-commit hook berhasil diaktifkan!"
9
+
10
+ view:
11
+ @if [ -f Laporan.pdf ]; then \
12
+ command -v xdg-open >/dev/null 2>&1 && xdg-open Laporan.pdf || open Laporan.pdf || echo "Laporan.pdf ada di: $(shell pwd)/Laporan.pdf"; \
13
+ else \
14
+ echo "ERROR: Laporan.pdf belum dibuat. Jalankan 'make build' terlebih dahulu."; \
15
+ exit 1; \
16
+ fi
17
+
18
+ clean:
19
+ rm -f Laporan.pdf Laporan.docx Laporan.html
20
+ rm -rf tmp/
21
+
22
+ lint-deps:
23
+ @echo "Checking dependencies..."
24
+ @command -v pandoc >/dev/null 2>&1 || { echo "ERROR: pandoc not found"; exit 1; }
25
+ @command -v typst >/dev/null 2>&1 || { echo "ERROR: typst not found"; exit 1; }
26
+ @command -v magick >/dev/null 2>&1 || command -v convert >/dev/null 2>&1 || { echo "ERROR: ImageMagick (magick/convert) not found"; exit 1; }
27
+ @echo "All dependencies OK."
28
+
29
+ watch:
30
+ @command -v inotifywait >/dev/null 2>&1 || { echo "ERROR: inotifywait not found. Install inotify-tools."; exit 1; }
31
+ @echo "Watching for changes... (Ctrl+C to stop)"
32
+ @while true; do \
33
+ inotifywait -r -e modify -e create -e delete . \
34
+ --exclude '(Laporan\.pdf|tmp/|\.git/|\.pdf)' 2>/dev/null; \
35
+ ./build.sh; \
36
+ done
37
+
38
+ docx:
39
+ ./build-docx.sh
40
+
41
+
42
+ reference-docx:
43
+ @command -v pandoc >/dev/null 2>&1 || { echo "ERROR: pandoc not found"; exit 1; }
44
+ @command -v python3 >/dev/null 2>&1 || { echo "ERROR: python3 not found"; exit 1; }
45
+ @mkdir -p tmp
46
+ pandoc --print-default-data-file reference.docx > tmp/ref-default.docx
47
+ python3 scripts/make-reference-docx.py tmp/ref-default.docx reference.docx
48
+ @rm -f tmp/ref-default.docx
49
+
50
+ html:
51
+ @if [ ! -d chapters ]; then \
52
+ echo "ERROR: Direktori chapters/ tidak ditemukan."; \
53
+ exit 1; \
54
+ fi; \
55
+ PRESET=$$(grep -E '^[[:space:]]*(preset|margin_preset):' metadata.yml 2>/dev/null | head -n 1 | cut -d: -f2- | tr -d '\"'\''\r\n '); \
56
+ PRESET_FILE=""; \
57
+ if [ -n "$$PRESET" ] && [ -f "presets/$${PRESET}.yml" ]; then \
58
+ PRESET_FILE="--metadata-file=presets/$${PRESET}.yml"; \
59
+ elif [ -f "presets/standard.yml" ]; then \
60
+ PRESET_FILE="--metadata-file=presets/standard.yml"; \
61
+ fi; \
62
+ pandoc chapters/bab*.md \
63
+ $$PRESET_FILE \
64
+ --metadata-file=metadata.yml \
65
+ --citeproc --bibliography=references.bib \
66
+ --csl=apa.csl \
67
+ --metadata=reference-section-title="DAFTAR PUSTAKA" \
68
+ --top-level-division=chapter \
69
+ --standalone --toc \
70
+ -o Laporan.html 2>&1
71
+
72
+ crossref:
73
+ @command -v pandoc-crossref >/dev/null 2>&1 || { \
74
+ echo "ERROR: pandoc-crossref not found."; \
75
+ echo "Install: https://github.com/lierdakil/pandoc-crossref"; \
76
+ exit 1; \
77
+ }
78
+ CITEPROC_OPTS="--filter pandoc-crossref" ./build.sh
79
+
80
+ test:
81
+ ./test.sh
82
+
83
+ docker-build:
84
+ docker compose build
85
+
86
+ docker-run:
87
+ docker compose run --rm laporan-generator
88
+
89
+ docker-watch:
90
+ docker compose run --rm watch