mirror of
https://github.com/jackyzha0/hugo-obsidian.git
synced 2024-06-14 11:42:35 +03:00
fix ignore files not parsing config
This commit is contained in:
parent
3b5ed071b3
commit
edb1bccae7
@ -1,45 +0,0 @@
|
|||||||
# THIS FILE WAS GENERATED USING github.com/jackyzha0/hugo-obsidian
|
|
||||||
# DO NOT EDIT
|
|
||||||
README:
|
|
||||||
title: Untitled Page
|
|
||||||
content: |
|
|
||||||
# Obsidian Link Scrapper
|
|
||||||
Used by [Quartz](https://github.com/jackyzha0/quartz)
|
|
||||||
|
|
||||||
This repository comes to you in two parts.
|
|
||||||
|
|
||||||
1. GitHub Action (scrapes links into a `.yml` file)
|
|
||||||
2. Hugo Partial (turns `.yml` file into graphs and tables)
|
|
||||||
|
|
||||||
## GitHub Action
|
|
||||||
GitHub action and binary to scrape [Obsidian](http://obsidian.md/) vault for links and exposes them as a `.yml` file for easy consumption by [Hugo](https://gohugo.io/).
|
|
||||||
### Example Usage (Binary)
|
|
||||||
Read Markdown from the `/content` folder and place the resulting `linkIndex.yaml` (and `contentIndex.yaml` if the `index` flag is enabled) into `/data`
|
|
||||||
|
|
||||||
```shell
|
|
||||||
# Installation
|
|
||||||
go install github.com/jackyzha0/hugo-obsidian
|
|
||||||
|
|
||||||
# Run
|
|
||||||
hugo-obsidian -input=content -output=data -index=true
|
|
||||||
```
|
|
||||||
|
|
||||||
### Example Usage (GitHub Action)
|
|
||||||
|
|
||||||
Add 'Build Link Index' as a build step in your workflow file (e.g. `.github/workflows/deploy.yaml`)
|
|
||||||
```yaml
|
|
||||||
...
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
deploy:
|
|
||||||
runs-on: ubuntu-18.04
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- name: Build Link Index
|
|
||||||
uses: jackyzha0/hugo-obsidian@v2.1
|
|
||||||
with:
|
|
||||||
input: content # input folder
|
|
||||||
output: data # output folder
|
|
||||||
index: true # whether to index content
|
|
||||||
...
|
|
||||||
```
|
|
232
linkIndex.yaml
232
linkIndex.yaml
@ -1,6 +1,232 @@
|
|||||||
# THIS FILE WAS GENERATED USING github.com/jackyzha0/hugo-obsidian
|
# THIS FILE WAS GENERATED USING github.com/jackyzha0/hugo-obsidian
|
||||||
# DO NOT EDIT
|
# DO NOT EDIT
|
||||||
index:
|
index:
|
||||||
links: {}
|
links:
|
||||||
backlinks: {}
|
/:
|
||||||
links: []
|
- source: /
|
||||||
|
target: /notes/setup
|
||||||
|
text: Setup your own digital garden using Quartz
|
||||||
|
- source: /
|
||||||
|
target: /moc/showcase
|
||||||
|
text: community digital gardens
|
||||||
|
- source: /
|
||||||
|
target: /notes/philosophy
|
||||||
|
text: why I made Quartz
|
||||||
|
- source: /
|
||||||
|
target: /notes
|
||||||
|
text: All Notes
|
||||||
|
- source: /
|
||||||
|
target: /tags/setup
|
||||||
|
text: Setup-related Notes
|
||||||
|
- source: /
|
||||||
|
target: /notes/troubleshooting
|
||||||
|
text: Troubleshooting and FAQ
|
||||||
|
/notes/Obsidian:
|
||||||
|
- source: /notes/Obsidian
|
||||||
|
target: /notes/setup
|
||||||
|
text: setup
|
||||||
|
/notes/config:
|
||||||
|
- source: /notes/config
|
||||||
|
target: /notes/troubleshooting
|
||||||
|
text: FAQ and Troubleshooting guide
|
||||||
|
/notes/editing:
|
||||||
|
- source: /notes/editing
|
||||||
|
target: /notes/ignore-notes
|
||||||
|
text: Excluding pages from being published
|
||||||
|
- source: /notes/editing
|
||||||
|
target: /notes/preview-changes
|
||||||
|
text: Preview Quartz Changes
|
||||||
|
- source: /notes/editing
|
||||||
|
target: /notes/hosting
|
||||||
|
text: Hosting Quartz online!
|
||||||
|
- source: /notes/editing
|
||||||
|
target: /notes/troubleshooting
|
||||||
|
text: FAQ and Troubleshooting guide
|
||||||
|
/notes/hosting:
|
||||||
|
- source: /notes/hosting
|
||||||
|
target: /notes/config
|
||||||
|
text: Customizing Quartz
|
||||||
|
- source: /notes/hosting
|
||||||
|
target: /notes/troubleshooting
|
||||||
|
text: FAQ and Troubleshooting guide
|
||||||
|
/notes/setup:
|
||||||
|
- source: /notes/setup
|
||||||
|
target: /notes/editing
|
||||||
|
text: Editing Notes in Quartz
|
||||||
|
- source: /notes/setup
|
||||||
|
target: /notes/troubleshooting
|
||||||
|
text: FAQ and Troubleshooting guide
|
||||||
|
/notes/troubleshooting:
|
||||||
|
- source: /notes/troubleshooting
|
||||||
|
target: /notes/ignore-notes
|
||||||
|
text: excluding pages from being published
|
||||||
|
- source: /notes/troubleshooting
|
||||||
|
target: /notes/hosting
|
||||||
|
text: hosting
|
||||||
|
- source: /notes/troubleshooting
|
||||||
|
target: /notes/Obsidian
|
||||||
|
text: Obsidian
|
||||||
|
- source: /notes/troubleshooting
|
||||||
|
target: /notes/editing
|
||||||
|
text: the 'how to edit' guide
|
||||||
|
- source: /notes/troubleshooting
|
||||||
|
target: /notes/hosting
|
||||||
|
text: the hosting guide
|
||||||
|
- source: /notes/troubleshooting
|
||||||
|
target: /notes/config
|
||||||
|
text: customization guide
|
||||||
|
- source: /notes/troubleshooting
|
||||||
|
target: /notes/editing
|
||||||
|
text: local editing
|
||||||
|
backlinks:
|
||||||
|
/moc/showcase:
|
||||||
|
- source: /
|
||||||
|
target: /moc/showcase
|
||||||
|
text: community digital gardens
|
||||||
|
/notes:
|
||||||
|
- source: /
|
||||||
|
target: /notes
|
||||||
|
text: All Notes
|
||||||
|
/notes/Obsidian:
|
||||||
|
- source: /notes/troubleshooting
|
||||||
|
target: /notes/Obsidian
|
||||||
|
text: Obsidian
|
||||||
|
/notes/config:
|
||||||
|
- source: /notes/hosting
|
||||||
|
target: /notes/config
|
||||||
|
text: Customizing Quartz
|
||||||
|
- source: /notes/troubleshooting
|
||||||
|
target: /notes/config
|
||||||
|
text: customization guide
|
||||||
|
/notes/editing:
|
||||||
|
- source: /notes/setup
|
||||||
|
target: /notes/editing
|
||||||
|
text: Editing Notes in Quartz
|
||||||
|
- source: /notes/troubleshooting
|
||||||
|
target: /notes/editing
|
||||||
|
text: the 'how to edit' guide
|
||||||
|
- source: /notes/troubleshooting
|
||||||
|
target: /notes/editing
|
||||||
|
text: local editing
|
||||||
|
/notes/hosting:
|
||||||
|
- source: /notes/editing
|
||||||
|
target: /notes/hosting
|
||||||
|
text: Hosting Quartz online!
|
||||||
|
- source: /notes/troubleshooting
|
||||||
|
target: /notes/hosting
|
||||||
|
text: hosting
|
||||||
|
- source: /notes/troubleshooting
|
||||||
|
target: /notes/hosting
|
||||||
|
text: the hosting guide
|
||||||
|
/notes/ignore-notes:
|
||||||
|
- source: /notes/editing
|
||||||
|
target: /notes/ignore-notes
|
||||||
|
text: Excluding pages from being published
|
||||||
|
- source: /notes/troubleshooting
|
||||||
|
target: /notes/ignore-notes
|
||||||
|
text: excluding pages from being published
|
||||||
|
/notes/philosophy:
|
||||||
|
- source: /
|
||||||
|
target: /notes/philosophy
|
||||||
|
text: why I made Quartz
|
||||||
|
/notes/preview-changes:
|
||||||
|
- source: /notes/editing
|
||||||
|
target: /notes/preview-changes
|
||||||
|
text: Preview Quartz Changes
|
||||||
|
/notes/setup:
|
||||||
|
- source: /
|
||||||
|
target: /notes/setup
|
||||||
|
text: Setup your own digital garden using Quartz
|
||||||
|
- source: /notes/Obsidian
|
||||||
|
target: /notes/setup
|
||||||
|
text: setup
|
||||||
|
/notes/troubleshooting:
|
||||||
|
- source: /
|
||||||
|
target: /notes/troubleshooting
|
||||||
|
text: Troubleshooting and FAQ
|
||||||
|
- source: /notes/config
|
||||||
|
target: /notes/troubleshooting
|
||||||
|
text: FAQ and Troubleshooting guide
|
||||||
|
- source: /notes/editing
|
||||||
|
target: /notes/troubleshooting
|
||||||
|
text: FAQ and Troubleshooting guide
|
||||||
|
- source: /notes/hosting
|
||||||
|
target: /notes/troubleshooting
|
||||||
|
text: FAQ and Troubleshooting guide
|
||||||
|
- source: /notes/setup
|
||||||
|
target: /notes/troubleshooting
|
||||||
|
text: FAQ and Troubleshooting guide
|
||||||
|
/tags/setup:
|
||||||
|
- source: /
|
||||||
|
target: /tags/setup
|
||||||
|
text: Setup-related Notes
|
||||||
|
links:
|
||||||
|
- source: /
|
||||||
|
target: /notes/setup
|
||||||
|
text: Setup your own digital garden using Quartz
|
||||||
|
- source: /
|
||||||
|
target: /moc/showcase
|
||||||
|
text: community digital gardens
|
||||||
|
- source: /
|
||||||
|
target: /notes/philosophy
|
||||||
|
text: why I made Quartz
|
||||||
|
- source: /
|
||||||
|
target: /notes
|
||||||
|
text: All Notes
|
||||||
|
- source: /
|
||||||
|
target: /tags/setup
|
||||||
|
text: Setup-related Notes
|
||||||
|
- source: /
|
||||||
|
target: /notes/troubleshooting
|
||||||
|
text: Troubleshooting and FAQ
|
||||||
|
- source: /notes/Obsidian
|
||||||
|
target: /notes/setup
|
||||||
|
text: setup
|
||||||
|
- source: /notes/config
|
||||||
|
target: /notes/troubleshooting
|
||||||
|
text: FAQ and Troubleshooting guide
|
||||||
|
- source: /notes/editing
|
||||||
|
target: /notes/ignore-notes
|
||||||
|
text: Excluding pages from being published
|
||||||
|
- source: /notes/editing
|
||||||
|
target: /notes/preview-changes
|
||||||
|
text: Preview Quartz Changes
|
||||||
|
- source: /notes/editing
|
||||||
|
target: /notes/hosting
|
||||||
|
text: Hosting Quartz online!
|
||||||
|
- source: /notes/editing
|
||||||
|
target: /notes/troubleshooting
|
||||||
|
text: FAQ and Troubleshooting guide
|
||||||
|
- source: /notes/hosting
|
||||||
|
target: /notes/config
|
||||||
|
text: Customizing Quartz
|
||||||
|
- source: /notes/hosting
|
||||||
|
target: /notes/troubleshooting
|
||||||
|
text: FAQ and Troubleshooting guide
|
||||||
|
- source: /notes/setup
|
||||||
|
target: /notes/editing
|
||||||
|
text: Editing Notes in Quartz
|
||||||
|
- source: /notes/setup
|
||||||
|
target: /notes/troubleshooting
|
||||||
|
text: FAQ and Troubleshooting guide
|
||||||
|
- source: /notes/troubleshooting
|
||||||
|
target: /notes/ignore-notes
|
||||||
|
text: excluding pages from being published
|
||||||
|
- source: /notes/troubleshooting
|
||||||
|
target: /notes/hosting
|
||||||
|
text: hosting
|
||||||
|
- source: /notes/troubleshooting
|
||||||
|
target: /notes/Obsidian
|
||||||
|
text: Obsidian
|
||||||
|
- source: /notes/troubleshooting
|
||||||
|
target: /notes/editing
|
||||||
|
text: the 'how to edit' guide
|
||||||
|
- source: /notes/troubleshooting
|
||||||
|
target: /notes/hosting
|
||||||
|
text: the hosting guide
|
||||||
|
- source: /notes/troubleshooting
|
||||||
|
target: /notes/config
|
||||||
|
text: customization guide
|
||||||
|
- source: /notes/troubleshooting
|
||||||
|
target: /notes/editing
|
||||||
|
text: local editing
|
||||||
|
35
main.go
35
main.go
@ -2,8 +2,12 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"flag"
|
"flag"
|
||||||
|
"fmt"
|
||||||
|
"github.com/BurntSushi/toml"
|
||||||
wikilink "github.com/abhinav/goldmark-wikilink"
|
wikilink "github.com/abhinav/goldmark-wikilink"
|
||||||
"github.com/yuin/goldmark"
|
"github.com/yuin/goldmark"
|
||||||
|
"io/ioutil"
|
||||||
|
"path/filepath"
|
||||||
)
|
)
|
||||||
|
|
||||||
var md goldmark.Markdown
|
var md goldmark.Markdown
|
||||||
@ -33,20 +37,43 @@ type Content struct {
|
|||||||
|
|
||||||
type ContentIndex = map[string]Content
|
type ContentIndex = map[string]Content
|
||||||
|
|
||||||
type IgnoredFiles struct {
|
type ConfigTOML struct {
|
||||||
|
IgnoredFiles []string `toml:"ignoreFiles"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func getIgnoredFiles() {
|
func getIgnoredFiles(base string) (res map[string]struct{}) {
|
||||||
|
res = make(map[string]struct{})
|
||||||
|
|
||||||
|
source, err := ioutil.ReadFile(base + "/config.toml")
|
||||||
|
if err != nil {
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
var config ConfigTOML
|
||||||
|
if _, err := toml.Decode(string(source), &config); err != nil {
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, glb := range config.IgnoredFiles {
|
||||||
|
matches, _ := filepath.Glob(base + glb)
|
||||||
|
for _, match := range matches {
|
||||||
|
res[match] = struct{}{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Printf("%v\n", res)
|
||||||
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
in := flag.String("input", ".", "Input Directory")
|
in := flag.String("input", ".", "Input Directory")
|
||||||
out := flag.String("output", ".", "Output Directory")
|
out := flag.String("output", ".", "Output Directory")
|
||||||
|
root := flag.String("root", "..", "Root Directory (for config parsing)")
|
||||||
index := flag.Bool("index", false, "Whether to index the content")
|
index := flag.Bool("index", false, "Whether to index the content")
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
l, i := walk(*in, ".md", *index)
|
|
||||||
|
ignoreBlobs := getIgnoredFiles(*root)
|
||||||
|
l, i := walk(*in, ".md", *index, ignoreBlobs)
|
||||||
f := filter(l)
|
f := filter(l)
|
||||||
err := write(f, i, *index, *out)
|
err := write(f, i, *index, *out)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
6
walk.go
6
walk.go
@ -10,7 +10,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// recursively walk directory and return all files with given extension
|
// recursively walk directory and return all files with given extension
|
||||||
func walk(root, ext string, index bool) (res []Link, i ContentIndex) {
|
func walk(root, ext string, index bool, ignorePaths map[string]struct{}) (res []Link, i ContentIndex) {
|
||||||
fmt.Printf("Scraping %s\n", root)
|
fmt.Printf("Scraping %s\n", root)
|
||||||
i = make(ContentIndex)
|
i = make(ContentIndex)
|
||||||
|
|
||||||
@ -22,7 +22,9 @@ func walk(root, ext string, index bool) (res []Link, i ContentIndex) {
|
|||||||
if e != nil {
|
if e != nil {
|
||||||
return e
|
return e
|
||||||
}
|
}
|
||||||
if filepath.Ext(d.Name()) == ext {
|
if _, ignored := ignorePaths[s]; ignored {
|
||||||
|
fmt.Printf("[Ignored] %s\n", d.Name())
|
||||||
|
} else if filepath.Ext(d.Name()) == ext {
|
||||||
res = append(res, parse(s, root)...)
|
res = append(res, parse(s, root)...)
|
||||||
if index {
|
if index {
|
||||||
text := getText(s)
|
text := getText(s)
|
||||||
|
Loading…
Reference in New Issue
Block a user