Compare commits

...

305 Commits

Author SHA1 Message Date
hugoreleaser 3fa8bb8318 releaser: Bump versions for release of 0.111.0
[ci skip]
2023-03-01 20:57:44 +00:00
Bjørn Erik Pedersen db9f74d24d Revert "build(deps): bump gocloud.dev from 0.24.0 to 0.28.0 (#10610)"
This reverts commit c3a59a7d5a.

See #10770
2023-03-01 21:55:47 +01:00
Bjørn Erik Pedersen 60e6fa798f build: Bump build images
To fix changed Shuffle behaviour on Go 1.20.
2023-03-01 21:32:12 +01:00
Bjørn Erik Pedersen 7e51ba03ca build: Update Linux ARM build image 2023-03-01 18:55:22 +01:00
Joe Mooring 66f94b4945 tpl/tplimpl: Remove the Google News internal template
This was deprecated, with a warning message, on 21 Nov 2021.

Reference #9190
2023-03-01 18:11:44 +01:00
Khayyam Saleem c0d15a2897 strings: fix Truncate behavior for formatted html
Before this fix, strings.Truncate would erroneously re-include
attributes from the opening tag in the closing tag when closing
formatted html, due to a bug in how tagnames were extracted from the
regex capture group for html tags used in `truncate.go`. This change
ensures that only the tagname is retained and all attributes are discarded
when storing the tags for closing them later.

Fixes #10399
2023-03-01 17:59:50 +01:00
Bjørn Erik Pedersen 2a61910e82 tpl/strings: Adjust benchmark 2023-03-01 17:59:02 +01:00
Bjørn Erik Pedersen 079d1b6540 tpl/strings: Add BenchmarkTruncate 2023-03-01 17:51:09 +01:00
Bjørn Erik Pedersen a56b9071db cods: Regen docs helper 2023-03-01 16:35:23 +01:00
Bjørn Erik Pedersen 5c317c55e7 Move the Related doc counter to prevent a race
Closes #10768
2023-03-01 16:28:43 +01:00
Bjørn Erik Pedersen a669467d98 Misc ioutil deprecation adjustments
To make the tests pass.

* Replace io => os.ReadFile in magefile.go
* Adjust failing image test vs fs.DirEntry
* Adjust poller test

See #10732
2023-03-01 16:28:43 +01:00
Oleksandr Redko d453c12742 Replace deprecated ioutil with io and os
https://pkg.go.dev/io/ioutil is deprecated since Go 1.16.
2023-03-01 16:28:43 +01:00
Bjørn Erik Pedersen 97b010f521 Merge commit '336622d5e7afd9334cd2de7150d4f16bdf7c24f9' 2023-03-01 11:56:07 +01:00
Bjørn Erik Pedersen 336622d5e7 Squashed 'docs/' changes from 36dd5483f..6e32d0591
6e32d0591 Update quick-start.md (#1984)
eddd25ff4 Mermaid: reflect latest docs specifications
b2a23b6f5 Mermaid: switch to ESM import
43d83c131 Update index.md

git-subtree-dir: docs
git-subtree-split: 6e32d05910
2023-03-01 11:56:07 +01:00
dependabot[bot] 4d36b99a4e build(deps): bump github.com/tdewolff/parse/v2 from 2.6.4 to 2.6.5
Bumps [github.com/tdewolff/parse/v2](https://github.com/tdewolff/parse) from 2.6.4 to 2.6.5.
- [Release notes](https://github.com/tdewolff/parse/releases)
- [Commits](https://github.com/tdewolff/parse/compare/v2.6.4...v2.6.5)

---
updated-dependencies:
- dependency-name: github.com/tdewolff/parse/v2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-01 09:28:29 +01:00
dependabot[bot] 807237bc0e build(deps): bump github.com/mattn/go-isatty from 0.0.16 to 0.0.17
Bumps [github.com/mattn/go-isatty](https://github.com/mattn/go-isatty) from 0.0.16 to 0.0.17.
- [Release notes](https://github.com/mattn/go-isatty/releases)
- [Commits](https://github.com/mattn/go-isatty/compare/v0.0.16...v0.0.17)

---
updated-dependencies:
- dependency-name: github.com/mattn/go-isatty
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-27 11:56:40 +01:00
dependabot[bot] 79b03b3f79 build(deps): bump golang.org/x/image
Bumps [golang.org/x/image](https://github.com/golang/image) from 0.0.0-20211028202545-6944b10bf410 to 0.5.0.
- [Release notes](https://github.com/golang/image/releases)
- [Commits](https://github.com/golang/image/commits/v0.5.0)

---
updated-dependencies:
- dependency-name: golang.org/x/image
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-27 11:56:09 +01:00
Oleksandr Redko e31441031d Remove unused temp directory 2023-02-27 09:21:16 +01:00
WaltCuller 39cc3a2a7e exif: Return the proper exposure time value in some special cases
Return value in float64 if exposure time is int or greater than 1, otherwise return in fraction.

Fixes #10738
2023-02-26 11:19:49 +01:00
Bjørn Erik Pedersen ce524d0b5e Add a page template func
Fixes #9339
2023-02-25 19:53:18 +01:00
Joe Mooring 2662faf61f dartsass: Import CSS without extension at compile time
Applicable to Dart Sass only:

- Sass imports with the .css extension indicate a plain CSS @import.
- Sass imports without the .css extension are imported at compile time.

Fixes #10592
2023-02-24 15:19:21 +01:00
Bjørn Erik Pedersen 271318ad78 Split parse and render for Goldmark
This also speeds up situations where you only need the fragments/toc and not the rendered content, e.g. Related
with fragments type indexing:

```bash

name            old time/op    new time/op    delta
RelatedSite-10    12.3ms ± 2%    10.7ms ± 1%  -12.95%  (p=0.029 n=4+4)

name            old alloc/op   new alloc/op   delta
RelatedSite-10    38.6MB ± 0%    38.2MB ± 0%   -1.08%  (p=0.029 n=4+4)

name            old allocs/op  new allocs/op  delta
RelatedSite-10      117k ± 0%      115k ± 0%   -1.36%  (p=0.029 n=4+4)
```

Fixes #10750
2023-02-24 10:40:06 +01:00
Bjørn Erik Pedersen e442a63bb7 related: Add config option cardinalityThreshold
Fixes #10744
2023-02-23 17:06:22 +01:00
Bjørn Erik Pedersen d5601e8391 docs: Another fix related docs example 2023-02-23 11:09:55 +01:00
Bjørn Erik Pedersen cedd04db31 docs: Fix related docs example 2023-02-23 10:54:30 +01:00
dependabot[bot] 4bf91b9759 build(deps): bump golang.org/x/net from 0.4.0 to 0.7.0
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.4.0 to 0.7.0.
- [Release notes](https://github.com/golang/net/releases)
- [Commits](https://github.com/golang/net/compare/v0.4.0...v0.7.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-23 09:58:21 +01:00
Bjørn Erik Pedersen ae48507d66 Fix shortcode error when closing without .Inner
Fixes #10672
2023-02-23 09:36:14 +01:00
Bjørn Erik Pedersen 7d78a498e1 Throw an error when shortcode is expected to be closed
Fixes #10675
2023-02-23 09:36:14 +01:00
Bjørn Erik Pedersen 0dbeac80cd Add some shortcode testcases
Closes #10671
2023-02-23 09:36:14 +01:00
Bjørn Erik Pedersen b99d073caf sass: Remove some unused leftover code 2023-02-23 07:57:53 +01:00
Joe Mooring e965cb679c resources/sass: Remove debug statements
Closes #10470
2023-02-23 07:53:46 +01:00
Bjørn Erik Pedersen cf591b7c0c Squashed 'docs/' changes from 1214f6ffb..36dd5483f
36dd5483f Clarify placement of 404 template
6f0a5f3f0 Update urls.Parse.md
c8070e578 Remove reference to Internet Explorer conditional comments (#1975)
3e3458f09 Describe default source map behavior for js.build (#1974)
08c9ed09a Simplify ordinal abbreviation example... (#1970)
b5aa8d598 docs(markdownify): mention a context limitation (#1968)
596af47f5 Fixing typo in configuration.md doc (#1966)
c47cadfcb Fix `hardWraps` config spelling (#1964)
5739a174e Add detail to tabWidth highlighting option
73a4bcd1f doc: Add hugo-lyra search engine (#1959)
6cc9ebdfd Update uniq function example (#1963)
686a65cf6 Update uniq.md
096f794d0 Update uniq.md
914ca0c38 remove `version` from SVG example (#1957)
58347d41f Update theme
7c806371f Fix 404 error for CloudCannon community learn docs (#1955)
58e42b03d Update theme
fd0385ee2 Update theme
513b7a43a Update findRe.md
4d39137ef Update configuration.md
b1c3b58a7 Update configuration.md
f827cce8d Update configuration.md
3d72ed8fb netlify: Hugo 0.110.0
e6f969c87 Merge branch 'feat/config-rename'
4c0b5a0b5 dos: Regen CLI docs
05d9db705 docs: Regen docshelper
f73bdb6e5 Merge commit 'ef6f101e75256c3bb88a6f1f3b5c1273bf8d7382'
e83141f88 Format config
4cadf795e Rename config.toml -> hugo.toml
c8aa8617f Move config/_default/config.toml -> config.toml
2943c031a Add fill HTTP Response info into .Data in resources.GetRemote

git-subtree-dir: docs
git-subtree-split: 36dd5483fb
2023-02-23 07:52:04 +01:00
Bjørn Erik Pedersen 7e539cb398 Merge commit 'cf591b7c0c598d34896709db6d28598da37e3ff6' 2023-02-23 07:52:04 +01:00
Bjørn Erik Pedersen 586fea0de6 page: Move the cache double check right after the lock 2023-02-22 21:24:41 +01:00
Bjørn Erik Pedersen fa2d7adf10 page: Add some concurrency to the building of the related page index
But only in the case where we know that we will need to access the Page fragments/tableofcontents.

In normal situations this will spread naturally across the CPU cores, but not in the situation where
`site.RegularPages.Related` gets called as part of e.g. the single template.

```bash
name            old time/op    new time/op    delta
RelatedSite-10    18.0ms ± 2%    11.9ms ± 1%  -34.17%  (p=0.029 n=4+4)

name            old alloc/op   new alloc/op   delta
RelatedSite-10    38.6MB ± 0%    38.6MB ± 0%     ~     (p=0.114 n=4+4)

name            old allocs/op  new allocs/op  delta
RelatedSite-10      117k ± 0%      117k ± 0%   +0.23%  (p=0.029 n=4+4)
```

See #10711
2023-02-22 20:37:41 +01:00
Bjørn Erik Pedersen 4346987faf related: Adjust benchmark 2023-02-22 19:17:22 +01:00
Aaron Hooper 2dad13c0e4 create: Fix typo in error message 2023-02-22 14:14:49 +01:00
Bjørn Erik Pedersen ecf3cd514f tocss: Simplify the hugo:vars type handling
Instead of maintaing a list of all CSS units and functions this commit:

* Uses 3 regexps to detect typed CSS values (e.g. `24px`) + properly handle numeric Go types.
* These regexps may have some false positives -- e.g. strings that needs to be quoted.
* For that rare case, you can mark the string with e.g. `"32xxx" | css.Quoted`
* For the opposite case:  `"32" | css.Unquoted`

Updates #10632
2023-02-22 13:26:10 +01:00
AcClassic a1a9c08b5f resource_transformers/tocss: Fixed hugo:vars casting
Variables passed via the hugo:vars function where passed as type string.
This caused problems when using the variables in sass functions because
these expect a specific type. Now we check if the passed variables have
to be quoted and therefore are of type string or if they should not be
quoted and let the type interpretation up to the sass compiler.

Fixes #10632
2023-02-22 13:26:10 +01:00
Bjørn Erik Pedersen 6abd15e781 Adjust tests for GO 1.20
Updates #10691
2023-02-22 11:26:52 +01:00
Bjørn Erik Pedersen 094135ff96 tpl/internal: Sync Go template src to Go 1.20
Updates #10691
2023-02-22 11:26:52 +01:00
Bjørn Erik Pedersen 4801e2e8ee build: Update to Go 1.20
Updates #10691
2023-02-22 11:26:52 +01:00
Bjørn Erik Pedersen 90da7664bf Add page fragments support to Related
The main topic of this commit is that you can now index fragments (content heading identifiers) when calling `.Related`.

You can do this by:

* Configure one or more indices with type `fragments`
* The name of those index configurations maps to an (optional) front matter slice with fragment references. This allows you to link
page<->fragment and page<->page.
* This also will index all the fragments (heading identifiers) of the pages.

It's also possible to use type `fragments` indices in shortcode, e.g.:

```
{{ $related := site.RegularPages.Related .Page }}
```

But, and this is important, you need to include the shortcode using the `{{<` delimiter. Not doing so will create infinite loops and timeouts.

This commit also:

* Adds two new methods to Page: Fragments (can also be used to build ToC) and HeadingsFiltered (this is only used in Related Content with
index type `fragments` and `enableFilter` set to true.
* Consolidates all `.Related*` methods into one, which takes either a `Page` or an options map as its only argument.
* Add `context.Context` to all of the content related Page API. Turns out it wasn't strictly needed for this particular feature, but it will
soon become usefil, e.g. in #9339.

Closes #10711
Updates #9339
Updates #10725
2023-02-21 17:56:41 +01:00
Bjørn Erik Pedersen 0afec0a9f4 related: Adjust benchmark
To make it easier to compare.
2023-02-21 11:06:29 +01:00
Bjørn Erik Pedersen 28540ed131 related: Add benchmark 2023-02-21 11:00:43 +01:00
Bjørn Erik Pedersen 9af78d1100 tpl/collections: Improve error message in Index 2023-02-08 10:22:20 +01:00
Bjørn Erik Pedersen d33a7ebcc1 Make the HTML collector parsing more robust
Most notably better handling self-closing elements

Closes #10698
2023-02-07 09:11:02 +01:00
Bjørn Erik Pedersen 2a364cca64 Revert "build(deps): bump github.com/getkin/kin-openapi from 0.110.0 to 0.114.0"
This reverts commit 87c78bd3e9.

There seem to be some breaking changes in the above that needs to be looked into.
2023-02-05 20:34:35 +01:00
Joe Mooring 3fb2417cb7 deps: Upgrade github.com/yuin/goldmark v1.5.3 => v1.5.4
Closes #10661
2023-02-05 20:09:06 +01:00
Bjørn Erik Pedersen fce0890484 tpl/strings: Add strings.ContainsNonSpace 2023-02-05 20:08:44 +01:00
dependabot[bot] 87c78bd3e9 build(deps): bump github.com/getkin/kin-openapi from 0.110.0 to 0.114.0
Bumps [github.com/getkin/kin-openapi](https://github.com/getkin/kin-openapi) from 0.110.0 to 0.114.0.
- [Release notes](https://github.com/getkin/kin-openapi/releases)
- [Commits](https://github.com/getkin/kin-openapi/compare/v0.110.0...v0.114.0)

---
updated-dependencies:
- dependency-name: github.com/getkin/kin-openapi
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-05 20:07:15 +01:00
Joe Mooring 69c369e114 deps: Upgrade github.com/alecthomas/chroma v2.4.0 => v2.5.0
Fixes #9890
Fixes #10692
2023-02-05 20:06:51 +01:00
Khayyam Saleem 73ece30d84 markup: Fix linenos codeblock hl option case regression
This fixes a regression introduced in v0.93.0 where previously, a
mixed-case key for lineNos would be successfully parsed. This change
moves the configuration key lowercasing step into the configuration
normalization stage, which is called whether the highlighting config
is being parsed from a `string` or a `map`.

Fixes #10682
2023-02-05 20:06:25 +01:00
Bjørn Erik Pedersen f9fc0e045b Fix slow HTML elements collector for the pre case
```
name                           old time/op    new time/op    delta
ElementsCollectorWriterPre-10    25.2µs ± 1%     3.4µs ± 0%  -86.54%  (p=0.029 n=4+4)

name                           old alloc/op   new alloc/op   delta
ElementsCollectorWriterPre-10      624B ± 0%      142B ± 0%  -77.18%  (p=0.029 n=4+4)

name                           old allocs/op  new allocs/op  delta
ElementsCollectorWriterPre-10      16.0 ± 0%       6.0 ± 0%  -62.50%  (p=0.029 n=4+4)
```

Fixes #10698
2023-02-05 20:01:39 +01:00
Bjørn Erik Pedersen 4f4a1c00bf publisher: Add benchmark 2023-02-05 16:39:31 +01:00
Anthony Fok 76c6140c52 snap: Install dart-sass-embedded for 32-bit ARM (armhf) too
See https://github.com/sass/dart-sass-embedded/releases/tag/1.54.7
which "Add[ed] support for 32-bit ARM releases on Linux" on 2022-08-30.
2023-02-03 14:58:11 +01:00
Anthony Fok d4482e8bf4 snap: Add read access for ~/.gitconfig.local and ~/.config/git/* too
in hugo:gitconfig plug (personal-files interface) in case end users need
the flexibility of using additional custom git config files.

Fixes #10337
2023-02-03 14:57:53 +01:00
Bjørn Erik Pedersen 1477d0ba90 commands: Fix server url rewrites (http status 200)
Broken by me in Hugo 0.103.0 it seems. A little bit mysterious as it has worked for me after that, but started to fail just
recently.

Closes #10668
2023-01-31 12:42:31 +01:00
dependabot[bot] dd37163f5a build(deps): bump github.com/kyokomi/emoji/v2 from 2.2.10 to 2.2.11
Bumps [github.com/kyokomi/emoji/v2](https://github.com/kyokomi/emoji) from 2.2.10 to 2.2.11.
- [Release notes](https://github.com/kyokomi/emoji/releases)
- [Commits](https://github.com/kyokomi/emoji/compare/v2.2.10...v2.2.11)

---
updated-dependencies:
- dependency-name: github.com/kyokomi/emoji/v2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-31 09:41:13 +01:00
dependabot[bot] c3a59a7d5a build(deps): bump gocloud.dev from 0.24.0 to 0.28.0 (#10610)
Bumps [gocloud.dev](https://github.com/google/go-cloud) from 0.24.0 to 0.28.0.
- [Release notes](https://github.com/google/go-cloud/releases)
- [Commits](https://github.com/google/go-cloud/compare/v0.24.0...v0.28.0)

---
updated-dependencies:
- dependency-name: gocloud.dev
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

Closes #9778
2023-01-31 09:40:39 +01:00
Joe Mooring 4ccc8cfb4c Fix description of collections.Uniq 2023-01-31 08:12:45 +01:00
Bjørn Erik Pedersen e2cfc3d5a2 Update CONTRIBUTING.md 2023-01-31 08:08:52 +01:00
Bjørn Erik Pedersen 168858331f Fix shortcode detection in RenderString
Fixes #10654
2023-01-26 11:41:07 +01:00
Bjørn Erik Pedersen 4ef9baf5bd Only invoke a given cached partial once
Note that this is backed by a LRU cache (which we soon shall see more usage of), so if you're a heavy user of cached partials it may be evicted and
refreshed if needed. But in most cases every partial is only invoked once.

This commit also adds a timeout (the global `timeout` config option) to make infinite recursion in partials
easier to reason about.

```
name              old time/op    new time/op    delta
IncludeCached-10    8.92ms ± 0%    8.48ms ± 1%   -4.87%  (p=0.016 n=4+5)

name              old alloc/op   new alloc/op   delta
IncludeCached-10    6.65MB ± 0%    5.17MB ± 0%  -22.32%  (p=0.002 n=6+6)

name              old allocs/op  new allocs/op  delta
IncludeCached-10      117k ± 0%       71k ± 0%  -39.44%  (p=0.002 n=6+6)
```

Closes #4086
Updates #9588
2023-01-25 17:35:23 +01:00
Bjørn Erik Pedersen 93ed6e447a Update README.md 2023-01-24 15:04:06 +01:00
hugoreleaser 0d1161b263 releaser: Prepare repository for 0.111.0-DEV
[ci skip]
2023-01-17 12:28:17 +00:00
hugoreleaser e32a493b78 releaser: Bump versions for release of 0.110.0
[ci skip]
2023-01-17 12:16:09 +00:00
Bjørn Erik Pedersen 19e9605629 dos: Regen CLI docs 2023-01-17 12:52:53 +01:00
Bjørn Erik Pedersen 80e8bd3b72 docs: Regen docshelper 2023-01-17 12:52:08 +01:00
Bjørn Erik Pedersen b661132e0a Merge commit 'ef6f101e75256c3bb88a6f1f3b5c1273bf8d7382' 2023-01-17 12:51:46 +01:00
Bjørn Erik Pedersen ef6f101e75 Squashed 'docs/' changes from 2c0125b52..1214f6ffb
1214f6ffb Document cleanDestinationDir configuration setting
27ca65463 Clarify .Page.Param method (#1953)
3fa1792d2 Document the usage of `hardWrap` option for markdown rendering (#1951)
8b5afdfb4 Update theme
207e7f0a0 fix docs for getting remote font
1f7094b9e Correct typo
f9d6445c4 Added missing `/` in URL generator (#1946)
3a22ee7d6 Remove translations
b3b900f3f Update introduction.md
aca440052 rm Forestry - facing end-of-life shortly (#1944)
af0014e14 Update scss-sass.md
1c43bbbc9 Merge branch 'docs/goworkspace'
d034175ca netlify: Hugo 0.109.0
d3a6a5c3f Merge branch 'tempv0.109.0'
e033dbead docs: Regen docs helper JSON
452bf675c resource/page: Add Page.Ancestors
12edd7363 Add some docs for workspaces
8f0fcba6b Add HUGO_PUBLISHDIR to the Node environment
4e66d98ad Update theme
808aee6f6 config: Update to ga v4
1de2bc5a9 config: Update to ga v4
ddb5fd6b0 Merge commit '41bc6f702aa54200530efbf4267e5c823df3028d'
54c54bf76 modules: Adjust watch logic vs workspace use definitions

git-subtree-dir: docs
git-subtree-split: 1214f6ffbf
2023-01-17 12:51:01 +01:00
Bjørn Erik Pedersen d595419031 related: Handly []any
See #10624
2023-01-17 12:50:26 +01:00
Bjørn Erik Pedersen 671f64b2eb Fix permalinks issue with repeated sections
Fixes #10377
2023-01-17 12:49:16 +01:00
Bjørn Erik Pedersen 2fb40ece5d tpl/strings: Add findRESubmatch
Fixes #10594
2023-01-17 12:14:11 +01:00
Bjørn Erik Pedersen c6b3887696 config/security: Add O\w+ (e.g. GOROOT) to the default allowed list
Fixes #10429
2023-01-17 10:52:51 +01:00
Bjørn Erik Pedersen 21af5b359f Preserve front matter slice value types (e.g. int)
Fixes #10624
2023-01-17 08:58:05 +01:00
Bjørn Erik Pedersen f38a2fbd2e Make hugo.toml the new config.toml
Both will of course work, but hugo.toml will win if both are set.

We should have done this a long time ago, of course, but the reason I'm picking this up now is that my VS Code setup by default picks up some
JSON config schema from some random other software which also names its config files config.toml.

Fixes #8979
2023-01-16 15:34:16 +01:00
Bjørn Erik Pedersen 6a579ebac3 Add fill HTTP Response info into .Data in resources.GetRemote
See #10604
2023-01-16 14:44:15 +01:00
Bjørn Erik Pedersen f13531e608 Fix HEAD method in resources.GetRemote
Fixes #10604
2023-01-16 14:44:15 +01:00
Bjørn Erik Pedersen b5d485060f Fix order when reading custom headers in resources.GetRemote
Fixes #10616
2023-01-16 14:44:15 +01:00
Bjørn Erik Pedersen 6e9fa9e0fd deps: Upgrade github.com/evanw/esbuild v0.15.18 => v0.17.0
Also add a test to make sure legal comments are preserved in JS bundles.

Closes #10536
2023-01-16 14:41:13 +01:00
Bjørn Erik Pedersen c4f3a46ce6 Update README.md 2023-01-09 14:13:30 +01:00
Bjørn Erik Pedersen fbc3e08c64 resource: Fix Go Doc vs .Data.Integrity 2023-01-07 10:58:34 +01:00
Bjørn Erik Pedersen e402d91ee1 Misc doc, code refactoring to improve documentation 2023-01-04 18:01:26 +01:00
Bjørn Erik Pedersen 3c51625c71 Make readFile return nil when file not found (note)
Fixes #9620
2023-01-04 18:01:26 +01:00
Omar Kohl dd6d0a6de1 Remove reference to Goreleaser in code comment
Hugo no longer uses the Goreleaser tool.
2023-01-03 20:25:44 +01:00
acclassic f95fd57aac tpl/compare: Sort special float values as string
When sorting strings a worng order is returned. This happens because the strings are first converted
to floating values to check whether or not they should be sorted as
floating values. When an error is returned the strings will be
handled as string literals.
No error will be returned when parsing Inf, Infinity or NaN (case insensitive) because they
will be coverted to special floating point values and therefore are
legal float values.
Now we check if the returned converted values are special floating
values and treat them as string literals.

Fixes #10389
2023-01-02 17:35:08 +01:00
Bjørn Erik Pedersen e754d5cb3e tpl/diagrams: Move Goat to its own file 2022-12-25 14:02:22 +01:00
Bjørn Erik Pedersen 002cd52807 Update CONTRIBUTING.md 2022-12-24 15:53:27 +01:00
Bjørn Erik Pedersen a76c405d40 Update CONTRIBUTING.md 2022-12-24 15:49:00 +01:00
Bjørn Erik Pedersen c0a03a2a39 Update README.md 2022-12-24 15:48:45 +01:00
hugoreleaser e127d3e5c6 releaser: Prepare repository for 0.110.0-DEV
[ci skip]
2022-12-23 10:50:52 +00:00
hugoreleaser 47b12b83e6 releaser: Bump versions for release of 0.109.0
[ci skip]
2022-12-23 10:38:11 +00:00
Bjørn Erik Pedersen 180dfeba03 Adjust "you need the extended version" error message 2022-12-23 10:33:49 +01:00
Bjørn Erik Pedersen 10bb29d7f3 docs: Regen docs helper JSON 2022-12-23 10:15:48 +01:00
Bjørn Erik Pedersen eb0c8f9d02 resource/page: Slight adjustment of Page.Ancestors
Fixes #10567
2022-12-23 10:14:53 +01:00
Septs 3a216186b2 resource/page: Add Page.Ancestors
Fixes #10567
2022-12-23 10:14:53 +01:00
dependabot[bot] 7874b96815 build(deps): bump golang.org/x/tools from 0.3.0 to 0.4.0
Bumps [golang.org/x/tools](https://github.com/golang/tools) from 0.3.0 to 0.4.0.
- [Release notes](https://github.com/golang/tools/releases)
- [Commits](https://github.com/golang/tools/compare/v0.3.0...v0.4.0)

---
updated-dependencies:
- dependency-name: golang.org/x/tools
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-23 09:26:10 +01:00
Joe Mooring 71832328f8 Annotate test assertions 2022-12-22 18:53:12 +01:00
Joe Mooring 37ab1cf12a hugolib: Exclude non-linkable pages from translations map
Fixes #9073
2022-12-22 18:53:12 +01:00
Bjørn Erik Pedersen 59af05cabc Add HUGO_PUBLISHDIR to the Node environment
So you can do  `process.env.HUGO_PUBLISHDIR` in your `postcss.config.js` to figure out where Hugo publishes
its files.

Note that the value will always be an absolute file path and will point to a directory on disk even when running `hugo server` in memory mode.

If you write to this folder from PostCSS when running the server, you could run the server with one of these flags:

```
hugo server --renderToDisk
hugo server --renderStaticToDisk
```

Fixes #10554
2022-12-22 12:43:50 +01:00
Joe Mooring 4989da653d Revert "tpl/tplimpl: Use https in sitemap templates"
This reverts commit 3fd0b78498.
2022-12-22 08:53:58 +01:00
Bjørn Erik Pedersen cd1ed563a8 tpl: Improve template funcs GoDoc 2022-12-21 15:33:02 +01:00
Bjørn Erik Pedersen aa2c724195 tpl/resources: Fix data race in ToCSS
Fixes #10542
2022-12-21 12:26:42 +01:00
Bjørn Erik Pedersen effa6a4226 tocss: Add some more test cases
See #10555
2022-12-21 11:21:07 +01:00
Septs 5d5f0a2371 tocss: Fix unquote case with double quotes
See #10555
2022-12-21 11:21:07 +01:00
Bjørn Erik Pedersen d20d2651ea Allow "fast render mode" even if --disableLiveReload is set
Fixes #10561
2022-12-21 11:02:21 +01:00
Bjørn Erik Pedersen 41a080b268 tocss: Add vars option
This commit adds a new `vars` option to both the Sass transpilers (Dart Sass and Libsass).

This means that you can pass a map with key/value pairs to the transpiler:

```handlebars
{{ $vars := dict "$color1" "blue" "$color2" "green" "$font_size" "24px" }}
{{ $cssOpts := (dict "transpiler" "dartsass" "outputStyle" "compressed" "vars" $vars ) }}
{{ $r := resources.Get "scss/main.scss" |  toCSS $cssOpts }}
```

And the the variables will be available in the `hugo:vars` namespace. Example usage for Dart Sass:

```scss
@use "hugo:vars" as v;

p {
    color: v.$color1;
    font-size: v.$font_size;
}
```

Note that Libsass does not support the `use` keyword, so you need to `import` them as global variables:

```scss
@import "hugo:vars";

p {
    color: $color1;
    font-size: $font_size;
}
```

Hugo will:

* Add a missing leading `$` for the variable names if needed.
* Wrap the values in `unquote('VALUE')` (Sass built-in) to get proper handling of identifiers vs other strings.

This means that you can pull variables directly from e.g. the site config:

```toml
[params]
[params.sassvars]
color1 = "blue"
color2 = "green"
font_size = "24px"
image = "images/hero.jpg"
```

```handlebars
{{ $vars := site.Params.sassvars}}
{{ $cssOpts := (dict "transpiler" "dartsass" "outputStyle" "compressed" "vars" $vars ) }}
{{ $r := resources.Get "scss/main.scss" |  toCSS $cssOpts }}
```

Fixes #10555
2022-12-20 19:36:30 +01:00
Bjørn Erik Pedersen 41bc6f702a Squashed 'docs/' changes from 2201ac0e5..2c0125b52
2c0125b52 Remove .Site.Author
2cf8841b3 Update partialCached.md (#1924)
385487191 Update data-templates.md (#1926)
ce207e141 Remove redundant markdown and fix a few typos (#1936)
3687c2953 Make heading id linkable, take 2
45c79bea7 Make heading id linkable
b22079344 Delete duplicates the lines 557-569 and 570-582. (#1934)
0a90dc122 Rework the taxonomy variables page (#1935)
7f8979c50 Update theme
26e682a3a Update multilingual.md
d40e7693f Update postcss.md
375d75c01 Update postcss npm instructions (#1931)
63020094a Emphasize Window shell selection (#1930)
56824be2c Update configuration.md
b7b8f16b3 Docu 'Theme components': minor fix (#1929)
09dc81a05 Remove Docker from BSD page (#1927)
205fea204 netlify: Hugo 0.108.0
6abe49c28 Merge commit 'da670c38ee63a7fef25e2b9f42519232055b60dc'
12b59a4c5 docs: Add basic doc for wrapStandAloneImageWithinParagraph etc.
ba07bd970 dartsass: Add sourceMapIncludeSources option

git-subtree-dir: docs
git-subtree-split: 2c0125b529
2022-12-20 11:04:41 +01:00
Bjørn Erik Pedersen 9a215d6950 Merge commit '41bc6f702aa54200530efbf4267e5c823df3028d' 2022-12-20 11:04:41 +01:00
Bjørn Erik Pedersen eda1e720cd modules: Improve "module workspace" not found error 2022-12-20 09:06:38 +01:00
Bjørn Erik Pedersen 330fa89411 modules: Adjust watch logic vs workspace use definitions 2022-12-19 20:17:33 +01:00
Bjørn Erik Pedersen 6db527483d Add any configured Go Workspace file to the config watcher
Fixes #10556
2022-12-19 20:17:33 +01:00
Bjørn Erik Pedersen 0d4b17d4c0 modules: Make the module.workspace=off as default (note)
Also, resolve any workspace file relative to the workingDir.

Fixes #10553
2022-12-19 20:17:33 +01:00
Bjørn Erik Pedersen 3afaca7584 release: Add a note section in release notes 2022-12-19 13:13:38 +01:00
Joe Mooring 2d217cba51 helpers: Allow at signs in UnicodeSanitize (note)
Closes #10548
2022-12-19 09:58:56 +01:00
Bjørn Erik Pedersen 17055d1fa7 parser/metadecoders: Remove superflous cast in test 2022-12-14 20:10:17 +01:00
Bjørn Erik Pedersen 2a81a49499 parser/metadecoders: Simplify nil check in Unmarshal 2022-12-14 18:03:47 +01:00
AcClassic e30d711c29 parser/metadecoders: Add empty /data JSON file as empty map
When fetching JSON files from the /data folder that are empty they will
be added as empty map[string]any. This makes sure that no empty JSON
file causes the site to crash because of a failed unmarshal. This
happens because empty is not a valid JSON string. It is therefore
important to check the lenght of the data before passing it to the JSON
unmarshal function.

Fixes #8601
2022-12-14 18:03:47 +01:00
Bjørn Erik Pedersen ad2059878a Also consider wrapped errors when checking for file IsNotExist errors
Fixes #10534
2022-12-14 13:51:06 +01:00
Bjørn Erik Pedersen 87e898a17a tpl/openapi3: Wrap *kopenapi3.T
To make it easier to document.
2022-12-14 12:29:40 +01:00
Bjørn Erik Pedersen b54de1bd9b resources/js: Fix some import discrepancies between Hugo and ESBuild
This fixes the cases where

```js
import 'imp2/index.js';
import 'imp3/foo.js';
```

And these files lives in `assets` as:

```
imp2/index.ts
imp3/foo.ts
```

Fixes #10527
2022-12-13 18:58:17 +01:00
Bjørn Erik Pedersen c9354d5463 github: Update to Dart Sass 1.56.2 2022-12-13 16:58:33 +01:00
Bjørn Erik Pedersen d894269855 github: Use ruby/setup-ruby
Closes #10517
2022-12-11 19:43:46 +01:00
Joe Mooring 3fd0b78498 tpl/tplimpl: Use https in sitemap templates
Closes #10515
2022-12-11 18:53:30 +01:00
Francesco La Camera e0e63f35e4 parser/metadecoders: Fix spelling 2022-12-10 19:37:47 +01:00
hugoreleaser cc574ef120 releaser: Prepare repository for 0.109.0-DEV
[ci skip]
2022-12-06 13:50:51 +00:00
hugoreleaser a0d64a46e3 releaser: Bump versions for release of 0.108.0
[ci skip]
2022-12-06 13:37:56 +00:00
Bjørn Erik Pedersen f97544a830 Make the hugo env non verbose output slightly more verbose
This is how it may look like with a extended build:

```
hugo v0.107.0-6445b1e9ff963b07c55d9d69cb9abef8ef21fc5d+extended darwin/arm64 BuildDate=2022-12-06T11:21:50Z
GOOS="darwin"
GOARCH="arm64"
GOVERSION="go1.19.3"
github.com/sass/libsass="3.6.5"
github.com/webmproject/libwebp="v1.2.4"
github.com/sass/dart-sass-embedded/protocol="1.1.0"
github.com/sass/dart-sass-embedded/compiler="1.56.1"
github.com/sass/dart-sass-embedded/implementation="1.56.1"
```
2022-12-06 13:37:08 +01:00
Bjørn Erik Pedersen d8efe085ca Add dart-sass-embedded version info to hugo env -v
```
~ ❯❯❯ hugo env -v | grep dart
github.com/bep/godartsass="v0.16.0"
github.com/sass/dart-sass-embedded/compiler="1.56.1"
github.com/sass/dart-sass-embedded/implementation="1.56.1"
github.com/sass/dart-sass-embedded/protocol="1.1.0"
```
2022-12-06 13:37:08 +01:00
Bjørn Erik Pedersen f5b5b71c60 deps: Upgrade github.com/bep/godartsass v0.15.0 => v0.16.0 2022-12-06 13:37:08 +01:00
Razon Yang b82b547acb tpl/embedded: Make Open Graph's series optional 2022-12-06 10:48:34 +01:00
Bjørn Erik Pedersen da670c38ee Squashed 'docs/' changes from 4c1309cdf..2201ac0e5
2201ac0e5 Update theme

git-subtree-dir: docs
git-subtree-split: 2201ac0e5f
2022-12-06 10:42:36 +01:00
Bjørn Erik Pedersen c9f2fa2663 Merge commit 'da670c38ee63a7fef25e2b9f42519232055b60dc' 2022-12-06 10:42:36 +01:00
Bjørn Erik Pedersen 5067775a6f common/hugio: Fix multiWriteCloser.Close
Fixes #10505
2022-12-06 10:32:33 +01:00
dependabot[bot] 50549c867c build(deps): bump github.com/getkin/kin-openapi from 0.109.0 to 0.110.0
Bumps [github.com/getkin/kin-openapi](https://github.com/getkin/kin-openapi) from 0.109.0 to 0.110.0.
- [Release notes](https://github.com/getkin/kin-openapi/releases)
- [Commits](https://github.com/getkin/kin-openapi/compare/v0.109.0...v0.110.0)

---
updated-dependencies:
- dependency-name: github.com/getkin/kin-openapi
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-06 10:22:14 +01:00
Bjørn Erik Pedersen de9c5542ca docs: Add basic doc for wrapStandAloneImageWithinParagraph etc.
See #10492
2022-12-05 16:50:47 +01:00
Bjørn Erik Pedersen e93138dfdb dartsass: Add sourceMapIncludeSources option 2022-12-05 16:36:45 +01:00
Bjørn Erik Pedersen 7d16c3c0c1 github: Update Dart Sass Embedded to 1.56.1 2022-12-05 16:36:45 +01:00
Bjørn Erik Pedersen 63126c6359 markup/goldmark: Add removeSurroundingParagraph for Markdown images
* Removes any surrounding paragraph nodes
* And transfers any attributes from the surrounding paragraph down to the image node
* Adds IsBlock and Ordinal (zero based) field to the image context passed to the image render hooks

IsBlock is set to true if `wrapStandAloneImageWithinParagraph = false` and  the image's parent node has only one child.

Closes #8362
Fixes #10492
Fixes #10494
Fixes #10501
2022-12-05 15:00:47 +01:00
dependabot[bot] 535ea8cc9b build(deps): bump github.com/evanw/esbuild from 0.15.16 to 0.15.18
Bumps [github.com/evanw/esbuild](https://github.com/evanw/esbuild) from 0.15.16 to 0.15.18.
- [Release notes](https://github.com/evanw/esbuild/releases)
- [Changelog](https://github.com/evanw/esbuild/blob/master/CHANGELOG.md)
- [Commits](https://github.com/evanw/esbuild/compare/v0.15.16...v0.15.18)

---
updated-dependencies:
- dependency-name: github.com/evanw/esbuild
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-05 10:35:54 +01:00
dependabot[bot] 8bbec426cd build(deps): bump golang.org/x/text from 0.4.0 to 0.5.0
Bumps [golang.org/x/text](https://github.com/golang/text) from 0.4.0 to 0.5.0.
- [Release notes](https://github.com/golang/text/releases)
- [Commits](https://github.com/golang/text/compare/v0.4.0...v0.5.0)

---
updated-dependencies:
- dependency-name: golang.org/x/text
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-05 10:34:54 +01:00
dependabot[bot] 0bfa293dcd build(deps): bump github.com/evanw/esbuild from 0.15.15 to 0.15.16
Bumps [github.com/evanw/esbuild](https://github.com/evanw/esbuild) from 0.15.15 to 0.15.16.
- [Release notes](https://github.com/evanw/esbuild/releases)
- [Changelog](https://github.com/evanw/esbuild/blob/master/CHANGELOG.md)
- [Commits](https://github.com/evanw/esbuild/compare/v0.15.15...v0.15.16)

---
updated-dependencies:
- dependency-name: github.com/evanw/esbuild
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-04 15:04:05 +01:00
Joe Mooring 0b976d2b40 tpl/tplimpl: Allow alternate comment syntax
Allow alternate comment syntax before block definitions:

{{/* foo */}}
{{- /* foo */}}
{{- /* foo */ -}}

Fixes #10495
2022-12-04 09:25:51 +01:00
Anton Sattarov a49e51fd0b resources: Increase timeout for http.Client
Increase timeout for http.Client in resources.GetRemote  from 10 second to 1 minute

Fixes #10478
2022-12-03 15:47:47 +01:00
Bjørn Erik Pedersen d373774cbe tpl/collections: Fix some index cases where the indices given is a slice and be more lenient with nil inputs
See adjusted tests for detail.

Fixes #10489
2022-12-03 11:54:33 +01:00
Bjørn Erik Pedersen 7d5e3ab8a8 tpl: Misco GoDoc improvements 2022-12-03 11:54:33 +01:00
septs dc44bca963 config/security: Add CI env var to whitelist 2022-12-02 12:13:34 +01:00
Bjørn Erik Pedersen da16527896 Squashed 'docs/' changes from 32cb8785e..4c1309cdf
4c1309cdf Fix broken link to front matter page (#1923)
8181fff20 Add footnote to Quick Start guide for Win users (#1922)
4fd934f61 Fix abslangurl.md (#1919)
bf2c45617 Quick start guide: fix broken links (#1915)
201b568df Update theme
874db199d Hide the news stripe on front page for now
aaf59e3e2 netlify: Hugo 0.107.0
79654c301 Merge branch 'tempv107'
8345e0347 docs: Regen docs helper
b5b4f15f9 Add assets directory to directory structure diagram (#1917)
76dd3a82a Follow-up: improve function signatures (#1914) (#1916)
656dc72ba Improving function signatures (#1914)
b715e8407 Explain how to create multilingual content (#1912)
8500ee417 Fix typo in Quick Start guide
ce60bb572 Add docu for undocumented functions (#1907)
372bf5e88 Improve Quick Start tutorial
71e81ec5f Remove asciicast from site
1e56c653f Update hosting-on-cloudflare-pages.md (#1903)
1686f60b1 Adding documentation page for function 'strings.FirstUpper' (#1901)
d533f7c9c Fixing typos (#1900)
2563eee45 Update multilingual.md (#1899)
2173ed799 Update theme
5591b8875 Update urls.md (#1897)
4a88890b5 netlify: Hugo 0.106.0
512879fdd docs: Regen CLI docs
f74b1d87d docs: Regenerate docs helper
9feacb48f Merge commit '00c4484c7092181729f6f470805bc7d72e8ad17b'

git-subtree-dir: docs
git-subtree-split: 4c1309cdfe
2022-12-02 09:19:23 +01:00
Bjørn Erik Pedersen ef518485ce Merge commit 'da16527896d3087585c5e758083ea498dcabc2c3' 2022-12-02 09:19:23 +01:00
Bjørn Erik Pedersen 83080df611 deps: Upgrade github.com/bep/godartsass v0.14.0 => v0.15.0 2022-12-02 09:08:22 +01:00
Joe Mooring b8d5c378ba tpl: Use consistent delimiter spacing in examples 2022-11-25 09:54:35 +01:00
Bjørn Erik Pedersen 75f782a5a7 docs: Regen docs helper 2022-11-24 15:17:22 +01:00
hugoreleaser 2221b5b30a releaser: Bump versions for release of 0.107.0
[ci skip]
2022-11-24 13:59:45 +00:00
dependabot[bot] 6a004b8d94 build(deps): bump github.com/getkin/kin-openapi from 0.108.0 to 0.109.0
Bumps [github.com/getkin/kin-openapi](https://github.com/getkin/kin-openapi) from 0.108.0 to 0.109.0.
- [Release notes](https://github.com/getkin/kin-openapi/releases)
- [Commits](https://github.com/getkin/kin-openapi/compare/v0.108.0...v0.109.0)

---
updated-dependencies:
- dependency-name: github.com/getkin/kin-openapi
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-24 13:21:23 +01:00
dependabot[bot] 0923622421 build(deps): bump github.com/evanw/esbuild from 0.15.14 to 0.15.15
Bumps [github.com/evanw/esbuild](https://github.com/evanw/esbuild) from 0.15.14 to 0.15.15.
- [Release notes](https://github.com/evanw/esbuild/releases)
- [Changelog](https://github.com/evanw/esbuild/blob/master/CHANGELOG.md)
- [Commits](https://github.com/evanw/esbuild/compare/v0.15.14...v0.15.15)

---
updated-dependencies:
- dependency-name: github.com/evanw/esbuild
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-24 13:20:50 +01:00
Bjørn Erik Pedersen 7855b47f07 Add a cache for lexers.Get
```
name                            old time/op    new time/op    delta
Codeblocks/Default-10              152ms ±11%      12ms ± 1%  -92.44%  (p=0.029 n=4+4)
Codeblocks/Hook_no_higlight-10     142ms ± 0%       7ms ± 0%  -95.36%  (p=0.029 n=4+4)

name                            old alloc/op   new alloc/op   delta
Codeblocks/Default-10             11.9MB ± 0%    11.7MB ± 0%   -1.59%  (p=0.029 n=4+4)
Codeblocks/Hook_no_higlight-10    4.62MB ± 1%    4.43MB ± 0%   -4.08%  (p=0.029 n=4+4)

name                            old allocs/op  new allocs/op  delta
Codeblocks/Default-10               209k ± 0%      209k ± 0%   -0.03%  (p=0.029 n=4+4)
Codeblocks/Hook_no_higlight-10     68.4k ± 0%     68.3k ± 0%   -0.06%  (p=0.029 n=4+4)

```
2022-11-24 13:18:33 +01:00
Bjørn Erik Pedersen 34d1150d92 markup/goldmark: Improve benchmark 2022-11-24 12:04:44 +01:00
Joe Mooring 85e2ac1a44 commands: Create assets directory with new site
Closes #10460
2022-11-21 09:42:40 +01:00
dependabot[bot] 74776726df build(deps): bump github.com/frankban/quicktest from 1.14.3 to 1.14.4
Bumps [github.com/frankban/quicktest](https://github.com/frankban/quicktest) from 1.14.3 to 1.14.4.
- [Release notes](https://github.com/frankban/quicktest/releases)
- [Commits](https://github.com/frankban/quicktest/compare/v1.14.3...v1.14.4)

---
updated-dependencies:
- dependency-name: github.com/frankban/quicktest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-19 17:19:15 +01:00
dependabot[bot] 63f7f0ff5a build(deps): bump golang.org/x/tools from 0.2.0 to 0.3.0
Bumps [golang.org/x/tools](https://github.com/golang/tools) from 0.2.0 to 0.3.0.
- [Release notes](https://github.com/golang/tools/releases)
- [Commits](https://github.com/golang/tools/compare/v0.2.0...v0.3.0)

---
updated-dependencies:
- dependency-name: golang.org/x/tools
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-19 16:33:23 +01:00
Bjørn Erik Pedersen bcb62d8911 deps: Upgrade github.com/alecthomas/chroma/v2 v2.4.0 2022-11-19 11:55:30 +01:00
Joe Mooring 00fe7e0408 hugo/parser: Fix shortcode boolean param parsing
Fixes #10451
2022-11-18 09:34:10 +01:00
hugoreleaser df85cb9ae2 releaser: Prepare repository for 0.107.0-DEV
[ci skip]
2022-11-17 18:46:38 +00:00
hugoreleaser e08ce30fe4 releaser: Bump versions for release of 0.106.0
[ci skip]
2022-11-17 18:33:40 +00:00
Bjørn Erik Pedersen a99fed4852 resources/tpl: Add a test for resources.Get
Updates #10101
2022-11-17 18:09:54 +01:00
shifterbit db945a6ed2 tlp/resources: resources.Get returns nil when given empty string 2022-11-17 18:09:54 +01:00
dependabot[bot] bafb389b38 build(deps): bump github.com/pelletier/go-toml/v2 from 2.0.4 to 2.0.6
Bumps [github.com/pelletier/go-toml/v2](https://github.com/pelletier/go-toml) from 2.0.4 to 2.0.6.
- [Release notes](https://github.com/pelletier/go-toml/releases)
- [Changelog](https://github.com/pelletier/go-toml/blob/v2/.goreleaser.yaml)
- [Commits](https://github.com/pelletier/go-toml/compare/v2.0.4...v2.0.6)

---
updated-dependencies:
- dependency-name: github.com/pelletier/go-toml/v2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-17 17:07:40 +01:00
Bjørn Erik Pedersen 0a019a1a59 docs: Regen CLI docs 2022-11-17 16:19:22 +01:00
Bjørn Erik Pedersen 9f7fb0a73b docs: Regenerate docs helper 2022-11-17 16:16:53 +01:00
Bjørn Erik Pedersen f04cc581e1 Merge commit '00c4484c7092181729f6f470805bc7d72e8ad17b' 2022-11-17 16:16:19 +01:00
Bjørn Erik Pedersen 00c4484c70 Squashed 'docs/' changes from 392668f4f..32cb8785e
32cb8785e Fix page weights in content management section (#1896)
11977b96f Make relURL and related functions consistent (#1895)
f12180207 Clarify github deployment (#1894)
958877789 Remove remaining references to Highlight.js (#1893)
fc487d263 Minor edit to taxonomy page
3b6a224b2 Update theme
b28553b62 Change "flavor" to "edition" when referring to builds (#1892)
660e7581c Replaced sudo in OpenBSD with doas (#1891)
e3fcdea10 fix a few minor grammatical issues on Firebase docs (#1889)
e4c8b30eb update Static Web Apps docs (#1890)
da2197c9e Update hosting-on-firebase.md (#1347)
5f2a0c271 Adding deployment guide for Azure Static Web Apps (#1456)
5aaf570cd add Azure Static Web App config to 404 template
35fc54362 add Azure Static Web App config to 404 template
d48f67ba1 Update 01-flavors.md
11debae8d Cleaned Use of ref and relref section, added refs of index.md and _in… (#1744)
b77604078 docs: Add link to menu entry variables (#1827)
0fa8a6bf0 Misc copy edits (#1887)
c27b545ac Improve explanation of safeHTMLAttr's function (#1503)
b04a4b32e Make CLI command summaries meaningful (#1886)
dbf00a81f Fix a typo in diagrams documentation (#1885)
11f884327 docs: Clarify how to remove draft/future/expired content (#1831)
6dc9e9860 Improve complement function (#1884)
56448a51a Remove erroneous sourcemap desc (#1883)
a0d0d2829 Merge branch 'divinerites-patch-1'
10f20cb5e Add a plausible-hugo theme component
9f1413eb5 Minor edits to showcase example
7d78420db fix broken link to Isso Comments
925cb291f Make directory tree consistent with other examples
300fff092 Add link to security policy from getenv.md (#1746)
7b4c517a6 Fix docs menu weights
ce35775e0 Update faq.md (#1763)
f3fb791a4 Remove dated new-in flags (#1879)
b6c634629 Remove deprecated templating langs (#1880)
1b25ca34f Update the findRE and replaceRE functions (#1881)
28757ec73 Add Alora Labs website to showcase (#1494)
e3c4bc4e7 Remove unimplemented "ugly" property
86afd84ff Update editors.md (#1878)
44c093911 Add urlquery function docs (#1633)
16a8c3548 Update links to installation page (#1876)
9e357f078 Add missing sections to BSD installation page (#1875)
1b1291634 Promote "Installation" to a section
9dd51235b Add detail to description of .Plain page variable (#1870)
d333d0287 Minor markdown linting fix and URL updates (#1873)
d57c8aa50 Remove extraneous apostrophe (#1871)
8c25cfc5c Update index.md
09fea41e0 Add lang to fenced code block
35b904798 Add small documentation about .Site.Social.twitter variable (#1854)
672042f89 Consolidate site configuration
dfd4dd873 Add help.ampio.com showcase. (#1863)
e8d0e7bdf Include link to internal templates code (#1794)
7db6f0c01 Add example to split function (#1867)
be87dba80 Clarify split function docs (#1792)
a079193f1 Fix typo on data templates page
b234c70ee Fix data templates page (#1855)
074232b45 Update front-matter.md (#1856)
711c8fa80 Added missing default value (#1862)
034762882 Fixed some grammar issues and typos (#1865)
764574a4d Fix spelling error
2698f2d44 update URLs to prevent redirects (#1864)
68f05fdc8 Fenced code blocks should have a language specified (#1861)
24393315b GitHub Workflows security hardening (#1859)
3eeee13bf Markdown formatting: Add Fenced code block languages (#1858)
e152cdf1f netlify: Hugo 0.105.0
4c7fc9f7e Merge branch 'tempv0.105.0'
d16710afc Change anchor reference to use relref function calls (#1853)
f52af8e4a tpl/encoding: Add noHTMLEscape option to jsonify
eca0046c4 Update hosting-on-keycdn docs (#1852)
ffbe17a48 Add note for rsync deploy command (#1415)
c482133f1 docs: Update quick start to clarify the need of extended version (#1828)
1e3b33804 use correct URL for Google Search console verification (#1851)
dac034f63 Markdown and formatting fixes (#1850)
43f177e3c Fix LiveReload in quick-start (#1739)
f78deaa5f Add link for ''Hugo Shortcode Syntax Highlighting' VS Code extension (#1765)
08087ecd7 Remove some hidden pages (#1848)
b6cb5ae48 Markdown linting fixes (#1846)
527ec5941 Update hugo.md (#1742)
83e8f2168 Clarify that a shortcode with .Inner must be closed (#1785)
4193f4445 Add Super Linter GitHub Action (#1845)
fd91bfe1a Formatting and grammar fixes (#1844)
ab5a49c49 Create codeql-analysis GitHub Action (#1812)
63b3e082e Add tutorial on using fusejs to search examples (#1756)
54c253ab0 Note that Google Universal Analytics are deprecated (#1770)
385fa77c6 Update articles.toml (#1840)
5e336bd26 Replace awkward wording (ESL?) (#1842)
2446ad349 Added Introduction to Hugo tutorial/video series (#1736)
7b21b2e76 Don't use self-closing generator tag
ef73712ff Image processing. available methods: add method 'Colors' (#1837)
018f83bbe [comment platform] - add new alternative (#1751)
5636c208b Grammar and spelling fixes (#1836)
3f2e26f77 Change link of repojacking vulnerable link - JekyllToHugo (#1834)
301379fc3 fix: use shorter image URL to make it easier to read (#1835)
de5fa7b30 Update search.md to include Pagefind (#1826)
e9d72bcda Breadcrumb example: add basic accessibility (#1832)
6cffff87a netlify: Hugo 0.104.3
892360f61 Update output-formats.md
09a7a46ae Remove my defunct and little used migrator (#1824)
347434cca netlify: Hugo 0.104.2
f8c721162 Update postcss.md
c2baf7155 netlify: Hugo 0.104.1
05d1192cd Update diagrams.md (#1823)
3c43a8bbe netlify: Hugo 0.104.0
57973b334 Merge branch 'tempv0.104.0'
da775a36d docs: Regen docs helper
ae48b5901 docs: Regenerate CLI docs
af4a823b1 resources/images: Add $image.Colors
8e3f9ca64 Remove outdated IE conditional comments example (#1821)
d1a84701b fix typo in template introduction (#1820)
c0c7339e0 Update internal.md
17aefc515 Remove the recommendation about where to put the GA tempalte
263297236 Adjust GA template instructions
1cc265d99 Update the GA template usage section
e11968338 config/security: Allow proxy variables in subcommands
9218ab993 netlify: Hugo 0.103.1
0b0e890d1 Update markdownify and RenderString documentation (#1818)
50f5d4776 Fix internal link (#1817)
6beb443c5 netlify: Hugo 0.103.0
14b5af248 Merge branch 'tempv0.103.0'
548e7aa62 server: Add 404 support
3a20aa0ba Update theme

git-subtree-dir: docs
git-subtree-split: 32cb8785ea
2022-11-17 16:14:29 +01:00
dependabot[bot] cdd83bf3c8 build(deps): bump github.com/evanw/esbuild from 0.15.13 to 0.15.14
Bumps [github.com/evanw/esbuild](https://github.com/evanw/esbuild) from 0.15.13 to 0.15.14.
- [Release notes](https://github.com/evanw/esbuild/releases)
- [Changelog](https://github.com/evanw/esbuild/blob/master/CHANGELOG.md)
- [Commits](https://github.com/evanw/esbuild/compare/v0.15.13...v0.15.14)

---
updated-dependencies:
- dependency-name: github.com/evanw/esbuild
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-16 19:15:58 +01:00
Bjørn Erik Pedersen e00220a06a deps: Update the libweb version string 2022-11-15 18:21:08 +01:00
Bjørn Erik Pedersen a662ddae13 deps: Upgrade github.com/bep/gowebp v0.1.0 => v0.2.0 2022-11-15 18:19:35 +01:00
Vignesh Mani 13adf3e028 readme: Update ToC 2022-11-15 18:19:16 +01:00
dependabot[bot] fe08d35f24 build(deps): bump github.com/yuin/goldmark from 1.5.2 to 1.5.3
Bumps [github.com/yuin/goldmark](https://github.com/yuin/goldmark) from 1.5.2 to 1.5.3.
- [Release notes](https://github.com/yuin/goldmark/releases)
- [Commits](https://github.com/yuin/goldmark/compare/v1.5.2...v1.5.3)

---
updated-dependencies:
- dependency-name: github.com/yuin/goldmark
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-15 11:48:20 +01:00
dependabot[bot] 4b675ddd4a build(deps): bump github.com/spf13/afero from 1.9.2 to 1.9.3
Bumps [github.com/spf13/afero](https://github.com/spf13/afero) from 1.9.2 to 1.9.3.
- [Release notes](https://github.com/spf13/afero/releases)
- [Commits](https://github.com/spf13/afero/compare/v1.9.2...v1.9.3)

---
updated-dependencies:
- dependency-name: github.com/spf13/afero
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-15 10:01:23 +01:00
dependabot[bot] 24eaa290cf build(deps): bump github.com/getkin/kin-openapi from 0.107.0 to 0.108.0
Bumps [github.com/getkin/kin-openapi](https://github.com/getkin/kin-openapi) from 0.107.0 to 0.108.0.
- [Release notes](https://github.com/getkin/kin-openapi/releases)
- [Commits](https://github.com/getkin/kin-openapi/compare/v0.107.0...v0.108.0)

---
updated-dependencies:
- dependency-name: github.com/getkin/kin-openapi
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-15 10:00:57 +01:00
Bjørn Erik Pedersen f6ab9553f4 tpl/internal: Sync go_templates
Closes #10411
2022-11-14 22:31:50 +01:00
dependabot[bot] 58a98c7758 build(deps): bump github.com/clbanning/mxj/v2 from 2.5.6 to 2.5.7
Bumps [github.com/clbanning/mxj/v2](https://github.com/clbanning/mxj) from 2.5.6 to 2.5.7.
- [Release notes](https://github.com/clbanning/mxj/releases)
- [Commits](https://github.com/clbanning/mxj/compare/v2.5.6...2.5.7)

---
updated-dependencies:
- dependency-name: github.com/clbanning/mxj/v2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-14 22:20:38 +01:00
dependabot[bot] 900904fd11 build(deps): bump golang.org/x/net from 0.1.0 to 0.2.0
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.1.0 to 0.2.0.
- [Release notes](https://github.com/golang/net/releases)
- [Commits](https://github.com/golang/net/compare/v0.1.0...v0.2.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-14 19:08:03 +01:00
dependabot[bot] 24eca0cbe9 build(deps): bump github.com/evanw/esbuild from 0.15.12 to 0.15.13
Bumps [github.com/evanw/esbuild](https://github.com/evanw/esbuild) from 0.15.12 to 0.15.13.
- [Release notes](https://github.com/evanw/esbuild/releases)
- [Changelog](https://github.com/evanw/esbuild/blob/master/CHANGELOG.md)
- [Commits](https://github.com/evanw/esbuild/compare/v0.15.12...v0.15.13)

---
updated-dependencies:
- dependency-name: github.com/evanw/esbuild
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-14 19:07:26 +01:00
Vignesh Mani 60e0e2c1d9 Add Go 1.16+ install method to README
Changed installation method to reflect Go 1.16+, as cloning the repo and doing a go install achieves the same process.

Also changed "Advanced Installation" to "Using the Go toolchain"
2022-11-10 17:36:31 +01:00
Bjørn Erik Pedersen 52ea07d2eb Fix taxonomy weight sort regression
Fixes #10406
2022-11-01 18:45:34 +01:00
hugoreleaser 77fc74a5b2 releaser: Prepare repository for 0.106.0-DEV
[ci skip]
2022-10-28 12:41:15 +00:00
hugoreleaser 0e3b42b4a9 releaser: Bump versions for release of 0.105.0
[ci skip]
2022-10-28 12:29:05 +00:00
dependabot[bot] f50585442d build(deps): bump golang.org/x/tools from 0.1.12 to 0.2.0
Bumps [golang.org/x/tools](https://github.com/golang/tools) from 0.1.12 to 0.2.0.
- [Release notes](https://github.com/golang/tools/releases)
- [Commits](https://github.com/golang/tools/compare/v0.1.12...v0.2.0)

---
updated-dependencies:
- dependency-name: golang.org/x/tools
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-28 14:10:21 +02:00
dependabot[bot] 2aedccc9a9 build(deps): bump github.com/getkin/kin-openapi from 0.106.0 to 0.107.0
Bumps [github.com/getkin/kin-openapi](https://github.com/getkin/kin-openapi) from 0.106.0 to 0.107.0.
- [Release notes](https://github.com/getkin/kin-openapi/releases)
- [Commits](https://github.com/getkin/kin-openapi/compare/v0.106.0...v0.107.0)

---
updated-dependencies:
- dependency-name: github.com/getkin/kin-openapi
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-28 14:09:21 +02:00
dependabot[bot] c10931404f build(deps): bump golang.org/x/text from 0.3.7 to 0.4.0
Bumps [golang.org/x/text](https://github.com/golang/text) from 0.3.7 to 0.4.0.
- [Release notes](https://github.com/golang/text/releases)
- [Commits](https://github.com/golang/text/compare/v0.3.7...v0.4.0)

---
updated-dependencies:
- dependency-name: golang.org/x/text
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-27 12:28:57 +02:00
dependabot[bot] 4732c47d1d build(deps): bump github.com/spf13/cobra from 1.5.0 to 1.6.1
Bumps [github.com/spf13/cobra](https://github.com/spf13/cobra) from 1.5.0 to 1.6.1.
- [Release notes](https://github.com/spf13/cobra/releases)
- [Commits](https://github.com/spf13/cobra/compare/v1.5.0...v1.6.1)

---
updated-dependencies:
- dependency-name: github.com/spf13/cobra
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-27 12:28:37 +02:00
dependabot[bot] 62780ec8dd build(deps): bump github.com/getkin/kin-openapi from 0.103.0 to 0.106.0
Bumps [github.com/getkin/kin-openapi](https://github.com/getkin/kin-openapi) from 0.103.0 to 0.106.0.
- [Release notes](https://github.com/getkin/kin-openapi/releases)
- [Commits](https://github.com/getkin/kin-openapi/compare/v0.103.0...v0.106.0)

---
updated-dependencies:
- dependency-name: github.com/getkin/kin-openapi
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-27 12:28:21 +02:00
dependabot[bot] 351d6b062b build(deps): bump github.com/tdewolff/minify/v2 from 2.12.1 to 2.12.4
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify) from 2.12.1 to 2.12.4.
- [Release notes](https://github.com/tdewolff/minify/releases)
- [Commits](https://github.com/tdewolff/minify/compare/v2.12.1...v2.12.4)

---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-26 13:02:40 +02:00
Bjørn Erik Pedersen 631d768be9 Revise the fix for shortcode vs output format nilpointer
We do lazy initialization and (potentially) reuse of an output format's rendered content. We do this evaluation when we
start a new rendering a new output format. There are, however, situation where these borders gets crossed (e.g.
accessing content from another output format). We have a check for this in place for most cases, but not the content
rendering of inner markdown blocks inside shortcodes. This patch applies that same logic to the newly introduced
RenderContent method (which is not available from the templates).

Fixes #10391
2022-10-26 13:00:21 +02:00
davidejones e5d2a8f6a3 Avoid nilpointer when shortcode page content output nil
Updates #10391
2022-10-26 13:00:21 +02:00
Bjørn Erik Pedersen 00ff161b67 livereload: Use text/javascript here, too 2022-10-26 12:54:50 +02:00
Bjørn Erik Pedersen 588710a7ac media: Rename application/javascript, application/typescript to text/javascript etc.
The former is deprecated.

See https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types
See https://discourse.gohugo.io/t/mime-type-for-javascript-is-now-text-javascript/40813
2022-10-26 10:38:27 +02:00
dependabot[bot] ed930db2f0 build(deps): bump github.com/yuin/goldmark from 1.4.15 to 1.5.2
Bumps [github.com/yuin/goldmark](https://github.com/yuin/goldmark) from 1.4.15 to 1.5.2.
- [Release notes](https://github.com/yuin/goldmark/releases)
- [Commits](https://github.com/yuin/goldmark/compare/v1.4.15...v1.5.2)

---
updated-dependencies:
- dependency-name: github.com/yuin/goldmark
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-26 10:34:24 +02:00
dependabot[bot] 05df964816 build(deps): bump github.com/fsnotify/fsnotify from 1.5.4 to 1.6.0
Bumps [github.com/fsnotify/fsnotify](https://github.com/fsnotify/fsnotify) from 1.5.4 to 1.6.0.
- [Release notes](https://github.com/fsnotify/fsnotify/releases)
- [Changelog](https://github.com/fsnotify/fsnotify/blob/main/CHANGELOG.md)
- [Commits](https://github.com/fsnotify/fsnotify/compare/v1.5.4...v1.6.0)

---
updated-dependencies:
- dependency-name: github.com/fsnotify/fsnotify
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-26 10:25:34 +02:00
Bjørn Erik Pedersen 20ef6dcf95 Skip flakey server tests on GitHub Action on Windows 2022-10-26 09:29:55 +02:00
dependabot[bot] 9860e0e186 build(deps): bump github.com/magefile/mage from 1.13.0 to 1.14.0
Bumps [github.com/magefile/mage](https://github.com/magefile/mage) from 1.13.0 to 1.14.0.
- [Release notes](https://github.com/magefile/mage/releases)
- [Changelog](https://github.com/magefile/mage/blob/master/.goreleaser.yml)
- [Commits](https://github.com/magefile/mage/compare/v1.13.0...v1.14.0)

---
updated-dependencies:
- dependency-name: github.com/magefile/mage
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-25 16:13:08 +02:00
Bjørn Erik Pedersen d1cd1db0e7 github: Avoid duplicate test runs 2022-10-25 16:08:41 +02:00
Bjørn Erik Pedersen 09e10110a3 tpl/encoding: Add noHTMLEscape option to jsonify 2022-10-24 17:21:42 +02:00
dependabot[bot] 2ef60dbd2d build(deps): bump github.com/evanw/esbuild from 0.15.9 to 0.15.12
Bumps [github.com/evanw/esbuild](https://github.com/evanw/esbuild) from 0.15.9 to 0.15.12.
- [Release notes](https://github.com/evanw/esbuild/releases)
- [Changelog](https://github.com/evanw/esbuild/blob/master/CHANGELOG.md)
- [Commits](https://github.com/evanw/esbuild/compare/v0.15.9...v0.15.12)

---
updated-dependencies:
- dependency-name: github.com/evanw/esbuild
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-24 17:19:54 +02:00
Steffen Windoffer 6275aad9e2 Update Go and Alpine version in Dockerfile 2022-10-19 19:58:25 +02:00
JB 01ebb6e304 Don't use self-closing generator tag 2022-10-14 12:16:53 +02:00
Bjørn Erik Pedersen a066e98851 build: Update to Go 1.19.2 2022-10-11 09:26:31 +02:00
Bjørn Erik Pedersen 1fd3320dcf github: Use SHA versions 2022-10-05 16:37:37 +02:00
jongwooo 0fb2b3d143 Resolve dependency-path not found error in workflow 2022-10-05 20:39:45 +09:00
jongwooo db05232d56 Use setup-go action to cache dependencies 2022-10-05 10:20:22 +02:00
hugoreleaser 2734f956c3 releaser: Prepare repository for 0.105.0-DEV
[ci skip]
2022-10-04 14:39:43 +00:00
hugoreleaser 58b8245813 releaser: Bump versions for release of 0.104.3
[ci skip]
2022-10-04 14:25:23 +00:00
Bjørn Erik Pedersen ec57cf2c30 resources: Update golden image dithering exception list 2022-10-04 16:19:52 +02:00
Bjørn Erik Pedersen 3a9cb7b0fb resources/images: Fix 2 animated GIF resize issues
* Fix resize of animated GIF when target != GIF
* Avoid processing all GIF frames if targetFormat != GIF

Fixes #10354
2022-10-04 15:38:12 +02:00
Anthony Fok 0addb302ac server: Fix flaky TestServerPathEncodingIssues tests
Set getNumHomes: 1 to enable 567 ms or 2 s of wait for the server
to be ready in TestServerPathEncodingIssues/Unicode_paths and
TestServerPathEncodingIssues/Windows_multilingual_404.

Fixes #10332
2022-10-04 14:48:29 +02:00
Joe Mooring b002d47953 commands: Remove extraneous newline from result of convert toTOML
Fixes #10351
2022-10-04 09:28:34 +02:00
Ricardo N Feliciano e3f31352d4 config/security: Fix filename 2022-10-02 12:52:04 +02:00
hugoreleaser ec02c537ed releaser: Prepare repository for 0.105.0-DEV
[ci skip]
2022-09-29 10:47:15 +00:00
hugoreleaser 84cbe72498 releaser: Bump versions for release of 0.104.2
[ci skip]
2022-09-29 10:31:09 +00:00
Bjørn Erik Pedersen 4611b6920b Fix htimes /: operation not permitted error on config changes
Regression introduced in v0.104.1.
2022-09-29 12:27:25 +02:00
Bjørn Erik Pedersen 2171e3c9a5 Revert "Adjust a test"
Committed by mistake.
This reverts commit cac773aeff.
2022-09-27 11:42:25 +02:00
Bjørn Erik Pedersen cac773aeff Adjust a test 2022-09-27 11:41:15 +02:00
hugoreleaser 51010a69bc releaser: Prepare repository for 0.105.0-DEV
[ci skip]
2022-09-26 17:17:27 +00:00
hugoreleaser 8958b8741f releaser: Bump versions for release of 0.104.1
[ci skip]
2022-09-26 17:05:45 +00:00
Bjørn Erik Pedersen 29ccb36069 Fix /static performance regression from Hugo 0.103.0
In `v0.103.0` we added support for `resources.PostProcess` for all file types, not just HTML. We had benchmarks that said we were fine in that department, but those did not consider the static file syncing.

This fixes that by:

* Making sure that the /static syncer always gets its own file system without any checks for the post process token.
* For dynamic files (e.g. rendered HTML files) we add an additional check to make sure that we skip binary files (e.g. images)

Fixes #10328
2022-09-26 19:02:25 +02:00
hugoreleaser d8aba18e05 releaser: Prepare repository for 0.105.0-DEV
[ci skip]
2022-09-23 14:44:31 +00:00
hugoreleaser c744dbd6ed releaser: Bump versions for release of 0.104.0
[ci skip]
2022-09-23 14:32:56 +00:00
Bjørn Erik Pedersen 5c41653364 Consolidate the glob case logic
Looking at the code as a whole, we ended up with a little to much "buttons". It turns out that doing case insensitive matching (lower both pattern and strings to match) performs just fine. Or at least, it
gives the penalty to the people who uses mixed case filenames.

```
GetGlob/Default_cache-10                          10.6ns ± 2%    10.6ns ± 1%   ~     (p=0.657 n=4+4)
GetGlob/Filenames_cache,_lowercase_searchs-10     10.6ns ± 2%    10.6ns ± 0%   ~     (p=1.000 n=4+4)
GetGlob/Filenames_cache,_mixed_case_searchs-10    29.7ns ± 1%    29.6ns ± 1%   ~     (p=0.886 n=4+4)
GetGlob/GetGlob-10                                13.7ns ± 1%    13.7ns ± 0%   ~     (p=0.429 n=4+4)

name                                            old alloc/op   new alloc/op   delta
GetGlob/Default_cache-10                           0.00B          0.00B        ~     (all equal)
GetGlob/Filenames_cache,_lowercase_searchs-10      0.00B          0.00B        ~     (all equal)
GetGlob/Filenames_cache,_mixed_case_searchs-10     5.00B ± 0%     5.00B ± 0%   ~     (all equal)
GetGlob/GetGlob-10                                 0.00B          0.00B        ~     (all equal)

name                                            old allocs/op  new allocs/op  delta
GetGlob/Default_cache-10                            0.00           0.00        ~     (all equal)
GetGlob/Filenames_cache,_lowercase_searchs-10       0.00           0.00        ~     (all equal)
GetGlob/Filenames_cache,_mixed_case_searchs-10      1.00 ± 0%      1.00 ± 0%   ~     (all equal)
GetGlob/GetGlob-10
```
2022-09-23 16:19:21 +02:00
satotake 281554ee97 hugofs: Fix glob case-sensitivity bug
On Linux, `hugofs.Glob` does not hit any directories which includes
uppercase letters. (This does not happen on macOS.)

Since `resources.GetMatch/Match` uses `Glob`,

```
{{ resources.GetMatch "Foo/bar.css" }}
```

this does not match `assets/Foo/bar.css` .

On the other hand, you can get it with

```
{{ resources.Get "Foo/bar.css" }}
```
2022-09-23 13:12:57 +02:00
Bjørn Erik Pedersen f3560aa0e1 server: Fix 404 redirects on Windows
Fixes #10314
2022-09-23 13:07:56 +02:00
dependabot[bot] edf9038a92 build(deps): bump github.com/evanw/esbuild from 0.15.8 to 0.15.9
Bumps [github.com/evanw/esbuild](https://github.com/evanw/esbuild) from 0.15.8 to 0.15.9.
- [Release notes](https://github.com/evanw/esbuild/releases)
- [Changelog](https://github.com/evanw/esbuild/blob/master/CHANGELOG.md)
- [Commits](https://github.com/evanw/esbuild/compare/v0.15.8...v0.15.9)

---
updated-dependencies:
- dependency-name: github.com/evanw/esbuild
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-23 10:56:45 +02:00
dependabot[bot] 78f49b4c0d build(deps): bump github.com/yuin/goldmark from 1.4.14 to 1.4.15
Bumps [github.com/yuin/goldmark](https://github.com/yuin/goldmark) from 1.4.14 to 1.4.15.
- [Release notes](https://github.com/yuin/goldmark/releases)
- [Commits](https://github.com/yuin/goldmark/compare/v1.4.14...v1.4.15)

---
updated-dependencies:
- dependency-name: github.com/yuin/goldmark
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-22 19:25:55 +02:00
dependabot[bot] fa4b77e7ed build(deps): bump github.com/getkin/kin-openapi from 0.100.0 to 0.103.0
Bumps [github.com/getkin/kin-openapi](https://github.com/getkin/kin-openapi) from 0.100.0 to 0.103.0.
- [Release notes](https://github.com/getkin/kin-openapi/releases)
- [Commits](https://github.com/getkin/kin-openapi/compare/v0.100.0...v0.103.0)

---
updated-dependencies:
- dependency-name: github.com/getkin/kin-openapi
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-22 19:05:44 +02:00
Bjørn Erik Pedersen 8377c3cea1 docs: Regen docs helper 2022-09-22 18:55:00 +02:00
dependabot[bot] 4d909d4768 build(deps): bump github.com/alecthomas/chroma/v2 from 2.2.0 to 2.3.0
Bumps [github.com/alecthomas/chroma/v2](https://github.com/alecthomas/chroma) from 2.2.0 to 2.3.0.
- [Release notes](https://github.com/alecthomas/chroma/releases)
- [Changelog](https://github.com/alecthomas/chroma/blob/master/.goreleaser.yml)
- [Commits](https://github.com/alecthomas/chroma/compare/v2.2.0...v2.3.0)

---
updated-dependencies:
- dependency-name: github.com/alecthomas/chroma/v2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-22 18:54:27 +02:00
dependabot[bot] 4eb6d97404 build(deps): bump github.com/evanw/esbuild from 0.15.7 to 0.15.8
Bumps [github.com/evanw/esbuild](https://github.com/evanw/esbuild) from 0.15.7 to 0.15.8.
- [Release notes](https://github.com/evanw/esbuild/releases)
- [Changelog](https://github.com/evanw/esbuild/blob/master/CHANGELOG.md)
- [Commits](https://github.com/evanw/esbuild/compare/v0.15.7...v0.15.8)

---
updated-dependencies:
- dependency-name: github.com/evanw/esbuild
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-22 18:53:12 +02:00
Bjørn Erik Pedersen 4f9cb4f344 docs: Regenerate CLI docs 2022-09-22 17:57:13 +02:00
Bjørn Erik Pedersen 0171fb2010 Run go mod tidy 2022-09-22 17:42:48 +02:00
Bjørn Erik Pedersen a4028112e3 resources/images: Add $image.Colors
Which returns the most dominant colors of an image using a simple histogram method.

Fixes #10307
2022-09-22 15:57:35 +02:00
Bjørn Erik Pedersen 08f0984f91 commands: Skip flaky test on CI 2022-09-22 11:24:42 +02:00
Mathieu Parent 86653fa38e config/security: Allow proxy variables in subcommands
In particular for go get
2022-09-19 12:37:35 +02:00
hugoreleaser c46d104985 releaser: Prepare repository for 0.104.0-DEV
[ci skip]
2022-09-18 13:31:21 +00:00
hugoreleaser b665f1e8f1 releaser: Bump versions for release of 0.103.1
[ci skip]
2022-09-18 13:19:01 +00:00
Bjørn Erik Pedersen 6be6752c8a server: Fix redirects when file path contains bytes > 0x80
Fixes #10287
2022-09-18 15:16:11 +02:00
Bjørn Erik Pedersen 8e9dce1092 Merge branch 'release-0.103.0' 2022-09-15 18:47:37 +02:00
hugoreleaser 00b71668b2 releaser: Prepare repository for 0.104.0-DEV
[ci skip]
2022-09-15 16:35:38 +00:00
hugoreleaser beebf2afb0 releaser: Bump versions for release of 0.103.0
[ci skip]
2022-09-15 16:23:56 +00:00
Bjørn Erik Pedersen 3f0b40f674 Use standard GOOS/GOARCH values in release archives
But create aliases with old filenames for the 2 most downloaded archives (to avoid Netlify etc. breaking).

Fixes #10073
2022-09-15 18:22:35 +02:00
Bjørn Erik Pedersen 0bd79d30c1 Use standard GOOS/GOARCH values in release archives
But create aliases with old filenames for the 2 most downloaded archives (to avoid Netlify etc. breaking).

Fixes #10073
2022-09-15 12:26:22 +02:00
Bjørn Erik Pedersen 8e77bcc930 Filter out any duplicate files to post process
Updates #10269
2022-09-14 19:42:55 +02:00
Bjørn Erik Pedersen 74daca6b30 Support PostProcess for all file types
Not just HTML.

Fixes #10269
2022-09-14 19:09:20 +02:00
dependabot[bot] 1fd4c562af build(deps): bump github.com/gobuffalo/flect from 0.2.5 to 0.3.0
Bumps [github.com/gobuffalo/flect](https://github.com/gobuffalo/flect) from 0.2.5 to 0.3.0.
- [Release notes](https://github.com/gobuffalo/flect/releases)
- [Commits](https://github.com/gobuffalo/flect/compare/v0.2.5...v0.3.0)

---
updated-dependencies:
- dependency-name: github.com/gobuffalo/flect
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-14 18:12:47 +02:00
Bjørn Erik Pedersen a5cda5ca4d server: Add 404 support 2022-09-14 14:25:33 +02:00
dependabot[bot] 5e2b28d6e6 build(deps): bump github.com/getkin/kin-openapi from 0.98.0 to 0.100.0
Bumps [github.com/getkin/kin-openapi](https://github.com/getkin/kin-openapi) from 0.98.0 to 0.100.0.
- [Release notes](https://github.com/getkin/kin-openapi/releases)
- [Commits](https://github.com/getkin/kin-openapi/compare/v0.98.0...v0.100.0)

---
updated-dependencies:
- dependency-name: github.com/getkin/kin-openapi
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-14 11:21:14 +02:00
dependabot[bot] f2019f0a23 build(deps): bump github.com/evanw/esbuild from 0.15.5 to 0.15.7
Bumps [github.com/evanw/esbuild](https://github.com/evanw/esbuild) from 0.15.5 to 0.15.7.
- [Release notes](https://github.com/evanw/esbuild/releases)
- [Changelog](https://github.com/evanw/esbuild/blob/master/CHANGELOG.md)
- [Commits](https://github.com/evanw/esbuild/compare/v0.15.5...v0.15.7)

---
updated-dependencies:
- dependency-name: github.com/evanw/esbuild
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-14 10:58:32 +02:00
dependabot[bot] 475638fe02 build(deps): bump github.com/yuin/goldmark from 1.4.13 to 1.4.14
Bumps [github.com/yuin/goldmark](https://github.com/yuin/goldmark) from 1.4.13 to 1.4.14.
- [Release notes](https://github.com/yuin/goldmark/releases)
- [Commits](https://github.com/yuin/goldmark/compare/v1.4.13...v1.4.14)

---
updated-dependencies:
- dependency-name: github.com/yuin/goldmark
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-14 10:58:12 +02:00
Bjørn Erik Pedersen 203cc54578 Feat/sponsors in readme (#10273)
* Update README.md

* Update README.md
2022-09-14 10:20:57 +02:00
Bjørn Erik Pedersen 90ad804505 Squashed 'docs/' changes from e5aa641a6..392668f4f
392668f4f Update theme
65d82c845 fix versions in GitHub Pages docs (#1815)
4e078a306 Create hosting-on-azure-static-web-apps.md (#1738)
e24e25052 fix requirement typo (#1814)
0790eb173 fix broken link (#1813)
f4a1b38c7 📄 Add more clarity on merging of config files (#1493)
2e82efff0 Install on Windows: Correct + augment (#1520)
4bffd076e Update frontends to add CloudCannon's CMS (#1509)
17eea3133 Update index.md to add resource (#1508)
5a5ac1d2f Add documentation for babel sourceMap (#1492)
899b7117c Update menu-templates.md
284dc4266 Include flexible translation in i18n.md
f03421274 docs: Escaping Hugo/GO template code
4f0755683 Improve the documentation of imageConfig and the image resource
89aa723cc Clarify leaf bundle explanation and related FAQ
0c6b32bb9 Update starter-kits.md
a68151b1b Update starter-kits.md
91b145384 Update starter-kits.md
c8104b422 Update hosting-on-21yunbox.md
51ee7603b Update hosting-on-21yunbox.md
d88314499 docs(en): add hosting on 21YunBox
aab04f269 Update shortcode-templates.md to correct an error.
ed48563aa Misc improvements
87dd24e1d Fix merge failure
0bcc6dca8 js.Build: Update docs to not allow boolean inputs for sourceMap
e50a28fbc js.Build: Add SourceMap flag into js.Build opts which can turn on sourcemap
9695093a1 Fix Arch Linux installation command
3de773d7a Please remove hugo-elasticsearch plugin.
6510f0a5a release: Add some more ignore expressions to release notes config
dc90b7517 typoe > typo (!)
3427c7436 Add hugoreleaser config
5a1f2d0dd Improves formatting of resources, assets sections (#1804)
03ba56fdd Remove Flesland Flis from Showcases
9f61dac7a Update slice.md
533e4e0cd Update theme
85e50325c Simplify writing
9b30e81b9 Typo fix and remove passive form
8974b6c53 dynamic-menu-configuration
1c5467329 netlify: Hugo 0.102.3
610a937b0 Remove Over from Showcase
99f5585bc  netlify: Hugo v0.102.2
9f230ac1f netlify: Hugo v0.102.1
a6fc3f864 netlify: Bump to Hugo v0.102.0
3e9bc1a62 Merge branch 'tempv0.102.0'
c08d6d898 Update en/templates/404.md with Firebase Hosting (#1796)
322b75f40 Update configuration.md
2fa6f0b94 404 template example: remove slash relURL arg
1195f168a Remove broken link (#1767)
e0838e574 Update RenderString.md
bee6adf71 Update page-resources.md
24e142f22 Remove duplicate word from cascade description
879fc3983 docs: Update the description of PostCSS config
2ffe539e3 fix: Use `=` instead of `:=` for variable reassignments (#1771)
7496b8f87 update 404 error for digitalocean docs
c85caca4a Merge commit 'bdf935d66c1f02dfc942a30e9fc00519bba3aacb'
c3888b63a docs: Regen docshelper
8a5942555 Merge commit '475f87f685439de0f907a9ffc29bfd1361eb1c59'
282007217 common: Add hugo.GoVersion
00b4b46da resources/page: Add :slugorfilename attribute

git-subtree-dir: docs
git-subtree-split: 392668f4f4
2022-09-13 20:34:24 +02:00
Bjørn Erik Pedersen af23cdca9c Merge commit '90ad8045056167004d27857a95542936657b8a16' 2022-09-13 20:34:24 +02:00
satotake ab5ce59894 Fix usage description 2022-09-08 15:35:11 +02:00
satotake 7d40da876c Add --force to hugo new
Closes #9243
2022-09-08 15:35:11 +02:00
Jenny Rakoczy 02c89a446d scss: Handle single-file sourcemaps correctly
Simple sites may only have one css file. Update the replace directive to
correctly match single-file sourcemaps and multi-file sourcemaps.

Verified locally with and without SASS and CSS imports.

Fixes #8174
2022-09-06 10:52:28 +02:00
Bjørn Erik Pedersen 06c3ac6741 release: Bump Hugoreleaser version 2022-09-03 11:38:03 +02:00
Alex 5e03de0ddb Update stale.yml
Signed-off-by: sashashura <93376818+sashashura@users.noreply.github.com>
2022-09-02 20:13:02 +02:00
hugoreleaser bef31b58aa releaser: Prepare repository for 0.103.0-DEV
[ci skip]
2022-09-01 10:34:57 +00:00
hugoreleaser b76146b129 releaser: Bump versions for release of 0.102.3
[ci skip]
2022-09-01 10:16:19 +00:00
Bjørn Erik Pedersen 8e5044d7f5 Fix shortcode parser regression with quoted param values
This issue was introduced in `v0.102.0`.

In 223bf28004 we removed the byte source from the parsed page result, which
meant we had to preserve exact positioning for all elements. This introduced some new `TypeIgnore` tokens
which we, wrongly, assumed didn't matter where we put in the result slice (they should be ignored anyway).

But it seems that this broke the logic where we determine if it's positional or named params in the case
where the paramater value contains escaped quoutes.

This commit makes sure that these ignore tokens (the back slashes) are never sent back to the client, which is how it was before `v0.102.0`.

This commit also fixes some lost error information in that same commit.

Fixes #10236
2022-09-01 12:13:23 +02:00
Joe Mooring 5046a6c7ca deps: Update github.com/tdewolff/minify/v2 v2.12.0 => v2.12.1
Fixes #10230
2022-08-31 09:02:50 +02:00
Anthony Fok 160a067c81 snap: Use "snapcraftctl set-grade"
This, together with 'snapcraftctl set-version", negates the need to
modify snap/snapcraft.yaml upon each release, so the corresponding code
is removed from releaser/releaser.go.

Also, vendorInfo is extended to include the snap version number.

See #10225
2022-08-30 05:23:18 -06:00
Anthony Fok e0ba1a805a snap: Use "snapcraftctl set-version"
This allows the use of "git describe --tags" to recognize lightweight
version tags, and the removal of initial "v" in the hugo snap version.

See #10225
2022-08-29 23:14:22 -06:00
Anthony Fok 7b49c56a6a snap: Make external dependencies actually work
Git:
 - Set GIT_EXEC_PATH and include usr/lib/git-core so that git can find the
   git-remote-https helper (needed by e.g. "go mod download").

Go:
 - Put Go in its own snap part, and use stage-snaps instead of build-snaps
   so that it is included in the final snap.
 - Set GOCACHE to a writable directory. (In a previous commit,
   HOME is set to $SNAP_REAL_HOME which is unwritable.)

Hugo:
 - Patch config/security/securityConfig.go "[security.exec] osEnv" whitelist
   (during snap build) so that external dependencies can use the required
   environment variables to run properly from within the snap.

Asciidoctor:
 - Replace shebang line in asciidoctor so it can find the ruby executable.
 - Set RUBYLIB so that Ruby can find its libraries.
   Caveat/TODO: The Ruby version is hardcoded in our custom RUBYLIB.

Embedded Dart Sass:
 - Download from GitHub and install it, for amd64 and arm64 only.

Node.js:
 - Remove my incomplete include list so that npx is actually installed.
 - Set npm_config_{cache,init_module,userconfig} to writable locations.

Pandoc:
 - Set pandoc_datadir so that Pandoc can find its data files.

rst2html:
 - Install python3-docutils package for rst2html, rst2html5, etc.
 - Set PYTHONHOME so that Python can find its libraries.

Note that asciidoctor, pandoc and rst2html are not in Hugo’s default
"[security.exec] allow" whitelist, and the snap package does not change
that default, so they still needed to be whitelisted manually in
config.toml if necessary by the end user.

Special thanks to Joe Mooring (@jmooring) for meticulously diagnosing
the issue and providing a comprehensive test repository at
https://github.com/jmooring/hugo-snap-test without which I would not
have been able to understand and resolve the issue.

Fixes #9078
2022-08-29 12:24:58 -06:00
Bjørn Erik Pedersen dffca57883 release: Add the releaser commits to the ignore list 2022-08-29 16:29:45 +02:00
Bjørn Erik Pedersen 79932e7225 release: Fix the Deb archives
Fixes #10220
2022-08-29 14:56:15 +02:00
hugoreleaser 9eb9b70a29 releaser: Prepare repository for 0.103.0-DEV
[ci skip]
2022-08-28 16:41:06 +00:00
hugoreleaser 0ff4a9326f releaser: Bump versions for release of 0.102.0
[ci skip]
2022-08-28 16:29:34 +00:00
Bjørn Erik Pedersen 45e1084ff2 Add linux/arm64 extended to release setup
Fixes #8257
2022-08-28 18:23:01 +02:00
Bjørn Erik Pedersen c98348416c license: Add copyright info
Closes #10218
2022-08-28 12:55:47 +02:00
dependabot[bot] 2de393c791 build(deps): bump go.uber.org/atomic from 1.9.0 to 1.10.0
Bumps [go.uber.org/atomic](https://github.com/uber-go/atomic) from 1.9.0 to 1.10.0.
- [Release notes](https://github.com/uber-go/atomic/releases)
- [Changelog](https://github.com/uber-go/atomic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/uber-go/atomic/compare/v1.9.0...v1.10.0)

---
updated-dependencies:
- dependency-name: go.uber.org/atomic
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-28 12:02:17 +02:00
dependabot[bot] 7efb35680f build(deps): bump github.com/kyokomi/emoji/v2 from 2.2.9 to 2.2.10
Bumps [github.com/kyokomi/emoji/v2](https://github.com/kyokomi/emoji) from 2.2.9 to 2.2.10.
- [Release notes](https://github.com/kyokomi/emoji/releases)
- [Commits](https://github.com/kyokomi/emoji/compare/v2.2.9...v2.2.10)

---
updated-dependencies:
- dependency-name: github.com/kyokomi/emoji/v2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-26 18:50:51 +02:00
dependabot[bot] ddbcc67122 build(deps): bump github.com/getkin/kin-openapi from 0.97.0 to 0.98.0
Bumps [github.com/getkin/kin-openapi](https://github.com/getkin/kin-openapi) from 0.97.0 to 0.98.0.
- [Release notes](https://github.com/getkin/kin-openapi/releases)
- [Commits](https://github.com/getkin/kin-openapi/compare/v0.97.0...v0.98.0)

---
updated-dependencies:
- dependency-name: github.com/getkin/kin-openapi
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-26 18:48:56 +02:00
Bjørn Erik Pedersen fd75f129b2 deps: Update github.com/pelletier/go-toml/v2 v2.0.2 => v2.0.4
Closes #10210
2022-08-26 18:30:46 +02:00
dependabot[bot] 14878ca0a0 build(deps): bump github.com/spf13/afero from 1.8.2 to 1.9.2
Bumps [github.com/spf13/afero](https://github.com/spf13/afero) from 1.8.2 to 1.9.2.
- [Release notes](https://github.com/spf13/afero/releases)
- [Commits](https://github.com/spf13/afero/compare/v1.8.2...v1.9.2)

---
updated-dependencies:
- dependency-name: github.com/spf13/afero
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-26 12:01:51 +02:00
dependabot[bot] e88873b803 build(deps): bump github.com/tdewolff/parse/v2 from 2.6.1 to 2.6.2
Bumps [github.com/tdewolff/parse/v2](https://github.com/tdewolff/parse) from 2.6.1 to 2.6.2.
- [Release notes](https://github.com/tdewolff/parse/releases)
- [Commits](https://github.com/tdewolff/parse/compare/v2.6.1...v2.6.2)

---
updated-dependencies:
- dependency-name: github.com/tdewolff/parse/v2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-26 12:01:19 +02:00
dependabot[bot] 4219993b0c build(deps): bump github.com/mattn/go-isatty from 0.0.14 to 0.0.16
Bumps [github.com/mattn/go-isatty](https://github.com/mattn/go-isatty) from 0.0.14 to 0.0.16.
- [Release notes](https://github.com/mattn/go-isatty/releases)
- [Commits](https://github.com/mattn/go-isatty/compare/v0.0.14...v0.0.16)

---
updated-dependencies:
- dependency-name: github.com/mattn/go-isatty
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-25 12:28:50 +02:00
dependabot[bot] 988e1417a0 build(deps): bump github.com/rogpeppe/go-internal from 1.8.1 to 1.9.0
Bumps [github.com/rogpeppe/go-internal](https://github.com/rogpeppe/go-internal) from 1.8.1 to 1.9.0.
- [Release notes](https://github.com/rogpeppe/go-internal/releases)
- [Commits](https://github.com/rogpeppe/go-internal/compare/v1.8.1...v1.9.0)

---
updated-dependencies:
- dependency-name: github.com/rogpeppe/go-internal
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-23 13:36:47 +02:00
dependabot[bot] 42529882ce build(deps): bump github.com/yuin/goldmark from 1.4.12 to 1.4.13
Bumps [github.com/yuin/goldmark](https://github.com/yuin/goldmark) from 1.4.12 to 1.4.13.
- [Release notes](https://github.com/yuin/goldmark/releases)
- [Commits](https://github.com/yuin/goldmark/compare/v1.4.12...v1.4.13)

---
updated-dependencies:
- dependency-name: github.com/yuin/goldmark
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-23 13:34:24 +02:00
dependabot[bot] 45f1b1cfc5 build(deps): bump github.com/spf13/cobra from 1.4.0 to 1.5.0
Bumps [github.com/spf13/cobra](https://github.com/spf13/cobra) from 1.4.0 to 1.5.0.
- [Release notes](https://github.com/spf13/cobra/releases)
- [Commits](https://github.com/spf13/cobra/compare/v1.4.0...v1.5.0)

---
updated-dependencies:
- dependency-name: github.com/spf13/cobra
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-23 06:53:38 +02:00
dependabot[bot] 369bdf22f8 build(deps): bump github.com/tdewolff/minify/v2 from 2.11.10 to 2.12.0
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify) from 2.11.10 to 2.12.0.
- [Release notes](https://github.com/tdewolff/minify/releases)
- [Commits](https://github.com/tdewolff/minify/compare/v2.11.10...v2.12.0)

---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-23 00:00:14 +02:00
dependabot[bot] d1b03a093f build(deps): bump github.com/evanw/esbuild from 0.14.43 to 0.15.5
Bumps [github.com/evanw/esbuild](https://github.com/evanw/esbuild) from 0.14.43 to 0.15.5.
- [Release notes](https://github.com/evanw/esbuild/releases)
- [Changelog](https://github.com/evanw/esbuild/blob/master/CHANGELOG.md)
- [Commits](https://github.com/evanw/esbuild/compare/v0.14.43...v0.15.5)

---
updated-dependencies:
- dependency-name: github.com/evanw/esbuild
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-22 23:58:15 +02:00
Reece Russell 941c28ab0c readme: Add Golang URL to Go links 2022-08-22 19:45:15 +02:00
Bjørn Erik Pedersen ffbdcc75ab Update README.md 2022-08-19 19:15:58 +02:00
Bjørn Erik Pedersen 95d9764518 Update README.md 2022-08-19 19:12:43 +02:00
Bjørn Erik Pedersen b66f9f2665 Update README.md 2022-08-19 19:12:04 +02:00
Anthony Fok f7e00c039f github: Use GitHub's Choco-Install function to retry installs
Apparently, two instances of "choco install mingw" running simultaneously
(for go-version 1.18.x and 1.19.x) would often cause at least one of them
to fail to connect to SourceForge:

    ERROR: The remote file either doesn't exist, is unauthorized,
    or is forbidden for url
    'https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/ray_linn/GCC-10.X-with-ada/GCC-10.2.0-crt-8.0.0-with-ada-20201019.7z/download'.
    Exception calling "GetResponse" with "0" argument(s):
    "The request was aborted: Could not create SSL/TLS secure channel."

With Choco-Install however, it simply works every single time!

Thanks to keymanapp/api.keyman.com#156 for the great tip!

See the definition of the PowerShell Choco-Install function here:
https://github.com/actions/runner-images/blob/main/images/win/scripts/ImageHelpers/ChocoHelpers.ps1
2022-08-14 00:52:23 -06:00
Bjørn Erik Pedersen f5ba6fd45c common/hugio: One more fix for non-OS fs
Note that these are only used with OS fs, so no practical bugs, but still-
2022-08-13 19:22:45 +02:00
Bjørn Erik Pedersen c4bbc1eeeb common/hugio: Fix CopyDir when fs is not OS 2022-08-13 18:26:16 +02:00
Anthony Fok 0e0fb1b648 snap: Delete obsolete custom x-nodejs plugins 2022-08-12 21:39:25 -06:00
satotake b017f7cb01 livereload: Inject script without head or body tag
Currently, Hugo does not inject `livereload` script if html does not contain `<head>` or `<body>`. This sometimes happens if you create new sites without `theme` and it is hard to catch the cause soon.

This PR:

* Inject livereload script even if html does not include `<head>`, `<body>`, or `<html>`
    - Modern browsers execute scripts even if they are outside `<html>`
    - Some js frameworks (confirmed with vite) inject HRM script without `<html>` tag
* Append warning script to html if `<head>` or `<body>` is not in html
* Fix bug that livereload cannot be appended to the tags with attrs

Close #10105
2022-08-07 18:34:01 +02:00
Bjørn Erik Pedersen 7fb28085ac releaser: Fat MacOS binaries
Closes #9131
2022-08-03 23:22:01 +02:00
Bjørn Erik Pedersen 0cd1929b9c Update to Go 1.19
Fixes #10145
2022-08-03 23:22:01 +02:00
piyo cbdaff2135 markup/goldmark/codeblock: Fix attributes when no language identifier in CodeBlock
Fixes #10118
2022-08-03 11:32:08 +02:00
杨晴 3fefea06b8 commands: Fix embed in livereload.go 2022-08-01 11:42:26 +02:00
Bjørn Erik Pedersen 5c48ba9343 Update README.md
Updates #10136
2022-07-31 15:41:42 +02:00
Takeshi Sato 21562e3aad Externalise and embed livereload.js string
This is a small refactoring. `livereload/livereload.go` has a wide
column. Sometimes language server does not work because of it.
Create a new js file and embed it.
2022-07-26 13:51:08 +02:00
Bjørn Erik Pedersen 9c24b86e4b Cache when not found in LookupLayout
Very visible when using the pprof mutex profiler.

```bash
name         old time/op    new time/op    delta
Baseline-10    58.4ms ± 1%    51.6ms ± 0%  -11.56%  (p=0.029 n=4+4)

name         old alloc/op   new alloc/op   delta
Baseline-10    64.3MB ± 0%    64.2MB ± 0%     ~     (p=0.114 n=4+4)

name         old allocs/op  new allocs/op  delta
Baseline-10      649k ± 0%      649k ± 0%     ~     (p=0.229 n=4+4)
```
2022-07-13 15:49:00 +02:00
740 changed files with 13356 additions and 8858 deletions
+96 -33
View File
@@ -1,51 +1,114 @@
defaults: &defaults
docker:
- image: bepsays/ci-goreleaser:1.1800.300
environment:
CGO_ENABLED: "0"
parameters:
# v2: 11m.
defaults: &defaults
resource_class: large
docker:
- image: bepsays/ci-hugoreleaser:1.22000.20001
environment: &buildenv
GOMODCACHE: /root/project/gomodcache
version: 2
jobs:
build:
<<: *defaults
prepare_release:
<<: *defaults
environment: &buildenv
GOMODCACHE: /root/project/gomodcache
steps:
- checkout:
- &remote-docker
setup_remote_docker:
version: 20.10.14
- checkout:
path: hugo
- &git-config
run:
command: |
git config --global user.email "bjorn.erik.pedersen+hugoreleaser@gmail.com"
git config --global user.name "hugoreleaser"
- run:
command: |
git clone git@github.com:gohugoio/hugoDocs.git
cd hugo
go mod download
sleep 5
go mod verify
- persist_to_workspace:
root: .
paths: .
release:
<<: *defaults
command: |
cd hugo
go mod download
go run -tags release main.go release --step 1
- save_cache:
key: git-sha-{{ .Revision }}
paths:
- hugo
- gomodcache
build_container1:
<<: [*defaults]
environment:
<<: [*buildenv]
steps:
- attach_workspace:
at: /root/project
- &restore-cache
restore_cache:
key: git-sha-{{ .Revision }}
- run:
command: |
cd hugo
git config --global user.email "bjorn.erik.pedersen+hugoreleaser@gmail.com"
git config --global user.name "hugoreleaser"
go run -tags release main.go release -r ${CIRCLE_BRANCH}
no_output_timeout: 20m
command: |
mkdir -p /tmp/files/dist1
cd hugo
hugoreleaser build -paths "builds/container1/**" -workers 3 -dist /tmp/files/dist1 -chunks $CIRCLE_NODE_TOTAL -chunk-index $CIRCLE_NODE_INDEX
- &persist-workspace
persist_to_workspace:
root: /tmp/files
paths:
- dist1
- dist2
parallelism: 7
build_container2:
<<: [*defaults]
environment:
<<: [*buildenv]
docker:
- image: bepsays/ci-hugoreleaser-linux-arm64:1.22000.20001
steps:
- *restore-cache
- &attach-workspace
attach_workspace:
at: /tmp/workspace
- run:
command: |
mkdir -p /tmp/files/dist2
cd hugo
hugoreleaser build -paths "builds/container2/**" -workers 1 -dist /tmp/files/dist2
- *persist-workspace
archive_and_release:
<<: [*defaults]
environment:
<<: [*buildenv]
steps:
- *restore-cache
- *attach-workspace
- *git-config
- run:
command: |
cp -a /tmp/workspace/dist1/. ./hugo/dist
cp -a /tmp/workspace/dist2/. ./hugo/dist
- run:
command: |
cd hugo
hugoreleaser archive
hugoreleaser release
go run -tags release main.go release --step 2
workflows:
version: 2
release:
jobs:
- build:
- prepare_release:
filters:
branches:
only: /release-.*/
- hold:
type: approval
- build_container1:
requires:
- build
- release:
- prepare_release
- build_container2:
requires:
- prepare_release
- archive_and_release:
context: org-global
requires:
- hold
- build_container1
- build_container2
+5
View File
@@ -3,8 +3,13 @@ on:
workflow_dispatch:
schedule:
- cron: '30 1 * * *'
permissions:
contents: read
jobs:
stale:
permissions:
issues: write
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: dessant/lock-threads@08e671be8ac8944d0e132aa71d0ae8ccfb347675
+38 -25
View File
@@ -1,30 +1,41 @@
on: [push, pull_request]
on:
push:
branches: [ master ]
pull_request:
name: Test
env:
GOPROXY: https://proxy.golang.org
GO111MODULE: on
DART_SASS_VERSION: 1.56.2
DART_SASS_SHA_LINUX: 9e4f455f7b8619959d7878af2862383be58392eb963a14ff87cc512c03701e2a
DART_SASS_SHA_MACOS: 5992e979e2c30ec363f8e338822bb2b4443c74232b3340501a76180f5652cb09
DART_SASS_SHA_WINDOWS: 8d3d9117c54840e3e6a4919e43acf75ea52f28a64fc87a8e29d80ec72ee36cfb
permissions:
contents: read
jobs:
test:
env:
GOPROXY: https://proxy.golang.org
GO111MODULE: on
strategy:
matrix:
# Note: We upgraded to Go 1.18 in Hugo v0.95.0
# Go 1.18 had some breaking changes on the source level which means Hugo cannot be built
# with older Go versions, but the improvements in Go 1.18 were too good to pass on (e.g. break and continue).
# Note that you don't need Go (or Go 1.18) to run a pre-built binary.
go-version: [1.18.x]
go-version: [1.19.x,1.20.x]
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
- name: Install Go
uses: actions/setup-go@37335c7bb261b353407cff977110895fa0b4f7d8
uses: actions/setup-go@268d8c0ca0432bb2cf416faae41297df9d262d7f
with:
go-version: ${{ matrix.go-version }}
check-latest: true
cache: true
cache-dependency-path: |
**/go.sum
**/go.mod
- name: Install Ruby
uses: actions/setup-ruby@5f29a1cd8dfebf420691c4c9a0e832e2fae5a526
uses: ruby/setup-ruby@ee2113536afb7f793eed4ce60e8d3b26db912da4
with:
ruby-version: '2.7'
ruby-version: '2.7'
bundler-cache: true #
- name: Install Python
uses: actions/setup-python@3105fb18c05ddd93efea5f9e0bef7a03a6e9e7df
with:
@@ -33,8 +44,6 @@ jobs:
run: go install github.com/magefile/mage@07afc7d24f4d6d6442305d49552f04fbda5ccb3e
- name: Install asciidoctor
uses: reitzig/actions-asciidoctor@7570212ae20b63653481675fb1ff62d1073632b0
- name: Checkout code
uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f
- name: Install docutils
run: |
pip install docutils
@@ -49,29 +58,33 @@ jobs:
brew install pandoc
- if: matrix.os == 'windows-latest'
run: |
choco install pandoc
choco install mingw --version 10.2.0 --allow-downgrade
Choco-Install -PackageName pandoc
- run: pandoc -v
- if: matrix.os == 'windows-latest'
run: |
Choco-Install -PackageName mingw -ArgumentList "--version","10.2.0","--allow-downgrade"
- if: matrix.os == 'ubuntu-latest'
name: Install dart-sass-embedded Linux
run: |
curl -LJO https://github.com/sass/dart-sass-embedded/releases/download/1.0.0-beta.6/sass_embedded-1.0.0-beta.6-linux-x64.tar.gz;
echo "04fc1e5e28d29a4585a701941b6dace56771d94bfbe7f9e4db28d24417ceeec3 sass_embedded-1.0.0-beta.6-linux-x64.tar.gz" | sha256sum -c;
tar -xvf sass_embedded-1.0.0-beta.6-linux-x64.tar.gz;
echo "Install Dart Sass version ${DART_SASS_VERSION} ..."
curl -LJO "https://github.com/sass/dart-sass-embedded/releases/download/${DART_SASS_VERSION}/sass_embedded-${DART_SASS_VERSION}-linux-x64.tar.gz";
echo "${DART_SASS_SHA_LINUX} sass_embedded-${DART_SASS_VERSION}-linux-x64.tar.gz" | sha256sum -c;
tar -xvf "sass_embedded-${DART_SASS_VERSION}-linux-x64.tar.gz";
echo "$GITHUB_WORKSPACE/sass_embedded/" >> $GITHUB_PATH
- if: matrix.os == 'macos-latest'
name: Install dart-sass-embedded MacOS
run: |
curl -LJO https://github.com/sass/dart-sass-embedded/releases/download/1.0.0-beta.6/sass_embedded-1.0.0-beta.6-macos-x64.tar.gz;
echo "b3b984675a9b04aa22f6f2302dda4191b507ac2ca124467db2dfe7e58e72fbad sass_embedded-1.0.0-beta.6-macos-x64.tar.gz" | shasum -a 256 -c;
tar -xvf sass_embedded-1.0.0-beta.6-macos-x64.tar.gz;
echo "Install Dart Sass version ${DART_SASS_VERSION} ..."
curl -LJO "https://github.com/sass/dart-sass-embedded/releases/download/${DART_SASS_VERSION}/sass_embedded-${DART_SASS_VERSION}-macos-x64.tar.gz";
echo "${DART_SASS_SHA_MACOS} sass_embedded-${DART_SASS_VERSION}-macos-x64.tar.gz" | shasum -a 256 -c;
tar -xvf "sass_embedded-${DART_SASS_VERSION}-macos-x64.tar.gz";
echo "$GITHUB_WORKSPACE/sass_embedded/" >> $GITHUB_PATH
- if: matrix.os == 'windows-latest'
name: Install dart-sass-embedded Windows
run: |
curl -LJO https://github.com/sass/dart-sass-embedded/releases/download/1.0.0-beta.6/sass_embedded-1.0.0-beta.6-windows-x64.zip;
echo "6ae442129dbb3334bc21ef851261da6c0c1b560da790ca2e1350871d00ab816d sass_embedded-1.0.0-beta.6-windows-x64.zip" | sha256sum -c;
unzip sass_embedded-1.0.0-beta.6-windows-x64.zip;
echo "Install Dart Sass version ${env:DART_SASS_VERSION} ..."
curl -LJO "https://github.com/sass/dart-sass-embedded/releases/download/${env:DART_SASS_VERSION}/sass_embedded-${env:DART_SASS_VERSION}-windows-x64.zip";
Expand-Archive -Path "sass_embedded-${env:DART_SASS_VERSION}-windows-x64.zip" -DestinationPath .;
echo "$env:GITHUB_WORKSPACE/sass_embedded/" | Out-File -FilePath $Env:GITHUB_PATH -Encoding utf-8 -Append
- name: Check
run: |
+1 -28
View File
@@ -1,29 +1,2 @@
/hugo
docs/public*
/.idea
.vscode/*
hugo.exe
*.test
*.prof
nohup.out
cover.out
*.swp
*.swo
.DS_Store
*~
vendor/*/
*.bench
*.debug
coverage*.out
dock.sh
GoBuilds
dist
hugolib/hugo_stats.json
resources/sunset.jpg
vendor
.hugo_build.lock
*.test
+2 -4
View File
@@ -1,6 +1,6 @@
# Contributing to Hugo
>**Note:** We would apprecitate if you hold on with any big refactorings (like renaming deprecated Go packages), mainly because of potential for extra merge work for future coming in in the near future.
**Note March 16th 2022:** We are currently very constrained on human resources to do code reviews, so we currently require any new Pull Requests to be limited to bug fixes closing an existing issue. Also, we have updated to Go 1.18, but we will currently not accept any generic rewrites, "interface{} to any" replacements and similar.
# Contributing to Hugo
We welcome contributions to Hugo of any kind including documentation, themes,
organization, tutorials, blog posts, bug reports, issues, feature requests,
@@ -52,8 +52,6 @@ Hugo has become a fully featured static site generator, so any new functionality
If it is of some complexity, the contributor is expected to maintain and support the new feature in the future (answer questions on the forum, fix any bugs etc.).
It is recommended to open up a discussion on the [Hugo Forum](https://discourse.gohugo.io/) to get feedback on your idea before you begin.
Any non-trivial code change needs to update an open [issue](https://github.com/gohugoio/hugo/issues). A non-trivial code change without an issue reference with one of the labels `bug` or `enhancement` will not be merged.
Note that we do not accept new features that require [CGO](https://github.com/golang/go/wiki/cgo).
+2 -2
View File
@@ -2,7 +2,7 @@
# Twitter: https://twitter.com/gohugoio
# Website: https://gohugo.io/
FROM golang:1.18-alpine AS build
FROM golang:1.19-alpine AS build
# Optionally set HUGO_BUILD_TAGS to "extended" or "nodeploy" when building like so:
# docker build --build-arg HUGO_BUILD_TAGS=extended .
@@ -26,7 +26,7 @@ RUN mage hugo && mage install
# ---
FROM alpine:3.12
FROM alpine:3.16
COPY --from=build /go/bin/hugo /usr/bin/hugo
+1 -1
View File
@@ -186,7 +186,7 @@
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Copyright 2022 The Hugo Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+30 -37
View File
@@ -1,6 +1,6 @@
<a href="https://gohugo.io/"><img src="https://raw.githubusercontent.com/gohugoio/gohugoioTheme/master/static/images/hugo-logo-wide.svg?sanitize=true" alt="Hugo" width="565"></a>
A Fast and Flexible Static Site Generator built with love by [bep](https://github.com/bep), [spf13](https://spf13.com/) and [friends](https://github.com/gohugoio/hugo/graphs/contributors) in [Go][].
A Fast and Flexible Static Site Generator built with love by [bep](https://github.com/bep), [spf13](https://spf13.com/) and [friends](https://github.com/gohugoio/hugo/graphs/contributors) in [Go](https://go.dev/).
[Website](https://gohugo.io) |
[Forum](https://discourse.gohugo.io) |
@@ -13,9 +13,19 @@ A Fast and Flexible Static Site Generator built with love by [bep](https://githu
[![Tests on Linux, MacOS and Windows](https://github.com/gohugoio/hugo/workflows/Test/badge.svg)](https://github.com/gohugoio/hugo/actions?query=workflow%3ATest)
[![Go Report Card](https://goreportcard.com/badge/github.com/gohugoio/hugo)](https://goreportcard.com/report/github.com/gohugoio/hugo)
* [Overview](#overview)
* [Banner Sponsors](#banner-sponsors)
* [Supported Architectures](#supported-architectures)
* [Choose How to Install](#choose-how-to-install)
* [Install Hugo as Your Site Generator (Binary Install)](#install-hugo-as-your-site-generator-binary-install)
* [Build and Install the Binary from Source (Using the Go toolchain)](#build-and-install-the-binary-from-source-using-the-go-toolchain)
* [The Hugo Documentation](#the-hugo-documentation)
* [Contributing to Hugo](#contributing-code-to-hugo)
* [Dependencies](#dependencies)
## Overview
Hugo is a static HTML and CSS website generator written in [Go][].
Hugo is a static HTML and CSS website generator written in [Go](https://go.dev/).
It is optimized for speed, ease of use, and configurability.
Hugo takes a directory with content and templates and renders them into a full HTML website.
@@ -27,7 +37,17 @@ A good rule of thumb is that each piece of content renders in around 1 milliseco
Hugo is designed to work well for any kind of website including blogs, tumbles, and docs.
#### Supported Architectures
## Banner Sponsors
<p>&nbsp;</p>
<p float="left">
<a href="https://www.linode.com/?utm_campaign=hugosponsor&utm_medium=banner&utm_source=hugogithub" target="_blank"><img src="https://raw.githubusercontent.com/gohugoio/gohugoioTheme/master/assets/images/sponsors/linode-logo_standard_light_medium.png" width="200" alt="Linode"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://buttercms.com/hugo-cms/?utm_campaign=sponsorship&utm_medium=banner&utm_source=hugogithub" target="_blank"><img src="https://raw.githubusercontent.com/gohugoio/gohugoioTheme/master/assets/images/sponsors/butter-dark.svg?sanitize=true" width="280" alt="ButterCMS"></a>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a href="https://www.gravitykit.com/?ref=532&campaign=hugo&utm_campaign=hugosponsor&utm_medium=banner&utm_source=hugogithub" target="_blank"><img src="https://raw.githubusercontent.com/gohugoio/gohugoioTheme/master/assets/images/sponsors/graitykit-dark.svg?sanitize=true" width="160" alt="Gravity Kit"></a>
</p>
<p>&nbsp;</p>
## Supported Architectures
Currently, we provide pre-built Hugo binaries for Windows, Linux, FreeBSD, NetBSD, DragonFly BSD, OpenBSD, macOS (Darwin), and [Android](https://gist.github.com/bep/a0d8a26cf6b4f8bc992729b8e50b480b) for x64, i386 and ARM architectures.
@@ -38,7 +58,6 @@ Hugo may also be compiled from source wherever the Go compiler tool chain can ru
## Choose How to Install
If you want to use Hugo as your site generator, simply install the Hugo binaries.
The Hugo binaries have no external dependencies.
To contribute to the Hugo source code or documentation, you should [fork the Hugo GitHub project](https://github.com/gohugoio/hugo#fork-destination-box) and clone it to your local machine.
@@ -49,31 +68,24 @@ Building the binaries is an easy task for an experienced `go` getter.
Use the [installation instructions in the Hugo documentation](https://gohugo.io/getting-started/installing/).
### Build and Install the Binaries from Source (Advanced Install)
### Build and Install the Binary from Source (Using the Go toolchain)
#### Prerequisite Tools
* [Git](https://git-scm.com/)
* [Go (we test it with the last 2 major versions; but note that Hugo 0.95.0 only builds with >= Go 1.18.)](https://golang.org/dl/)
#### Fetch from GitHub
To fetch and build the source from GitHub:
To fetch, build and install from the Github source:
```bash
mkdir $HOME/src
cd $HOME/src
git clone https://github.com/gohugoio/hugo.git
cd hugo
go install
go install github.com/gohugoio/hugo@latest
```
**If you are a Windows user, substitute the `$HOME` environment variable above with `%USERPROFILE%`.**
If you want to compile with Sass/SCSS support use `--tags extended` and make sure `CGO_ENABLED=1` is set in your go environment. If you don't want to have CGO enabled, you may use the following command to temporarily enable CGO only for hugo compilation:
```bash
CGO_ENABLED=1 go install --tags extended
CGO_ENABLED=1 go install --tags extended github.com/gohugoio/hugo@latest
```
## The Hugo Documentation
@@ -83,9 +95,7 @@ The Hugo documentation now lives in its own repository, see https://github.com/g
```bash
git clone git@github.com:gohugoio/hugo.git
```
## Contributing to Hugo
**Note March 16th 2022:** We are currently very constrained on human resources to do code reviews, so we currently require any new Pull Requests to be limited to bug fixes closing an existing issue. Also, we have updated to Go 1.18, but we will currently not accept any generic rewrites, "interface{} to any" replacements and similar.
## Contributing code to Hugo
For a complete guide to contributing to Hugo, see the [Contribution Guide](CONTRIBUTING.md).
@@ -96,34 +106,18 @@ helping to manage issues, etc.
The Hugo community and maintainers are [very active](https://github.com/gohugoio/hugo/pulse/monthly) and helpful, and the project benefits greatly from this activity.
### Asking Support Questions
## Asking Support Questions
We have an active [discussion forum](https://discourse.gohugo.io) where users and developers can ask questions.
Please don't use the GitHub issue tracker to ask questions.
### Reporting Issues
## Reporting Issues
If you believe you have found a defect in Hugo or its documentation, use
the GitHub issue tracker to report the problem to the Hugo maintainers.
If you're not sure if it's a bug or not, start by asking in the [discussion forum](https://discourse.gohugo.io).
When reporting the issue, please provide the version of Hugo in use (`hugo version`).
### Submitting Patches
The Hugo project welcomes all contributors and contributions regardless of skill or experience level.
If you are interested in helping with the project, we will help you with your contribution.
Hugo is a very active project with many contributions happening daily.
We want to create the best possible product for our users and the best contribution experience for our developers,
we have a set of guidelines which ensure that all contributions are acceptable.
The guidelines are not intended as a filter or barrier to participation.
If you are unfamiliar with the contribution process, the Hugo team will help you and teach you how to bring your contribution in accordance with the guidelines.
For a complete guide to contributing code to Hugo, see the [Contribution Guide](CONTRIBUTING.md).
[Go]: https://golang.org/
[Hugo Documentation]: https://gohugo.io/overview/introduction/
## Dependencies
Hugo stands on the shoulder of many great open source libraries.
@@ -245,4 +239,3 @@ google.golang.org/grpc="v1.46.0"
google.golang.org/protobuf="v1.28.0"
gopkg.in/yaml.v2="v2.4.0"
```
+3 -4
View File
@@ -17,7 +17,6 @@ import (
"bytes"
"errors"
"io"
"io/ioutil"
"os"
"path/filepath"
"strings"
@@ -207,7 +206,7 @@ func (c *Cache) GetOrCreateBytes(id string, create func() ([]byte, error)) (Item
if r := c.getOrRemove(id); r != nil {
defer r.Close()
b, err := ioutil.ReadAll(r)
b, err := io.ReadAll(r)
return info, b, err
}
@@ -242,7 +241,7 @@ func (c *Cache) GetBytes(id string) (ItemInfo, []byte, error) {
if r := c.getOrRemove(id); r != nil {
defer r.Close()
b, err := ioutil.ReadAll(r)
b, err := io.ReadAll(r)
return info, b, err
}
@@ -314,7 +313,7 @@ func (c *Cache) getString(id string) string {
}
defer f.Close()
b, _ := ioutil.ReadAll(f)
b, _ := io.ReadAll(f)
return string(b)
}
+5 -4
View File
@@ -18,6 +18,7 @@ import (
"io"
"os"
"github.com/gohugoio/hugo/common/herrors"
"github.com/gohugoio/hugo/hugofs"
"github.com/spf13/afero"
@@ -36,7 +37,7 @@ func (c Caches) Prune() (int, error) {
counter += count
if err != nil {
if os.IsNotExist(err) {
if herrors.IsNotExist(err) {
continue
}
return counter, fmt.Errorf("failed to prune cache %q: %w", k, err)
@@ -76,7 +77,7 @@ func (c *Cache) Prune(force bool) (int, error) {
err = c.Fs.Remove(name)
}
if err != nil && !os.IsNotExist(err) {
if err != nil && !herrors.IsNotExist(err) {
return err
}
@@ -97,7 +98,7 @@ func (c *Cache) Prune(force bool) (int, error) {
counter++
}
if err != nil && !os.IsNotExist(err) {
if err != nil && !herrors.IsNotExist(err) {
return err
}
@@ -112,7 +113,7 @@ func (c *Cache) Prune(force bool) (int, error) {
func (c *Cache) pruneRootDir(force bool) (int, error) {
info, err := c.Fs.Stat(c.pruneAllRootDir)
if err != nil {
if os.IsNotExist(err) {
if herrors.IsNotExist(err) {
return 0, nil
}
return 0, err
+8 -15
View File
@@ -17,8 +17,6 @@ import (
"errors"
"fmt"
"io"
"io/ioutil"
"os"
"path/filepath"
"strings"
"sync"
@@ -44,13 +42,8 @@ func TestFileCache(t *testing.T) {
t.Parallel()
c := qt.New(t)
tempWorkingDir, err := ioutil.TempDir("", "hugo_filecache_test_work")
c.Assert(err, qt.IsNil)
defer os.Remove(tempWorkingDir)
tempCacheDir, err := ioutil.TempDir("", "hugo_filecache_test_cache")
c.Assert(err, qt.IsNil)
defer os.Remove(tempCacheDir)
tempWorkingDir := t.TempDir()
tempCacheDir := t.TempDir()
osfs := afero.NewOsFs()
@@ -123,7 +116,7 @@ dir = ":cacheDir/c"
io.Closer
}{
strings.NewReader(s),
ioutil.NopCloser(nil),
io.NopCloser(nil),
}, nil
}
}
@@ -138,7 +131,7 @@ dir = ":cacheDir/c"
c.Assert(err, qt.IsNil)
c.Assert(r, qt.Not(qt.IsNil))
c.Assert(info.Name, qt.Equals, "a")
b, _ := ioutil.ReadAll(r)
b, _ := io.ReadAll(r)
r.Close()
c.Assert(string(b), qt.Equals, "abc")
@@ -154,7 +147,7 @@ dir = ":cacheDir/c"
_, r, err = ca.GetOrCreate("a", rf("bcd"))
c.Assert(err, qt.IsNil)
b, _ = ioutil.ReadAll(r)
b, _ = io.ReadAll(r)
r.Close()
c.Assert(string(b), qt.Equals, "abc")
}
@@ -173,7 +166,7 @@ dir = ":cacheDir/c"
c.Assert(err, qt.IsNil)
c.Assert(r, qt.Not(qt.IsNil))
c.Assert(info.Name, qt.Equals, "mykey")
b, _ := ioutil.ReadAll(r)
b, _ := io.ReadAll(r)
r.Close()
c.Assert(string(b), qt.Equals, "Hugo is great!")
@@ -233,7 +226,7 @@ dir = "/cache/c"
return hugio.ToReadCloser(strings.NewReader(data)), nil
})
c.Assert(err, qt.IsNil)
b, _ := ioutil.ReadAll(r)
b, _ := io.ReadAll(r)
r.Close()
c.Assert(string(b), qt.Equals, data)
// Trigger some expiration.
@@ -260,7 +253,7 @@ func TestFileCacheReadOrCreateErrorInRead(t *testing.T) {
return errors.New("fail")
}
b, _ := ioutil.ReadAll(r)
b, _ := io.ReadAll(r)
result = string(b)
return nil
+10 -6
View File
@@ -452,12 +452,16 @@ func collectMethodsRecursive(pkg string, f []*ast.Field) []string {
}
if ident, ok := m.Type.(*ast.Ident); ok && ident.Obj != nil {
// Embedded interface
methodNames = append(
methodNames,
collectMethodsRecursive(
pkg,
ident.Obj.Decl.(*ast.TypeSpec).Type.(*ast.InterfaceType).Methods.List)...)
switch tt := ident.Obj.Decl.(*ast.TypeSpec).Type.(type) {
case *ast.InterfaceType:
// Embedded interface
methodNames = append(
methodNames,
collectMethodsRecursive(
pkg,
tt.Methods.List)...)
}
} else {
// Embedded, but in a different file/package. Return the
// package.Name and deal with that later.
+10 -5
View File
@@ -16,7 +16,7 @@ package commands
import (
"errors"
"fmt"
"io/ioutil"
"io"
"net"
"os"
"path/filepath"
@@ -79,8 +79,8 @@ type commandeer struct {
changeDetector *fileChangeDetector
// We need to reuse these on server rebuilds.
// These 2 will be different if --renderStaticToDisk is set.
publishDirFs afero.Fs
publishDirStaticFs afero.Fs
publishDirServerFs afero.Fs
h *hugoBuilderCommon
@@ -170,6 +170,7 @@ func (c *commandeer) Set(key string, value any) {
func (c *commandeer) initFs(fs *hugofs.Fs) error {
c.publishDirFs = fs.PublishDir
c.publishDirStaticFs = fs.PublishDirStatic
c.publishDirServerFs = fs.PublishDirServer
c.DepsCfg.Fs = fs
@@ -200,7 +201,7 @@ func newCommandeer(mustHaveConfigFile, failOnInitErr, running bool, h *hugoBuild
rebuildDebouncer = debounce.New(4 * time.Second)
}
out := ioutil.Discard
out := io.Discard
if !h.quiet {
out = os.Stdout
}
@@ -220,7 +221,7 @@ func newCommandeer(mustHaveConfigFile, failOnInitErr, running bool, h *hugoBuild
running: running,
// This will be replaced later, but we need something to log to before the configuration is read.
logger: loggers.NewLogger(jww.LevelWarn, jww.LevelError, out, ioutil.Discard, running),
logger: loggers.NewLogger(jww.LevelWarn, jww.LevelError, out, io.Discard, running),
}
return c, c.loadConfig()
@@ -382,7 +383,7 @@ func (c *commandeer) loadConfig() error {
// Set some commonly used flags
c.doLiveReload = c.running && !c.Cfg.GetBool("disableLiveReload")
c.fastRenderMode = c.doLiveReload && !c.Cfg.GetBool("disableFastRender")
c.fastRenderMode = c.running && !c.Cfg.GetBool("disableFastRender")
c.showErrorInBrowser = c.doLiveReload && !c.Cfg.GetBool("disableBrowserError")
// This is potentially double work, but we need to do this one more time now
@@ -407,6 +408,9 @@ func (c *commandeer) loadConfig() error {
createMemFs := config.GetBool("renderToMemory")
c.renderStaticToDisk = config.GetBool("renderStaticToDisk")
// TODO(bep) we/I really need to look at the config set up, but to prevent changing too much
// we store away the original.
config.Set("publishDirOrig", config.GetString("publishDir"))
if createMemFs {
// Rendering to memoryFS, publish to Root regardless of publishDir.
@@ -426,6 +430,7 @@ func (c *commandeer) loadConfig() error {
if c.publishDirFs != nil {
// Need to reuse the destination on server rebuilds.
fs.PublishDir = c.publishDirFs
fs.PublishDirStatic = c.publishDirStaticFs
fs.PublishDirServer = c.publishDirServerFs
} else {
if c.renderStaticToDisk {
+1 -1
View File
@@ -177,7 +177,7 @@ Complete documentation is available at https://gohugo.io/.`,
},
})
cc.cmd.PersistentFlags().StringVar(&cc.cfgFile, "config", "", "config file (default is path/config.yaml|json|toml)")
cc.cmd.PersistentFlags().StringVar(&cc.cfgFile, "config", "", "config file (default is hugo.yaml|json|toml)")
cc.cmd.PersistentFlags().StringVar(&cc.cfgDir, "configDir", "config", "config dir")
cc.cmd.PersistentFlags().BoolVar(&cc.quiet, "quiet", false, "build in quiet mode")
+22 -7
View File
@@ -15,7 +15,6 @@ package commands
import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
"testing"
@@ -47,7 +46,7 @@ func TestExecute(t *testing.T) {
c.Assert(resp.Err, qt.IsNil)
result := resp.Result
c.Assert(len(result.Sites) == 1, qt.Equals, true)
c.Assert(len(result.Sites[0].RegularPages()) == 1, qt.Equals, true)
c.Assert(len(result.Sites[0].RegularPages()) == 2, qt.Equals, true)
c.Assert(result.Sites[0].Info.Params()["myparam"], qt.Equals, "paramproduction")
})
@@ -117,11 +116,13 @@ func TestExecute(t *testing.T) {
func checkNewSiteInited(c *qt.C, basepath string) {
paths := []string{
filepath.Join(basepath, "layouts"),
filepath.Join(basepath, "content"),
filepath.Join(basepath, "archetypes"),
filepath.Join(basepath, "static"),
filepath.Join(basepath, "assets"),
filepath.Join(basepath, "content"),
filepath.Join(basepath, "data"),
filepath.Join(basepath, "layouts"),
filepath.Join(basepath, "static"),
filepath.Join(basepath, "themes"),
filepath.Join(basepath, "config.toml"),
}
@@ -362,11 +363,25 @@ weight: 1
Content
`)
writeFile(t, filepath.Join(dir, contentDir, "hügö.md"), `
---
weight: 2
---
This is hügö.
`)
writeFile(t, filepath.Join(dir, "layouts", "_default", "single.html"), `
Single: {{ .Title }}
Single: {{ .Title }}|{{ .Content }}
`)
writeFile(t, filepath.Join(dir, "layouts", "404.html"), `
404: {{ .Title }}|Not Found.
`)
@@ -386,7 +401,7 @@ PostProcess: {{ $foo.RelPermalink }}
func writeFile(t testing.TB, filename, content string) {
must(t, os.MkdirAll(filepath.Dir(filename), os.FileMode(0755)))
must(t, ioutil.WriteFile(filename, []byte(content), os.FileMode(0755)))
must(t, os.WriteFile(filename, []byte(content), os.FileMode(0755)))
}
func must(t testing.TB, err error) {
+1
View File
@@ -126,6 +126,7 @@ type modMount struct {
Lang string `json:"lang,omitempty"`
}
// MarshalJSON is for internal use only.
func (m *modMounts) MarshalJSON() ([]byte, error) {
var mounts []modMount
+8
View File
@@ -50,6 +50,14 @@ If you add the -v flag, you will get a full dependency list.
for _, dep := range deps {
jww.FEEDBACK.Printf("%s\n", dep)
}
} else {
// These are also included in the GetDependencyList above;
// always print these as these are most likely the most useful to know about.
deps := hugo.GetDependencyListNonGo()
for _, dep := range deps {
jww.FEEDBACK.Printf("%s\n", dep)
}
}
return nil
+19 -15
View File
@@ -18,7 +18,7 @@ package commands
import (
"context"
"fmt"
"io/ioutil"
"io"
"os"
"os/signal"
"path/filepath"
@@ -138,10 +138,10 @@ func initializeConfig(mustHaveConfigFile, failOnInitErr, running bool,
func (c *commandeer) createLogger(cfg config.Provider) (loggers.Logger, error) {
var (
logHandle = ioutil.Discard
logHandle = io.Discard
logThreshold = jww.LevelWarn
logFile = cfg.GetString("logFile")
outHandle = ioutil.Discard
outHandle = io.Discard
stdoutThreshold = jww.LevelWarn
)
@@ -157,7 +157,7 @@ func (c *commandeer) createLogger(cfg config.Provider) (loggers.Logger, error) {
return nil, newSystemError("Failed to open log file:", logFile, err)
}
} else {
logHandle, err = ioutil.TempFile("", "hugo")
logHandle, err = os.CreateTemp("", "hugo")
if err != nil {
return nil, newSystemError(err)
}
@@ -511,12 +511,15 @@ func (c *commandeer) build() error {
c.hugo().PrintProcessingStats(os.Stdout)
fmt.Println()
if createCounter, ok := c.publishDirFs.(hugofs.DuplicatesReporter); ok {
dupes := createCounter.ReportDuplicates()
if dupes != "" {
c.logger.Warnln("Duplicate target paths:", dupes)
hugofs.WalkFilesystems(c.publishDirFs, func(fs afero.Fs) bool {
if dfs, ok := fs.(hugofs.DuplicatesReporter); ok {
dupes := dfs.ReportDuplicates()
if dupes != "" {
c.logger.Warnln("Duplicate target paths:", dupes)
}
}
}
return false
})
unusedTemplates := c.hugo().Tmpl().(tpl.UnusedTemplatesProvider).UnusedTemplates()
for _, unusedTemplate := range unusedTemplates {
@@ -576,7 +579,7 @@ func (c *commandeer) serverBuild() error {
func (c *commandeer) copyStatic() (map[string]uint64, error) {
m, err := c.doWithPublishDirs(c.copyStaticTo)
if err == nil || os.IsNotExist(err) {
if err == nil || herrors.IsNotExist(err) {
return m, nil
}
return m, err
@@ -650,10 +653,7 @@ func (c *commandeer) copyStaticTo(sourceFs *filesystems.SourceFilesystem) (uint6
syncer.NoChmod = c.Cfg.GetBool("noChmod")
syncer.ChmodFilter = chmodFilter
syncer.SrcFs = fs
syncer.DestFs = c.Fs.PublishDir
if c.renderStaticToDisk {
syncer.DestFs = c.Fs.PublishDirStatic
}
syncer.DestFs = c.Fs.PublishDirStatic
// Now that we are using a unionFs for the static directories
// We can effectively clean the publishDir on initial sync
syncer.Delete = c.Cfg.GetBool("cleanDestinationDir")
@@ -899,7 +899,7 @@ func (c *commandeer) newWatcher(pollIntervalStr string, dirList ...string) (*wat
}
unlock()
case err := <-watcher.Errors():
if err != nil && !os.IsNotExist(err) {
if err != nil && !herrors.IsNotExist(err) {
c.logger.Errorln("Error while watching:", err)
}
}
@@ -924,6 +924,7 @@ func (c *commandeer) printChangeDetected(typ string) {
const (
configChangeConfig = "config file"
configChangeGoMod = "go.mod file"
configChangeGoWork = "go work file"
)
func (c *commandeer) handleEvents(watcher *watcher.Batcher,
@@ -943,6 +944,9 @@ func (c *commandeer) handleEvents(watcher *watcher.Batcher,
if strings.Contains(ev.Name, "go.mod") {
configChangeType = configChangeGoMod
}
if strings.Contains(ev.Name, ".work") {
configChangeType = configChangeGoWork
}
}
if !isConfig {
// It may be one of the /config folders
+6 -6
View File
@@ -17,7 +17,7 @@ import (
"bytes"
"errors"
"fmt"
"io/ioutil"
"io"
"os"
"path/filepath"
"regexp"
@@ -164,7 +164,7 @@ func (i *importCmd) importFromJekyll(cmd *cobra.Command, args []string) error {
func (i *importCmd) getJekyllDirInfo(fs afero.Fs, jekyllRoot string) (map[string]bool, bool) {
postDirs := make(map[string]bool)
hasAnyPost := false
if entries, err := ioutil.ReadDir(jekyllRoot); err == nil {
if entries, err := os.ReadDir(jekyllRoot); err == nil {
for _, entry := range entries {
if entry.IsDir() {
subDir := filepath.Join(jekyllRoot, entry.Name())
@@ -186,7 +186,7 @@ func (i *importCmd) retrieveJekyllPostDir(fs afero.Fs, dir string) (bool, bool)
return true, !isEmpty
}
if entries, err := ioutil.ReadDir(dir); err == nil {
if entries, err := os.ReadDir(dir); err == nil {
for _, entry := range entries {
if entry.IsDir() {
subDir := filepath.Join(dir, entry.Name())
@@ -247,7 +247,7 @@ func (i *importCmd) loadJekyllConfig(fs afero.Fs, jekyllRoot string) map[string]
defer f.Close()
b, err := ioutil.ReadAll(f)
b, err := io.ReadAll(f)
if err != nil {
return nil
}
@@ -310,7 +310,7 @@ func (i *importCmd) copyJekyllFilesAndFolders(jekyllRoot, dest string, jekyllPos
if err != nil {
return err
}
entries, err := ioutil.ReadDir(jekyllRoot)
entries, err := os.ReadDir(jekyllRoot)
if err != nil {
return err
}
@@ -386,7 +386,7 @@ func convertJekyllPost(path, relPath, targetDir string, draft bool) error {
targetParentDir := filepath.Dir(targetFile)
os.MkdirAll(targetParentDir, 0777)
contentBytes, err := ioutil.ReadFile(path)
contentBytes, err := os.ReadFile(path)
if err != nil {
jww.ERROR.Println("Read file error:", path)
return err
+3 -1
View File
@@ -32,6 +32,7 @@ var _ cmder = (*newCmd)(nil)
type newCmd struct {
contentEditor string
contentType string
force bool
*baseBuilderCmd
}
@@ -54,6 +55,7 @@ Ensure you run this within the root directory of your site.`,
cmd.Flags().StringVarP(&cc.contentType, "kind", "k", "", "content type to create")
cmd.Flags().StringVar(&cc.contentEditor, "editor", "", "edit new content with this editor, if provided")
cmd.Flags().BoolVarP(&cc.force, "force", "f", false, "overwrite file if it already exists")
cmd.AddCommand(b.newNewSiteCmd().getCommand())
cmd.AddCommand(b.newNewThemeCmd().getCommand())
@@ -80,7 +82,7 @@ func (n *newCmd) newContent(cmd *cobra.Command, args []string) error {
return newUserError("path needs to be provided")
}
return create.NewContent(c.hugo(), n.contentType, args[0])
return create.NewContent(c.hugo(), n.contentType, args[0], n.force)
}
func mkdir(x ...string) {
+5 -3
View File
@@ -62,11 +62,12 @@ Use ` + "`hugo new [contentPath]`" + ` to create new content.`,
func (n *newSiteCmd) doNewSite(fs *hugofs.Fs, basepath string, force bool) error {
archeTypePath := filepath.Join(basepath, "archetypes")
dirs := []string{
filepath.Join(basepath, "layouts"),
filepath.Join(basepath, "content"),
archeTypePath,
filepath.Join(basepath, "static"),
filepath.Join(basepath, "assets"),
filepath.Join(basepath, "content"),
filepath.Join(basepath, "data"),
filepath.Join(basepath, "layouts"),
filepath.Join(basepath, "static"),
filepath.Join(basepath, "themes"),
}
@@ -82,6 +83,7 @@ func (n *newSiteCmd) doNewSite(fs *hugofs.Fs, basepath string, force bool) error
return errors.New(basepath + " already exists and is not empty. See --force.")
case !isEmpty && force:
// TODO(bep) eventually rename this to hugo.
all := append(dirs, filepath.Join(basepath, "config."+n.configFormat))
for _, path := range all {
if exists, _ := helpers.Exists(path, fs.Source); exists {
+11 -12
View File
@@ -17,8 +17,6 @@
package commands
import (
"errors"
"github.com/gohugoio/hugo/config"
"github.com/gohugoio/hugo/releaser"
"github.com/spf13/cobra"
@@ -29,10 +27,9 @@ var _ cmder = (*releaseCommandeer)(nil)
type releaseCommandeer struct {
cmd *cobra.Command
version string
skipPublish bool
try bool
step int
skipPush bool
try bool
}
func createReleaser() cmder {
@@ -50,9 +47,9 @@ func createReleaser() cmder {
return r.release()
}
r.cmd.PersistentFlags().StringVarP(&r.version, "rel", "r", "", "new release version, i.e. 0.25.1")
r.cmd.PersistentFlags().BoolVarP(&r.skipPublish, "skip-publish", "", false, "skip all publishing pipes of the release")
r.cmd.PersistentFlags().BoolVarP(&r.try, "try", "", false, "simulate a release, i.e. no changes")
r.cmd.PersistentFlags().BoolVarP(&r.skipPush, "skip-push", "", false, "skip pushing to remote")
r.cmd.PersistentFlags().BoolVarP(&r.try, "try", "", false, "no changes")
r.cmd.PersistentFlags().IntVarP(&r.step, "step", "", 0, "step to run (1: set new version 2: prepare next dev version)")
return r
}
@@ -65,8 +62,10 @@ func (c *releaseCommandeer) flagsToConfig(cfg config.Provider) {
}
func (r *releaseCommandeer) release() error {
if r.version == "" {
return errors.New("must set the --rel flag to the relevant version number")
rel, err := releaser.New(r.skipPush, r.try, r.step)
if err != nil {
return err
}
return releaser.New(r.version, r.skipPublish, r.try).Run()
return rel.Run()
}
+25 -6
View File
@@ -400,24 +400,31 @@ func (f *fileServer) createEndpoint(i int) (*http.ServeMux, net.Listener, string
}
// Ignore any query params for the operations below.
requestURI := strings.TrimSuffix(r.RequestURI, "?"+r.URL.RawQuery)
requestURI, _ := url.PathUnescape(strings.TrimSuffix(r.RequestURI, "?"+r.URL.RawQuery))
for _, header := range f.c.serverConfig.MatchHeaders(requestURI) {
w.Header().Set(header.Key, header.Value)
}
if redirect := f.c.serverConfig.MatchRedirect(requestURI); !redirect.IsZero() {
// fullName := filepath.Join(dir, filepath.FromSlash(path.Clean("/"+name)))
doRedirect := true
// This matches Netlify's behaviour and is needed for SPA behaviour.
// See https://docs.netlify.com/routing/redirects/rewrites-proxies/
if !redirect.Force {
path := filepath.Clean(strings.TrimPrefix(requestURI, u.Path))
fi, err := f.c.hugo().BaseFs.PublishFs.Stat(path)
if root != "" {
path = filepath.Join(root, path)
}
fs := f.c.publishDirServerFs
fi, err := fs.Stat(path)
if err == nil {
if fi.IsDir() {
// There will be overlapping directories, so we
// need to check for a file.
_, err = f.c.hugo().BaseFs.PublishFs.Stat(filepath.Join(path, "index.html"))
_, err = fs.Stat(filepath.Join(path, "index.html"))
doRedirect = err != nil
} else {
doRedirect = false
@@ -426,15 +433,27 @@ func (f *fileServer) createEndpoint(i int) (*http.ServeMux, net.Listener, string
}
if doRedirect {
if redirect.Status == 200 {
switch redirect.Status {
case 404:
w.WriteHeader(404)
file, err := fs.Open(strings.TrimPrefix(redirect.To, u.Path))
if err == nil {
defer file.Close()
io.Copy(w, file)
} else {
fmt.Fprintln(w, "<h1>Page Not Found</h1>")
}
return
case 200:
if r2 := f.rewriteRequest(r, strings.TrimPrefix(redirect.To, u.Path)); r2 != nil {
requestURI = redirect.To
r = r2
}
} else {
default:
w.Header().Set("Content-Type", "")
http.Redirect(w, r, redirect.To, redirect.Status)
return
}
}
@@ -558,7 +577,7 @@ func (c *commandeer) serve(s *serverCmd) error {
// to cached values if nil.
templ, handler := getErrorTemplateAndHandler(c.hugoTry())
b := &bytes.Buffer{}
err := handler.Execute(templ, b, ctx)
err := handler.ExecuteWithContext(context.Background(), templ, b, ctx)
return b, err
},
}
+164 -15
View File
@@ -25,6 +25,7 @@ import (
"github.com/gohugoio/hugo/config"
"github.com/gohugoio/hugo/helpers"
"github.com/gohugoio/hugo/htesting"
"golang.org/x/net/context"
"golang.org/x/sync/errgroup"
@@ -41,12 +42,98 @@ func TestServerPanicOnConfigError(t *testing.T) {
linenos='table'
`
r := runServerTest(c, 0, config)
r := runServerTest(c,
serverTestOptions{
config: config,
},
)
c.Assert(r.err, qt.IsNotNil)
c.Assert(r.err.Error(), qt.Contains, "cannot parse 'Highlight.LineNos' as bool:")
}
func TestServer404(t *testing.T) {
c := qt.New(t)
r := runServerTest(c,
serverTestOptions{
pathsToGet: []string{"this/does/not/exist"},
getNumHomes: 1,
},
)
c.Assert(r.err, qt.IsNil)
pr := r.pathsResults["this/does/not/exist"]
c.Assert(pr.statusCode, qt.Equals, http.StatusNotFound)
c.Assert(pr.body, qt.Contains, "404: 404 Page not found|Not Found.")
}
func TestServerPathEncodingIssues(t *testing.T) {
c := qt.New(t)
// Issue 10287
c.Run("Unicode paths", func(c *qt.C) {
r := runServerTest(c,
serverTestOptions{
pathsToGet: []string{"hügö/"},
getNumHomes: 1,
},
)
c.Assert(r.err, qt.IsNil)
c.Assert(r.pathsResults["hügö/"].body, qt.Contains, "This is hügö")
})
// Issue 10314
c.Run("Windows multilingual 404", func(c *qt.C) {
config := `
baseURL = 'https://example.org/'
title = 'Hugo Forum Topic #40568'
defaultContentLanguageInSubdir = true
[languages.en]
contentDir = 'content/en'
languageCode = 'en-US'
languageName = 'English'
weight = 1
[languages.es]
contentDir = 'content/es'
languageCode = 'es-ES'
languageName = 'Espanol'
weight = 2
[server]
[[server.redirects]]
from = '/en/**'
to = '/en/404.html'
status = 404
[[server.redirects]]
from = '/es/**'
to = '/es/404.html'
status = 404
`
r := runServerTest(c,
serverTestOptions{
config: config,
pathsToGet: []string{"en/this/does/not/exist", "es/this/does/not/exist"},
getNumHomes: 1,
},
)
c.Assert(r.err, qt.IsNil)
pr1 := r.pathsResults["en/this/does/not/exist"]
pr2 := r.pathsResults["es/this/does/not/exist"]
c.Assert(pr1.statusCode, qt.Equals, http.StatusNotFound)
c.Assert(pr2.statusCode, qt.Equals, http.StatusNotFound)
c.Assert(pr1.body, qt.Contains, "404: 404 Page not found|Not Found.")
c.Assert(pr2.body, qt.Contains, "404: 404 Page not found|Not Found.")
})
}
func TestServerFlags(t *testing.T) {
c := qt.New(t)
@@ -81,7 +168,13 @@ baseURL="https://example.org"
args = strings.Split(test.flag, "=")
}
r := runServerTest(c, 1, config, args...)
opts := serverTestOptions{
config: config,
args: args,
getNumHomes: 1,
}
r := runServerTest(c, opts)
test.assert(c, r)
@@ -92,6 +185,10 @@ baseURL="https://example.org"
}
func TestServerBugs(t *testing.T) {
// TODO(bep) this is flaky on Windows on GH Actions.
if htesting.IsGitHubAction() && runtime.GOOS == "windows" {
t.Skip("skipping on windows")
}
c := qt.New(t)
for _, test := range []struct {
@@ -101,6 +198,10 @@ func TestServerBugs(t *testing.T) {
numservers int
assert func(c *qt.C, r serverTestResult)
}{
{"PostProcess, memory", "", "", 1, func(c *qt.C, r serverTestResult) {
c.Assert(r.err, qt.IsNil)
c.Assert(r.homesContent[0], qt.Contains, "PostProcess: /foo.min.css")
}},
// Issue 9788
{"PostProcess, memory", "", "", 1, func(c *qt.C, r serverTestResult) {
c.Assert(r.err, qt.IsNil)
@@ -140,7 +241,18 @@ baseURL="https://example.org"
if test.flag != "" {
args = strings.Split(test.flag, "=")
}
r := runServerTest(c, test.numservers, test.config, args...)
opts := serverTestOptions{
config: test.config,
getNumHomes: test.numservers,
pathsToGet: []string{"this/does/not/exist"},
args: args,
}
r := runServerTest(c, opts)
pr := r.pathsResults["this/does/not/exist"]
c.Assert(pr.statusCode, qt.Equals, http.StatusNotFound)
c.Assert(pr.body, qt.Contains, "404: 404 Page not found|Not Found.")
test.assert(c, r)
})
@@ -152,11 +264,29 @@ baseURL="https://example.org"
type serverTestResult struct {
err error
homesContent []string
content404 string
publicDirnames map[string]bool
pathsResults map[string]pathResult
}
func runServerTest(c *qt.C, getNumHomes int, config string, args ...string) (result serverTestResult) {
dir := createSimpleTestSite(c, testSiteConfig{configTOML: config})
type pathResult struct {
statusCode int
body string
}
type serverTestOptions struct {
getNumHomes int
config string
pathsToGet []string
args []string
}
func runServerTest(c *qt.C, opts serverTestOptions) serverTestResult {
dir := createSimpleTestSite(c, testSiteConfig{configTOML: opts.config})
result := serverTestResult{
publicDirnames: make(map[string]bool),
pathsResults: make(map[string]pathResult),
}
sp, err := helpers.FindAvailablePort()
c.Assert(err, qt.IsNil)
@@ -172,7 +302,7 @@ func runServerTest(c *qt.C, getNumHomes int, config string, args ...string) (res
scmd := b.newServerCmdSignaled(stop)
cmd := scmd.getCommand()
args = append([]string{"-s=" + dir, fmt.Sprintf("-p=%d", port)}, args...)
args := append([]string{"-s=" + dir, fmt.Sprintf("-p=%d", port)}, opts.args...)
cmd.SetArgs(args)
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
@@ -184,16 +314,20 @@ func runServerTest(c *qt.C, getNumHomes int, config string, args ...string) (res
return err
})
if getNumHomes > 0 {
if opts.getNumHomes > 0 {
// Esp. on slow CI machines, we need to wait a little before the web
// server is ready.
time.Sleep(567 * time.Millisecond)
result.homesContent = make([]string, getNumHomes)
for i := 0; i < getNumHomes; i++ {
wait := 567 * time.Millisecond
if os.Getenv("CI") != "" {
wait = 2 * time.Second
}
time.Sleep(wait)
result.homesContent = make([]string, opts.getNumHomes)
for i := 0; i < opts.getNumHomes; i++ {
func() {
resp, err := http.Get(fmt.Sprintf("http://localhost:%d/", port+i))
c.Check(err, qt.IsNil)
c.Check(resp.StatusCode, qt.Equals, http.StatusOK)
c.Assert(err, qt.IsNil)
c.Assert(resp.StatusCode, qt.Equals, http.StatusOK)
if err == nil {
defer resp.Body.Close()
result.homesContent[i] = helpers.ReaderToString(resp.Body)
@@ -202,6 +336,22 @@ func runServerTest(c *qt.C, getNumHomes int, config string, args ...string) (res
}
}
for _, path := range opts.pathsToGet {
func() {
resp, err := http.Get(fmt.Sprintf("http://localhost:%d/%s", port, path))
c.Assert(err, qt.IsNil)
pr := pathResult{
statusCode: resp.StatusCode,
}
if err == nil {
defer resp.Body.Close()
pr.body = helpers.ReaderToString(resp.Body)
}
result.pathsResults[path] = pr
}()
}
time.Sleep(1 * time.Second)
select {
@@ -210,15 +360,14 @@ func runServerTest(c *qt.C, getNumHomes int, config string, args ...string) (res
}
pubFiles, err := os.ReadDir(filepath.Join(dir, "public"))
c.Check(err, qt.IsNil)
result.publicDirnames = make(map[string]bool)
c.Assert(err, qt.IsNil)
for _, f := range pubFiles {
result.publicDirnames[f.Name()] = true
}
result.err = wg.Wait()
return
return result
}
+2 -2
View File
@@ -14,9 +14,9 @@
package commands
import (
"os"
"path/filepath"
"github.com/gohugoio/hugo/common/herrors"
"github.com/gohugoio/hugo/hugolib/filesystems"
"github.com/fsnotify/fsnotify"
@@ -95,7 +95,7 @@ func (s *staticSyncer) syncsStaticEvents(staticEvents []fsnotify.Event) error {
// the source of that static file. In this case Hugo will incorrectly remove that file
// from the published directory.
if ev.Op&fsnotify.Rename == fsnotify.Rename || ev.Op&fsnotify.Remove == fsnotify.Remove {
if _, err := sourceFs.Fs.Stat(relPath); os.IsNotExist(err) {
if _, err := sourceFs.Fs.Stat(relPath); herrors.IsNotExist(err) {
// If file doesn't exist in any static dir, remove it
logger.Println("File no longer exists in static dir, removing", relPath)
_ = c.Fs.PublishDirStatic.RemoveAll(relPath)
+20
View File
@@ -15,6 +15,7 @@ package collections
import (
"reflect"
"sort"
)
// Slicer defines a very generic way to create a typed slice. This is used
@@ -74,3 +75,22 @@ func StringSliceToInterfaceSlice(ss []string) []any {
return result
}
type SortedStringSlice []string
// Contains returns true if s is in ss.
func (ss SortedStringSlice) Contains(s string) bool {
i := sort.SearchStrings(ss, s)
return i < len(ss) && ss[i] == s
}
// Count returns the number of times s is in ss.
func (ss SortedStringSlice) Count(s string) int {
var count int
i := sort.SearchStrings(ss, s)
for i < len(ss) && ss[i] == s {
count++
i++
}
return count
}
+15
View File
@@ -122,3 +122,18 @@ func TestSlice(t *testing.T) {
c.Assert(test.expected, qt.DeepEquals, result, errMsg)
}
}
func TestSortedStringSlice(t *testing.T) {
t.Parallel()
c := qt.New(t)
var s SortedStringSlice = []string{"a", "b", "b", "b", "c", "d"}
c.Assert(s.Contains("a"), qt.IsTrue)
c.Assert(s.Contains("b"), qt.IsTrue)
c.Assert(s.Contains("z"), qt.IsFalse)
c.Assert(s.Count("b"), qt.Equals, 3)
c.Assert(s.Count("z"), qt.Equals, 0)
c.Assert(s.Count("a"), qt.Equals, 1)
}
+2
View File
@@ -0,0 +1,2 @@
// Package common provides common helper functionality for Hugo.
package common
+1 -2
View File
@@ -16,7 +16,6 @@ package herrors
import (
"io"
"io/ioutil"
"path/filepath"
"strings"
@@ -114,7 +113,7 @@ func locateError(r io.Reader, le FileError, matches LineMatcherFn) *ErrorContext
ectx := &ErrorContext{LinesPos: -1, Position: text.Position{Offset: -1}}
b, err := ioutil.ReadAll(r)
b, err := io.ReadAll(r)
if err != nil {
return ectx
}
+19 -2
View File
@@ -1,4 +1,4 @@
// Copyright 2018 The Hugo Authors. All rights reserved.
// Copyright 2022 The Hugo Authors. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -19,6 +19,7 @@ import (
"errors"
"fmt"
"io"
"os"
"runtime"
"runtime/debug"
"strconv"
@@ -38,7 +39,8 @@ type ErrorSender interface {
// Recover is a helper function that can be used to capture panics.
// Put this at the top of a method/function that crashes in a template:
// defer herrors.Recover()
//
// defer herrors.Recover()
func Recover(args ...any) {
if r := recover(); r != nil {
fmt.Println("ERR:", r)
@@ -69,3 +71,18 @@ func Must(err error) {
panic(err)
}
}
// IsNotExist returns true if the error is a file not found error.
// Unlike os.IsNotExist, this also considers wrapped errors.
func IsNotExist(err error) bool {
if os.IsNotExist(err) {
return true
}
// os.IsNotExist does not consider wrapped errors.
if os.IsNotExist(errors.Unwrap(err)) {
return true
}
return false
}
+36
View File
@@ -0,0 +1,36 @@
// Copyright 2022 The Hugo Authors. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package herrors
import (
"fmt"
"testing"
qt "github.com/frankban/quicktest"
"github.com/spf13/afero"
)
func TestIsNotExist(t *testing.T) {
c := qt.New(t)
c.Assert(IsNotExist(afero.ErrFileNotFound), qt.Equals, true)
c.Assert(IsNotExist(afero.ErrFileExists), qt.Equals, false)
c.Assert(IsNotExist(afero.ErrDestinationExists), qt.Equals, false)
c.Assert(IsNotExist(nil), qt.Equals, false)
c.Assert(IsNotExist(fmt.Errorf("foo")), qt.Equals, false)
// os.IsNotExist returns false for wrapped errors.
c.Assert(IsNotExist(fmt.Errorf("foo: %w", afero.ErrFileNotFound)), qt.Equals, true)
}
+17
View File
@@ -208,6 +208,23 @@ func AsTime(v reflect.Value, loc *time.Location) (time.Time, bool) {
return time.Time{}, false
}
func CallMethodByName(cxt context.Context, name string, v reflect.Value) []reflect.Value {
fn := v.MethodByName(name)
var args []reflect.Value
tp := fn.Type()
if tp.NumIn() > 0 {
if tp.NumIn() > 1 {
panic("not supported")
}
first := tp.In(0)
if first.Implements(ContextInterface) {
args = append(args, reflect.ValueOf(cxt))
}
}
return fn.Call(args)
}
// Based on: https://github.com/golang/go/blob/178a2c42254166cffed1b25fb1d3c7a5727cada6/src/text/template/exec.go#L931
func indirectInterface(v reflect.Value) reflect.Value {
if v.Kind() != reflect.Interface {
+2 -4
View File
@@ -16,8 +16,6 @@ package hugio
import (
"fmt"
"io"
"io/ioutil"
"os"
"path/filepath"
"github.com/spf13/afero"
@@ -53,7 +51,7 @@ func CopyFile(fs afero.Fs, from, to string) error {
// CopyDir copies a directory.
func CopyDir(fs afero.Fs, from, to string, shouldCopy func(filename string) bool) error {
fi, err := os.Stat(from)
fi, err := fs.Stat(from)
if err != nil {
return err
}
@@ -67,7 +65,7 @@ func CopyDir(fs afero.Fs, from, to string, shouldCopy func(filename string) bool
return err
}
entries, _ := ioutil.ReadDir(from)
entries, _ := afero.ReadDir(fs, from)
for _, entry := range entries {
fromFilename := filepath.Join(from, entry.Name())
toFilename := filepath.Join(to, entry.Name())
+57
View File
@@ -0,0 +1,57 @@
// Copyright 2022 The Hugo Authors. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package hugio
import (
"bytes"
)
// HasBytesWriter is a writer that will set Match to true if the given pattern
// is found in the stream.
type HasBytesWriter struct {
Match bool
Pattern []byte
i int
done bool
buff []byte
}
func (h *HasBytesWriter) Write(p []byte) (n int, err error) {
if h.done {
return len(p), nil
}
if len(h.buff) == 0 {
h.buff = make([]byte, len(h.Pattern)*2)
}
for i := range p {
h.buff[h.i] = p[i]
h.i++
if h.i == len(h.buff) {
// Shift left.
copy(h.buff, h.buff[len(h.buff)/2:])
h.i = len(h.buff) / 2
}
if bytes.Contains(h.buff, h.Pattern) {
h.Match = true
h.done = true
return len(p), nil
}
}
return len(p), nil
}
+64
View File
@@ -0,0 +1,64 @@
// Copyright 2022 The Hugo Authors. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package hugio
import (
"bytes"
"fmt"
"io"
"math/rand"
"strings"
"testing"
"time"
qt "github.com/frankban/quicktest"
)
func TestHasBytesWriter(t *testing.T) {
r := rand.New(rand.NewSource(time.Now().UnixNano()))
c := qt.New((t))
neww := func() (*HasBytesWriter, io.Writer) {
var b bytes.Buffer
h := &HasBytesWriter{
Pattern: []byte("__foo"),
}
return h, io.MultiWriter(&b, h)
}
rndStr := func() string {
return strings.Repeat("ab cfo", r.Intn(33))
}
for i := 0; i < 22; i++ {
h, w := neww()
fmt.Fprintf(w, rndStr()+"abc __foobar"+rndStr())
c.Assert(h.Match, qt.Equals, true)
h, w = neww()
fmt.Fprintf(w, rndStr()+"abc __f")
fmt.Fprintf(w, "oo bar"+rndStr())
c.Assert(h.Match, qt.Equals, true)
h, w = neww()
fmt.Fprintf(w, rndStr()+"abc __moo bar")
c.Assert(h.Match, qt.Equals, false)
}
h, w := neww()
fmt.Fprintf(w, "__foo")
c.Assert(h.Match, qt.Equals, true)
}
+3 -4
View File
@@ -15,7 +15,6 @@ package hugio
import (
"io"
"io/ioutil"
)
// As implemented by strings.Builder.
@@ -34,7 +33,7 @@ type multiWriteCloser struct {
func (m multiWriteCloser) Close() error {
var err error
for _, c := range m.closers {
if closeErr := c.Close(); err != nil {
if closeErr := c.Close(); closeErr != nil {
err = closeErr
}
}
@@ -63,7 +62,7 @@ func ToWriteCloser(w io.Writer) io.WriteCloser {
io.Closer
}{
w,
ioutil.NopCloser(nil),
io.NopCloser(nil),
}
}
@@ -79,6 +78,6 @@ func ToReadCloser(r io.Reader) io.ReadCloser {
io.Closer
}{
r,
ioutil.NopCloser(nil),
io.NopCloser(nil),
}
}
+44 -14
View File
@@ -24,6 +24,8 @@ import (
"sync"
"time"
"github.com/bep/godartsass"
"github.com/gohugoio/hugo/common/hexec"
"github.com/gohugoio/hugo/hugofs/files"
"github.com/spf13/afero"
@@ -68,7 +70,7 @@ func (i Info) Version() VersionString {
// Generator a Hugo meta generator HTML tag.
func (i Info) Generator() template.HTML {
return template.HTML(fmt.Sprintf(`<meta name="generator" content="Hugo %s" />`, CurrentVersion.String()))
return template.HTML(fmt.Sprintf(`<meta name="generator" content="Hugo %s">`, CurrentVersion.String()))
}
func (i Info) IsProduction() bool {
@@ -124,6 +126,8 @@ func GetExecEnviron(workDir string, cfg config.Provider, fs afero.Fs) []string {
config.SetEnvVars(&env, "HUGO_ENVIRONMENT", cfg.GetString("environment"))
config.SetEnvVars(&env, "HUGO_ENV", cfg.GetString("environment"))
config.SetEnvVars(&env, "HUGO_PUBLISHDIR", filepath.Join(workDir, cfg.GetString("publishDirOrig")))
if fs != nil {
fis, err := afero.ReadDir(fs, files.FolderJSConfig)
if err == nil {
@@ -184,24 +188,15 @@ func getBuildInfo() *buildInfo {
return bInfo
}
func formatDep(path, version string) string {
return fmt.Sprintf("%s=%q", path, version)
}
// GetDependencyList returns a sorted dependency list on the format package="version".
// It includes both Go dependencies and (a manually maintained) list of C(++) dependencies.
func GetDependencyList() []string {
var deps []string
formatDep := func(path, version string) string {
return fmt.Sprintf("%s=%q", path, version)
}
if IsExtended {
deps = append(
deps,
// TODO(bep) consider adding a DepsNonGo() method to these upstream projects.
formatDep("github.com/sass/libsass", "3.6.5"),
formatDep("github.com/webmproject/libwebp", "v1.2.0"),
)
}
bi := getBuildInfo()
if bi == nil {
return deps
@@ -211,11 +206,36 @@ func GetDependencyList() []string {
deps = append(deps, formatDep(dep.Path, dep.Version))
}
deps = append(deps, GetDependencyListNonGo()...)
sort.Strings(deps)
return deps
}
// GetDependencyListNonGo returns a list of non-Go dependencies.
func GetDependencyListNonGo() []string {
var deps []string
if IsExtended {
deps = append(
deps,
formatDep("github.com/sass/libsass", "3.6.5"),
formatDep("github.com/webmproject/libwebp", "v1.2.4"),
)
}
if dartSass := dartSassVersion(); dartSass.ProtocolVersion != "" {
const dartSassPath = "github.com/sass/dart-sass-embedded"
deps = append(deps,
formatDep(dartSassPath+"/protocol", dartSass.ProtocolVersion),
formatDep(dartSassPath+"/compiler", dartSass.CompilerVersion),
formatDep(dartSassPath+"/implementation", dartSass.ImplementationVersion),
)
}
return deps
}
// IsRunningAsTest reports whether we are running as a test.
func IsRunningAsTest() bool {
for _, arg := range os.Args {
@@ -249,3 +269,13 @@ type Dependency struct {
// Replaced by this dependency.
Replace *Dependency
}
func dartSassVersion() godartsass.DartSassVersion {
// This is also duplicated in the dartsass package.
const dartSassEmbeddedBinaryName = "dart-sass-embedded"
if !hexec.InPath(dartSassEmbeddedBinaryName) {
return godartsass.DartSassVersion{}
}
v, _ := godartsass.Version(dartSassEmbeddedBinaryName)
return v
}
+2 -2
View File
@@ -17,7 +17,7 @@ package hugo
// This should be the only one.
var CurrentVersion = Version{
Major: 0,
Minor: 102,
Minor: 111,
PatchLevel: 0,
Suffix: "-DEV",
Suffix: "",
}
+4 -5
View File
@@ -17,7 +17,6 @@ import (
"bytes"
"fmt"
"io"
"io/ioutil"
"log"
"os"
"regexp"
@@ -92,7 +91,7 @@ type logger struct {
*jww.Notepad
// The writer that represents stdout.
// Will be ioutil.Discard when in quiet mode.
// Will be io.Discard when in quiet mode.
out io.Writer
logCounters *LogCounters
@@ -232,12 +231,12 @@ func NewErrorLogger() Logger {
// NewBasicLogger creates a new basic logger writing to Stdout.
func NewBasicLogger(t jww.Threshold) Logger {
return newLogger(t, jww.LevelError, os.Stdout, ioutil.Discard, false)
return newLogger(t, jww.LevelError, os.Stdout, io.Discard, false)
}
// NewBasicLoggerForWriter creates a new basic logger writing to w.
func NewBasicLoggerForWriter(t jww.Threshold, w io.Writer) Logger {
return newLogger(t, jww.LevelError, w, ioutil.Discard, false)
return newLogger(t, jww.LevelError, w, io.Discard, false)
}
// RemoveANSIColours removes all ANSI colours from the given string.
@@ -291,7 +290,7 @@ func InitGlobalLogger(stdoutThreshold, logThreshold jww.Threshold, outHandle, lo
func getLogWriters(outHandle, logHandle io.Writer) (io.Writer, io.Writer) {
isTerm := terminal.PrintANSIColors(os.Stdout)
if logHandle != ioutil.Discard && isTerm {
if logHandle != io.Discard && isTerm {
// Remove any Ansi coloring from log output
logHandle = ansiCleaner{w: logHandle}
}
+1
View File
@@ -30,6 +30,7 @@ type Scratch struct {
// Scratcher provides a scratching service.
type Scratcher interface {
// Scratch returns a "scratch pad" that can be used to store state.
Scratch() *Scratch
}
+18 -7
View File
@@ -100,25 +100,25 @@ var isFileRe = regexp.MustCompile(`.*\..{1,6}$`)
// GetDottedRelativePath expects a relative path starting after the content directory.
// It returns a relative path with dots ("..") navigating up the path structure.
func GetDottedRelativePath(inPath string) string {
inPath = filepath.Clean(filepath.FromSlash(inPath))
inPath = path.Clean(filepath.ToSlash(inPath))
if inPath == "." {
return "./"
}
if !isFileRe.MatchString(inPath) && !strings.HasSuffix(inPath, FilePathSeparator) {
inPath += FilePathSeparator
if !isFileRe.MatchString(inPath) && !strings.HasSuffix(inPath, "/") {
inPath += "/"
}
if !strings.HasPrefix(inPath, FilePathSeparator) {
inPath = FilePathSeparator + inPath
if !strings.HasPrefix(inPath, "/") {
inPath = "/" + inPath
}
dir, _ := filepath.Split(inPath)
sectionCount := strings.Count(dir, FilePathSeparator)
sectionCount := strings.Count(dir, "/")
if sectionCount == 0 || dir == FilePathSeparator {
if sectionCount == 0 || dir == "/" {
return "./"
}
@@ -263,3 +263,14 @@ func (n NamedSlice) String() string {
}
return fmt.Sprintf("%s%s{%s}", n.Name, FilePathSeparator, strings.Join(n.Slice, ","))
}
// DirFile holds the result from path.Split.
type DirFile struct {
Dir string
File string
}
// Used in test.
func (df DirFile) String() string {
return fmt.Sprintf("%s|%s", df.Dir, df.File)
}
+2
View File
@@ -24,6 +24,8 @@ import (
// Positioner represents a thing that knows its position in a text file or stream,
// typically an error.
type Positioner interface {
// Position returns the current position.
// Useful in error logging, e.g. {{ errorf "error in code block: %s" .Position }}.
Position() Position
}
+20
View File
@@ -0,0 +1,20 @@
// Copyright 2023 The Hugo Authors. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package css
// QuotedString is a string that needs to be quoted in CSS.
type QuotedString string
// UnquotedString is a string that does not need to be quoted in CSS.
type UnquotedString string
+16
View File
@@ -36,3 +36,19 @@ type ProbablyEqer interface {
type Comparer interface {
Compare(other any) int
}
// Eq returns whether v1 is equal to v2.
// It will use the Eqer interface if implemented, which
// defines equals when two value are interchangeable
// in the Hugo templates.
func Eq(v1, v2 any) bool {
if v1 == nil || v2 == nil {
return v1 == v2
}
if eqer, ok := v1.(Eqer); ok {
return eqer.Eq(v2)
}
return v1 == v2
}
+30 -10
View File
@@ -180,10 +180,15 @@ type Headers struct {
}
type Redirect struct {
From string
To string
From string
To string
// HTTP status code to use for the redirect.
// A status code of 200 will trigger a URL rewrite.
Status int
Force bool
// Forcode redirect, even if original request path exists.
Force bool
}
func (r Redirect) IsZero() bool {
@@ -200,16 +205,31 @@ func DecodeServer(cfg Provider) (*Server, error) {
_ = mapstructure.WeakDecode(m, s)
for i, redir := range s.Redirects {
// Get it in line with the Hugo server.
redir.To = strings.TrimSuffix(redir.To, "index.html")
if !strings.HasPrefix(redir.To, "https") && !strings.HasSuffix(redir.To, "/") {
// There are some tricky infinite loop situations when dealing
// when the target does not have a trailing slash.
// This can certainly be handled better, but not time for that now.
return nil, fmt.Errorf("unsupported redirect to value %q in server config; currently this must be either a remote destination or a local folder, e.g. \"/blog/\" or \"/blog/index.html\"", redir.To)
// Get it in line with the Hugo server for OK responses.
// We currently treat the 404 as a special case, they are always "ugly", so keep them as is.
if redir.Status != 404 {
redir.To = strings.TrimSuffix(redir.To, "index.html")
if !strings.HasPrefix(redir.To, "https") && !strings.HasSuffix(redir.To, "/") {
// There are some tricky infinite loop situations when dealing
// when the target does not have a trailing slash.
// This can certainly be handled better, but not time for that now.
return nil, fmt.Errorf("unsupported redirect to value %q in server config; currently this must be either a remote destination or a local folder, e.g. \"/blog/\" or \"/blog/index.html\"", redir.To)
}
}
s.Redirects[i] = redir
}
if len(s.Redirects) == 0 {
// Set up a default redirect for 404s.
s.Redirects = []Redirect{
{
From: "**",
To: "/404.html",
Status: 404,
},
}
}
return s, nil
}
+12 -2
View File
@@ -29,11 +29,22 @@ import (
)
var (
// See issue #8979 for context.
// Hugo has always used config.toml etc. as the default config file name.
// But hugo.toml is a more descriptive name, but we need to check for both.
DefaultConfigNames = []string{"hugo", "config"}
DefaultConfigNamesSet = make(map[string]bool)
ValidConfigFileExtensions = []string{"toml", "yaml", "yml", "json"}
validConfigFileExtensionsMap map[string]bool = make(map[string]bool)
)
func init() {
for _, name := range DefaultConfigNames {
DefaultConfigNamesSet[name] = true
}
for _, ext := range ValidConfigFileExtensions {
validConfigFileExtensionsMap[ext] = true
}
@@ -142,8 +153,7 @@ func LoadConfigFromDir(sourceFs afero.Fs, configDir, environment string) (Provid
}
var keyPath []string
if name != "config" {
if !DefaultConfigNamesSet[name] {
// Can be params.jp, menus.en etc.
name, lang := paths.FileAndExtNoDelimiter(name)
+2 -2
View File
@@ -42,10 +42,10 @@ var DefaultConfig = Config{
),
// These have been tested to work with Hugo's external programs
// on Windows, Linux and MacOS.
OsEnv: NewWhitelist("(?i)^(PATH|PATHEXT|APPDATA|TMP|TEMP|TERM)$"),
OsEnv: NewWhitelist(`(?i)^((HTTPS?|NO)_PROXY|PATH(EXT)?|APPDATA|TE?MP|TERM|GO\w+)$`),
},
Funcs: Funcs{
Getenv: NewWhitelist("^HUGO_"),
Getenv: NewWhitelist("^HUGO_", "^CI$"),
},
HTTP: HTTP{
URLs: NewWhitelist(".*"),
@@ -140,7 +140,7 @@ func TestToTOML(t *testing.T) {
got := DefaultConfig.ToTOML()
c.Assert(got, qt.Equals,
"[security]\n enableInlineShortcodes = false\n [security.exec]\n allow = ['^dart-sass-embedded$', '^go$', '^npx$', '^postcss$']\n osEnv = ['(?i)^(PATH|PATHEXT|APPDATA|TMP|TEMP|TERM)$']\n\n [security.funcs]\n getenv = ['^HUGO_']\n\n [security.http]\n methods = ['(?i)GET|POST']\n urls = ['.*']",
"[security]\n enableInlineShortcodes = false\n\n [security.exec]\n allow = ['^dart-sass-embedded$', '^go$', '^npx$', '^postcss$']\n osEnv = ['(?i)^((HTTPS?|NO)_PROXY|PATH(EXT)?|APPDATA|TE?MP|TERM|GO\\w+)$']\n\n [security.funcs]\n getenv = ['^HUGO_', '^CI$']\n\n [security.http]\n methods = ['(?i)GET|POST']\n urls = ['.*']",
)
}
@@ -163,4 +163,8 @@ func TestDecodeConfigDefault(t *testing.T) {
c.Assert(pc.HTTP.Methods.Accept("GET"), qt.IsTrue)
c.Assert(pc.HTTP.Methods.Accept("get"), qt.IsTrue)
c.Assert(pc.HTTP.Methods.Accept("DELETE"), qt.IsFalse)
c.Assert(pc.Exec.OsEnv.Accept("PATH"), qt.IsTrue)
c.Assert(pc.Exec.OsEnv.Accept("GOROOT"), qt.IsTrue)
c.Assert(pc.Exec.OsEnv.Accept("MYSECRET"), qt.IsFalse)
}
+1
View File
@@ -33,6 +33,7 @@ type Whitelist struct {
patternsStrings []string
}
// MarshalJSON is for internal use only.
func (w Whitelist) MarshalJSON() ([]byte, error) {
if w.acceptNone {
return json.Marshal(acceptNoneKeyword)
+6 -4
View File
@@ -52,7 +52,7 @@ draft: true
// NewContent creates a new content file in h (or a full bundle if the archetype is a directory)
// in targetPath.
func NewContent(h *hugolib.HugoSites, kind, targetPath string) error {
func NewContent(h *hugolib.HugoSites, kind, targetPath string, force bool) error {
if h.BaseFs.Content.Dirs == nil {
return errors.New("no existing content directory configured for this project")
}
@@ -76,6 +76,7 @@ func NewContent(h *hugolib.HugoSites, kind, targetPath string) error {
kind: kind,
targetPath: targetPath,
force: force,
}
ext := paths.Ext(targetPath)
@@ -94,7 +95,7 @@ func NewContent(h *hugolib.HugoSites, kind, targetPath string) error {
}
if ext == "" {
return "", fmt.Errorf("failed to resolve %q to a archetype template", targetPath)
return "", fmt.Errorf("failed to resolve %q to an archetype template", targetPath)
}
if !files.IsContentFile(b.targetPath) {
@@ -132,6 +133,7 @@ type contentBuilder struct {
kind string
isDir bool
dirMap archetypeMap
force bool
}
func (b *contentBuilder) buildDir() error {
@@ -145,7 +147,7 @@ func (b *contentBuilder) buildDir() error {
for _, fi := range b.dirMap.contentFiles {
targetFilename := filepath.Join(b.targetPath, strings.TrimPrefix(fi.Meta().Path, b.archetypeFilename))
abs, err := b.cf.CreateContentPlaceHolder(targetFilename)
abs, err := b.cf.CreateContentPlaceHolder(targetFilename, b.force)
if err != nil {
return err
}
@@ -218,7 +220,7 @@ func (b *contentBuilder) buildDir() error {
}
func (b *contentBuilder) buildFile() (string, error) {
contentPlaceholderAbsFilename, err := b.cf.CreateContentPlaceHolder(b.targetPath)
contentPlaceholderAbsFilename, err := b.cf.CreateContentPlaceHolder(b.targetPath, b.force)
if err != nil {
return "", err
}
+36 -9
View File
@@ -82,7 +82,7 @@ func TestNewContentFromFile(t *testing.T) {
cfg, fs := newTestCfg(c, mm)
h, err := hugolib.NewHugoSites(deps.DepsCfg{Cfg: cfg, Fs: fs})
c.Assert(err, qt.IsNil)
err = create.NewContent(h, cas.kind, cas.path)
err = create.NewContent(h, cas.kind, cas.path, false)
if b, ok := cas.expected.(bool); ok && !b {
if !b {
@@ -145,7 +145,7 @@ i18n: {{ T "hugo" }}
c.Assert(err, qt.IsNil)
c.Assert(len(h.Sites), qt.Equals, 2)
c.Assert(create.NewContent(h, "my-bundle", "post/my-post"), qt.IsNil)
c.Assert(create.NewContent(h, "my-bundle", "post/my-post", false), qt.IsNil)
cContains(c, readFileFromFs(t, fs.Source, filepath.Join("content", "post/my-post/resources/hugo1.json")), `hugo1: {{ printf "no template handling in here" }}`)
cContains(c, readFileFromFs(t, fs.Source, filepath.Join("content", "post/my-post/resources/hugo2.xml")), `hugo2: {{ printf "no template handling in here" }}`)
@@ -157,7 +157,7 @@ i18n: {{ T "hugo" }}
cContains(c, readFileFromFs(t, fs.Source, filepath.Join("content", "post/my-post/pages/bio.md")), `File: bio.md`, `Site Lang: en`, `Name: Bio`)
c.Assert(create.NewContent(h, "my-theme-bundle", "post/my-theme-post"), qt.IsNil)
c.Assert(create.NewContent(h, "my-theme-bundle", "post/my-theme-post", false), qt.IsNil)
cContains(c, readFileFromFs(t, fs.Source, filepath.Join("content", "post/my-theme-post/index.md")), `File: index.md`, `Site Lang: en`, `Name: My Theme Post`, `i18n: Hugo Rocks!`)
cContains(c, readFileFromFs(t, fs.Source, filepath.Join("content", "post/my-theme-post/resources/hugo1.json")), `hugo1: {{ printf "no template handling in here" }}`)
}
@@ -187,19 +187,19 @@ site RegularPages: {{ len site.RegularPages }}
c.Assert(err, qt.IsNil)
c.Assert(len(h.Sites), qt.Equals, 2)
c.Assert(create.NewContent(h, "my-bundle", "post/my-post"), qt.IsNil)
c.Assert(create.NewContent(h, "my-bundle", "post/my-post", false), qt.IsNil)
cContains(c, readFileFromFs(t, fs.Source, filepath.Join("content", "post/my-post/index.md")), `site RegularPages: 10`)
// Default bundle archetype
c.Assert(create.NewContent(h, "", "post/my-post2"), qt.IsNil)
c.Assert(create.NewContent(h, "", "post/my-post2", false), qt.IsNil)
cContains(c, readFileFromFs(t, fs.Source, filepath.Join("content", "post/my-post2/index.md")), `default archetype index.md`)
// Regular file with bundle kind.
c.Assert(create.NewContent(h, "my-bundle", "post/foo.md"), qt.IsNil)
c.Assert(create.NewContent(h, "my-bundle", "post/foo.md", false), qt.IsNil)
cContains(c, readFileFromFs(t, fs.Source, filepath.Join("content", "post/foo.md")), `draft: true`)
// Regular files should fall back to the default archetype (we have no regular file archetype).
c.Assert(create.NewContent(h, "my-bundle", "mypage.md"), qt.IsNil)
c.Assert(create.NewContent(h, "my-bundle", "mypage.md", false), qt.IsNil)
cContains(c, readFileFromFs(t, fs.Source, filepath.Join("content", "mypage.md")), `draft: true`)
}
@@ -237,7 +237,7 @@ i18n: {{ T "hugo" }}
c.Assert(err, qt.IsNil)
c.Assert(len(h.Sites), qt.Equals, 2)
c.Assert(create.NewContent(h, "my-bundle", "post/my-post"), qt.IsNil)
c.Assert(create.NewContent(h, "my-bundle", "post/my-post", false), qt.IsNil)
cContains(c, readFileFromFs(t, fs.Source, filepath.Join("content", "post/my-post/resources/hugo1.json")), `hugo1: {{ printf "no template handling in here" }}`)
cContains(c, readFileFromFs(t, fs.Source, filepath.Join("content", "post/my-post/resources/hugo2.xml")), `hugo2: {{ printf "no template handling in here" }}`)
@@ -247,11 +247,38 @@ i18n: {{ T "hugo" }}
cContains(c, readFileFromFs(t, fs.Source, filepath.Join("content", "post/my-post/pages/bio.md")), `File: bio.md`, `Name: Bio`)
c.Assert(create.NewContent(h, "my-theme-bundle", "post/my-theme-post"), qt.IsNil)
c.Assert(create.NewContent(h, "my-theme-bundle", "post/my-theme-post", false), qt.IsNil)
cContains(c, readFileFromFs(t, fs.Source, filepath.Join("content", "post/my-theme-post/index.md")), `File: index.md`, `Name: My Theme Post`, `i18n: Hugo Rocks!`)
cContains(c, readFileFromFs(t, fs.Source, filepath.Join("content", "post/my-theme-post/resources/hugo1.json")), `hugo1: {{ printf "no template handling in here" }}`)
}
func TestNewContentForce(t *testing.T) {
mm := afero.NewMemMapFs()
c := qt.New(t)
archetypeDir := filepath.Join("archetypes", "my-bundle")
c.Assert(mm.MkdirAll(archetypeDir, 0o755), qt.IsNil)
c.Assert(afero.WriteFile(mm, filepath.Join(archetypeDir, "index.md"), []byte(""), 0o755), qt.IsNil)
c.Assert(afero.WriteFile(mm, filepath.Join(archetypeDir, "index.nn.md"), []byte(""), 0o755), qt.IsNil)
c.Assert(initFs(mm), qt.IsNil)
cfg, fs := newTestCfg(c, mm)
h, err := hugolib.NewHugoSites(deps.DepsCfg{Cfg: cfg, Fs: fs})
c.Assert(err, qt.IsNil)
c.Assert(len(h.Sites), qt.Equals, 2)
// from file
c.Assert(create.NewContent(h, "post", "post/my-post.md", false), qt.IsNil)
c.Assert(create.NewContent(h, "post", "post/my-post.md", false), qt.IsNotNil)
c.Assert(create.NewContent(h, "post", "post/my-post.md", true), qt.IsNil)
// from dir
c.Assert(create.NewContent(h, "my-bundle", "post/my-post", false), qt.IsNil)
c.Assert(create.NewContent(h, "my-bundle", "post/my-post", false), qt.IsNotNil)
c.Assert(create.NewContent(h, "my-bundle", "post/my-post", true), qt.IsNil)
}
func initFs(fs afero.Fs) error {
perm := os.FileMode(0o755)
var err error
+1 -2
View File
@@ -24,7 +24,6 @@ import (
"encoding/hex"
"fmt"
"io"
"io/ioutil"
"mime"
"os"
"path/filepath"
@@ -403,7 +402,7 @@ func (lf *localFile) Reader() (io.ReadCloser, error) {
// We've got the gzipped contents cached in gzipped.
// Note: we can't use lf.gzipped directly as a Reader, since we it discards
// data after it is read, and we may read it more than once.
return ioutil.NopCloser(bytes.NewReader(lf.gzipped.Bytes())), nil
return io.NopCloser(bytes.NewReader(lf.gzipped.Bytes())), nil
}
// Not expected to fail since we did it successfully earlier in newLocalFile,
// but could happen due to changes in the underlying filesystem.
+18 -51
View File
@@ -23,7 +23,6 @@ import (
"crypto/md5"
"fmt"
"io"
"io/ioutil"
"os"
"path"
"path/filepath"
@@ -407,7 +406,7 @@ func TestLocalFile(t *testing.T) {
if err != nil {
t.Fatal(err)
}
gotContent, err := ioutil.ReadAll(r)
gotContent, err := io.ReadAll(r)
if err != nil {
t.Fatal(err)
}
@@ -420,7 +419,7 @@ func TestLocalFile(t *testing.T) {
if err != nil {
t.Fatal(err)
}
gotContent, err = ioutil.ReadAll(r)
gotContent, err = io.ReadAll(r)
if err != nil {
t.Fatal(err)
}
@@ -520,47 +519,35 @@ type fsTest struct {
// 1. An in-memory afero.Fs paired with an in-memory Go CDK bucket.
// 2. A filesystem-based afero.Fs paired with an filesystem-based Go CDK bucket.
// It returns the pair of tests and a cleanup function.
func initFsTests() ([]*fsTest, func(), error) {
tmpfsdir, err := ioutil.TempDir("", "fs")
if err != nil {
return nil, nil, err
}
tmpbucketdir, err := ioutil.TempDir("", "bucket")
if err != nil {
return nil, nil, err
}
func initFsTests(t *testing.T) []*fsTest {
t.Helper()
tmpfsdir := t.TempDir()
tmpbucketdir := t.TempDir()
memfs := afero.NewMemMapFs()
membucket := memblob.OpenBucket(nil)
t.Cleanup(func() { membucket.Close() })
filefs := afero.NewBasePathFs(afero.NewOsFs(), tmpfsdir)
filebucket, err := fileblob.OpenBucket(tmpbucketdir, nil)
if err != nil {
return nil, nil, err
t.Fatal(err)
}
t.Cleanup(func() { filebucket.Close() })
tests := []*fsTest{
{"mem", memfs, membucket},
{"file", filefs, filebucket},
}
cleanup := func() {
membucket.Close()
filebucket.Close()
os.RemoveAll(tmpfsdir)
os.RemoveAll(tmpbucketdir)
}
return tests, cleanup, nil
return tests
}
// TestEndToEndSync verifies that basic adds, updates, and deletes are working
// correctly.
func TestEndToEndSync(t *testing.T) {
ctx := context.Background()
tests, cleanup, err := initFsTests()
if err != nil {
t.Fatal(err)
}
defer cleanup()
tests := initFsTests(t)
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
local, err := initLocalFs(ctx, test.fs)
@@ -643,11 +630,7 @@ func TestEndToEndSync(t *testing.T) {
// TestMaxDeletes verifies that the "maxDeletes" flag is working correctly.
func TestMaxDeletes(t *testing.T) {
ctx := context.Background()
tests, cleanup, err := initFsTests()
if err != nil {
t.Fatal(err)
}
defer cleanup()
tests := initFsTests(t)
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
local, err := initLocalFs(ctx, test.fs)
@@ -772,14 +755,10 @@ func TestIncludeExclude(t *testing.T) {
}
for _, test := range tests {
t.Run(fmt.Sprintf("include %q exclude %q", test.Include, test.Exclude), func(t *testing.T) {
fsTests, cleanup, err := initFsTests()
if err != nil {
t.Fatal(err)
}
defer cleanup()
fsTests := initFsTests(t)
fsTest := fsTests[1] // just do file-based test
_, err = initLocalFs(ctx, fsTest.fs)
_, err := initLocalFs(ctx, fsTest.fs)
if err != nil {
t.Fatal(err)
}
@@ -841,11 +820,7 @@ func TestIncludeExcludeRemoteDelete(t *testing.T) {
}
for _, test := range tests {
t.Run(fmt.Sprintf("include %q exclude %q", test.Include, test.Exclude), func(t *testing.T) {
fsTests, cleanup, err := initFsTests()
if err != nil {
t.Fatal(err)
}
defer cleanup()
fsTests := initFsTests(t)
fsTest := fsTests[1] // just do file-based test
local, err := initLocalFs(ctx, fsTest.fs)
@@ -897,11 +872,7 @@ func TestIncludeExcludeRemoteDelete(t *testing.T) {
func TestCompression(t *testing.T) {
ctx := context.Background()
tests, cleanup, err := initFsTests()
if err != nil {
t.Fatal(err)
}
defer cleanup()
tests := initFsTests(t)
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
local, err := initLocalFs(ctx, test.fs)
@@ -956,11 +927,7 @@ func TestCompression(t *testing.T) {
// attribute for matcher works.
func TestMatching(t *testing.T) {
ctx := context.Background()
tests, cleanup, err := initFsTests()
if err != nil {
t.Fatal(err)
}
defer cleanup()
tests := initFsTests(t)
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
_, err := initLocalFs(ctx, test.fs)
+44 -6
View File
@@ -2,6 +2,8 @@ package deps
import (
"fmt"
"path/filepath"
"strings"
"sync"
"sync/atomic"
"time"
@@ -9,6 +11,7 @@ import (
"github.com/gohugoio/hugo/cache/filecache"
"github.com/gohugoio/hugo/common/hexec"
"github.com/gohugoio/hugo/common/loggers"
"github.com/gohugoio/hugo/common/types"
"github.com/gohugoio/hugo/config"
"github.com/gohugoio/hugo/config/security"
"github.com/gohugoio/hugo/helpers"
@@ -16,6 +19,7 @@ import (
"github.com/gohugoio/hugo/langs"
"github.com/gohugoio/hugo/media"
"github.com/gohugoio/hugo/resources/page"
"github.com/gohugoio/hugo/resources/postpub"
"github.com/gohugoio/hugo/metrics"
"github.com/gohugoio/hugo/output"
@@ -78,6 +82,10 @@ type Deps struct {
// All the output formats available for the current site.
OutputFormatsConfig output.Formats
// FilenameHasPostProcessPrefix is a set of filenames in /public that
// contains a post-processing prefix.
FilenameHasPostProcessPrefix []string
templateProvider ResourceProvider
WithTemplate func(templ tpl.TemplateManager) error `json:"-"`
@@ -202,6 +210,7 @@ func New(cfg DepsCfg) (*Deps, error) {
var (
logger = cfg.Logger
fs = cfg.Fs
d *Deps
)
if cfg.TemplateProvider == nil {
@@ -239,6 +248,32 @@ func New(cfg DepsCfg) (*Deps, error) {
}
execHelper := hexec.New(securityConfig)
var filenameHasPostProcessPrefixMu sync.Mutex
hashBytesReceiverFunc := func(name string, match bool) {
if !match {
return
}
filenameHasPostProcessPrefixMu.Lock()
d.FilenameHasPostProcessPrefix = append(d.FilenameHasPostProcessPrefix, name)
filenameHasPostProcessPrefixMu.Unlock()
}
// Skip binary files.
hashBytesSHouldCheck := func(name string) bool {
ext := strings.TrimPrefix(filepath.Ext(name), ".")
mime, _, found := cfg.MediaTypes.GetBySuffix(ext)
if !found {
return false
}
switch mime.MainType {
case "text", "application":
return true
default:
return false
}
}
fs.PublishDir = hugofs.NewHasBytesReceiver(fs.PublishDir, hashBytesSHouldCheck, hashBytesReceiverFunc, []byte(postpub.PostProcessPrefix))
ps, err := helpers.NewPathSpec(fs, cfg.Language, logger)
if err != nil {
return nil, fmt.Errorf("create PathSpec: %w", err)
@@ -264,17 +299,20 @@ func New(cfg DepsCfg) (*Deps, error) {
sp := source.NewSourceSpec(ps, nil, fs.Source)
timeoutms := cfg.Language.GetInt("timeout")
if timeoutms <= 0 {
timeoutms = 3000
timeout := 30 * time.Second
if cfg.Cfg.IsSet("timeout") {
v := cfg.Cfg.Get("timeout")
d, err := types.ToDurationE(v)
if err == nil {
timeout = d
}
}
ignoreErrors := cast.ToStringSlice(cfg.Cfg.Get("ignoreErrors"))
ignorableLogger := loggers.NewIgnorableLogger(logger, ignoreErrors...)
logDistinct := helpers.NewDistinctLogger(logger)
d := &Deps{
d = &Deps{
Fs: fs,
Log: ignorableLogger,
LogDistinct: logDistinct,
@@ -295,7 +333,7 @@ func New(cfg DepsCfg) (*Deps, error) {
BuildClosers: &Closers{},
BuildState: buildState,
Running: cfg.Running,
Timeout: time.Duration(timeoutms) * time.Millisecond,
Timeout: timeout,
globalErrHandler: errorHandler,
}
+28 -2
View File
@@ -34,6 +34,7 @@
"brlink",
"Brotli",
"Browsersync",
"canonicalization",
"canonify",
"Catmull",
"Catwoman",
@@ -61,6 +62,8 @@
"datatable",
"DATOCMS",
"debugconfig",
"defang",
"Deindent",
"DELIM",
"dhersam",
"digitalcraftsman",
@@ -72,17 +75,21 @@
"DRING",
"Eiqc",
"Eliott",
"embeddable",
"Emojify",
"Enwrite",
"eopkg",
"eparis",
"errorf",
"erroridf",
"esbuild",
"Evernote",
"Exif",
"exitwp",
"expirydate",
"Feminella",
"firstpost",
"Flickr",
"Formspree",
"fpath",
"Francia",
@@ -91,10 +98,12 @@
"funcs",
"funcsig",
"Garen",
"Garuda",
"gcloud",
"Getenv",
"getjson",
"getpage",
"Gitee",
"Gmfc",
"Goel",
"Gohugo",
@@ -106,6 +115,7 @@
"govendor",
"Gowans",
"Grayscale",
"Gregor",
"Gruber",
"gtag",
"gvfs",
@@ -141,10 +151,12 @@
"Joomla",
"JRBR",
"jsonify",
"Karmada",
"katex",
"keycdn",
"KEYVALS",
"kubernetes",
"Kubuntu",
"Lanczos",
"langformatnumber",
"lastmod",
@@ -152,6 +164,7 @@
"linktitle",
"Lipi",
"lrwxr",
"Lubuntu",
"maingo",
"markdownified",
"markdownify",
@@ -188,6 +201,7 @@
"newparam",
"Nichlas",
"Nikhil",
"Nikola",
"Njjy",
"nlist",
"nobr",
@@ -221,6 +235,7 @@
"Poupin",
"prerender",
"println",
"Pritchard",
"publishdate",
"Pygments",
"qref",
@@ -249,6 +264,7 @@
"safejs",
"Samsa",
"schemaorg",
"setx",
"Shekhar",
"Shortcode",
"Shortcodes",
@@ -257,7 +273,9 @@
"Sindre",
"sitemapindex",
"sitemapxml",
"slugorfilename",
"Smartcrop",
"Sobre",
"Sprintf",
"Startseite",
"strconv",
@@ -278,6 +296,7 @@
"Tknx",
"TLDR",
"TMPDIR",
"toclevels",
"TOCSS",
"todos",
"tojson",
@@ -288,6 +307,8 @@
"toyaml",
"twitteruser",
"Unmarshal",
"unpublishdate",
"Unsharp",
"urlize",
"urlset",
"utimestamp",
@@ -301,15 +322,19 @@
"wibble",
"wordcount",
"workson",
"Wowchemy",
"wpxr",
"Xbaabbab",
"Xubuntu",
"xvzf",
"yoyoyo",
"yunbox",
"Zgotmpl",
"Zorin",
"zzbbaabb",
"مدونتي"
],
"language": "en,en-GB,en-US,de,fr",
"language": "en,en-US,de,fr",
"allowCompoundWords": true,
"files": [
"**/*.md"
@@ -331,5 +356,6 @@
"**/news/*",
"**/showcase/*"
],
"useGitignore": true
"useGitignore": true,
"enabled": true
}
+1 -1
View File
@@ -17,6 +17,6 @@ markComment: >
If you still think this is important, please tell us why.
This issue will automatically be closed in the near future if no further activity occurs. Thank you for all your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false
+26
View File
@@ -0,0 +1,26 @@
name: "CodeQL"
on:
schedule:
- cron: "0 0 1 * *"
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: "javascript"
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
+3 -2
View File
@@ -1,4 +1,4 @@
name: 'Check spelling'
name: "Check spelling"
on: # rebuild any PRs and main branch changes
push:
branches-ignore:
@@ -15,6 +15,7 @@ jobs:
- uses: actions/checkout@v3
- uses: streetsidesoftware/cspell-action@v2
with:
check_dot_files: false
incremental_files_only: true
inline: warning
strict: false
incremental_files_only: true
+41
View File
@@ -0,0 +1,41 @@
name: Super Linter
on:
workflow_dispatch:
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
build:
permissions:
contents: read # to fetch code (actions/checkout)
statuses: write # to mark status of each linter run (github/super-linter/slim)
name: Lint Code Base
runs-on: ubuntu-latest
if: ${{ github.actor != 'dependabot[bot]' }}
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Lint Code Base
uses: github/super-linter/slim@v4
env:
DEFAULT_BRANCH: master
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
IGNORE_GITIGNORED_FILES: true
LINTER_RULES_PATH: /
LOG_LEVEL: NOTICE
MARKDOWN_CONFIG_FILE: .markdownlint.yaml
SUPPRESS_POSSUM: true
VALIDATE_CSS: false
VALIDATE_EDITORCONFIG: false
VALIDATE_GITLEAKS: false
VALIDATE_HTML: false
VALIDATE_JAVASCRIPT_STANDARD: false
VALIDATE_JSCPD: false
VALIDATE_NATURAL_LANGUAGE: false
VALIDATE_SHELL_SHFMT: false
VALIDATE_XML: false
+1
View File
@@ -1,6 +1,7 @@
/.idea
/.vscode
/public
/dist
node_modules
nohup.out
.DS_Store
+22 -2
View File
@@ -1,4 +1,24 @@
# https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md
MD013: false # Line length
MD033: false # Inline HTML
MD002: false
MD003: false
MD004: false
MD007: false
MD012:
maximum: 2
MD013: false
MD014: false
MD022: false
MD024: false
MD031: false
MD032: false
MD033: false
MD034: false
MD036: false
MD037: false
MD038: false
MD041: false
MD046: false
MD049: false
MD050: false
MD053: false
+6
View File
@@ -0,0 +1,6 @@
**/commands/**
**/functions/**
**/news/**
**/showcase/**
**/zh/**
**/license.md
+3
View File
@@ -0,0 +1,3 @@
**/news/**
**/showcase/**
**/zh/**
+2 -1
View File
@@ -1,6 +1,7 @@
{
"recommendations": [
"DavidAnson.vscode-markdownlint",
"EditorConfig.EditorConfig",
"esbenp.prettier-vscode",
"streetsidesoftware.code-spell-checker"
]
}
+12 -3
View File
@@ -7,11 +7,11 @@ Documentation site for [Hugo](https://github.com/gohugoio/hugo), the very fast a
## Contributing
We welcome contributions to Hugo of any kind including documentation, suggestions, bug reports, pull requests etc. Also check out our [contribution guide](https://gohugo.io/contribute/documentation/). We would love to hear from you.
We welcome contributions to Hugo of any kind including documentation, suggestions, bug reports, pull requests etc. Also check out our [contribution guide](https://gohugo.io/contribute/documentation/). We would love to hear from you.
Note that this repository contains solely the documentation for Hugo. For contributions that aren't documentation-related please refer to the [hugo](https://github.com/gohugoio/hugo) repository.
Note that this repository contains solely the documentation for Hugo. For contributions that aren't documentation-related please refer to the [hugo](https://github.com/gohugoio/hugo) repository.
*Pull requests shall **only** contain changes to the actual documentation. However, changes on the code base of Hugo **and** the documentation shall be a single, atomic pull request in the [hugo](https://github.com/gohugoio/hugo) repository.*
*Pull requests shall **only** contain changes to the actual documentation. However, changes on the codebase of Hugo **and** the documentation shall be a single, atomic pull request in the [hugo](https://github.com/gohugoio/hugo) repository.*
Spelling fixes are most welcomed, and if you want to contribute longer sections to the documentation, it would be great if you had the following criteria in mind when writing:
@@ -19,6 +19,15 @@ Spelling fixes are most welcomed, and if you want to contribute longer sections
* For example, try to find short snippets that teaches people about the concept. If the example is also useful as-is (copy and paste), then great. Don't list long and similar examples just so people can use them on their sites.
* Hugo has users from all over the world, so easy to understand and [simple English](https://simple.wikipedia.org/wiki/Basic_English) is good.
## Edit the theme
If you want to do docs-related theme changes, the simplest way is to have both `hugoDocs` and `gohugoioTheme` cloned as sibling directories, and then run:
```
HUGO_MODULE_WORKSPACE=hugo.work hugo server --ignoreVendorPaths "**"
```
## Branches
* The `master` branch is where the site is automatically built from, and is the place to put changes relevant to the current Hugo version.
@@ -54,7 +54,7 @@ pre {
}
@media (--breakpoint-large) {
.full-width, pre.expand:hover
.full-width
{
/*width: 100vw;
position: relative;
@@ -1,4 +1,4 @@
/* From http://cssfontstack.com */
/* From https://www.cssfontstack.com */
code, .code, pre code, .highlight pre {
font-family: 'inconsolata',Menlo,Monaco,'Courier New',monospace;
}
@@ -1,11 +0,0 @@
/* modified from:*/
@import 'highlight.js/styles/atom-one-light.css';
/* hljs-template-variable covers the handlebars templating*/
.hljs-template-variable {
color: var(--primary-color);
}
.hljs-attr {
color: var(--accent-color-light);
}
@@ -0,0 +1,3 @@
<svg width="158" height="160" viewBox="0 0 158 160" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.32 103V27.64H17.664V54.616C18.752 54.04 20 53.56 21.408 53.176C22.816 52.728 24.192 52.376 25.536 52.12C26.88 51.864 28.192 51.672 29.472 51.544C30.816 51.352 32.032 51.256 33.12 51.256C35.872 51.256 38.24 51.704 40.224 52.6C42.272 53.432 43.904 54.584 45.12 56.056C46.336 57.464 47.296 59.32 48 61.624C48.704 63.928 49.152 66.328 49.344 68.824C49.6 71.32 49.728 74.296 49.728 77.752C49.728 86.008 48.448 92.376 45.888 96.856C43.328 101.336 39.072 103.576 33.12 103.576C30.368 103.576 27.584 103 24.768 101.848C21.952 100.696 19.616 99.352 17.76 97.816L15.36 103H4.32ZM17.76 88.984C21.024 91.032 24.992 92.056 29.664 92.056C31.136 92.056 32.352 91.64 33.312 90.808C34.272 89.912 35.008 88.376 35.52 86.2C36.032 83.96 36.288 80.984 36.288 77.272C36.288 73.048 36 69.784 35.424 67.48C34.912 65.176 34.208 63.672 33.312 62.968C32.416 62.2 31.2 61.816 29.664 61.816C27.296 61.816 25.152 61.976 23.232 62.296C21.312 62.552 19.488 63.032 17.76 63.736V88.984ZM56.8958 77.272C56.8958 72.856 57.1518 69.176 57.6638 66.232C58.2398 63.224 59.0398 60.76 60.0638 58.84C61.0878 56.856 62.5278 55.352 64.3838 54.328C66.2398 53.304 68.2878 52.6 70.5278 52.216C72.8318 51.832 75.7118 51.64 79.1678 51.64C81.4718 51.64 83.4238 51.704 85.0238 51.832C86.6238 51.896 88.2238 52.088 89.8238 52.408C91.4878 52.664 92.8318 53.08 93.8558 53.656C94.8798 54.168 95.8718 54.904 96.8318 55.864C97.7918 56.76 98.5278 57.88 99.0398 59.224C99.6158 60.504 100.032 62.072 100.288 63.928C100.608 65.72 100.768 67.8 100.768 70.168C100.768 74.648 99.5838 77.912 97.2158 79.96C94.8478 82.008 91.2958 83.032 86.5598 83.032H70.3358C70.3358 85.976 70.7518 88.184 71.5838 89.656C72.4798 91.064 73.5678 91.928 74.8478 92.248C76.1918 92.568 78.2718 92.728 81.0878 92.728C88.9598 92.728 95.1998 92.376 99.8078 91.672V100.792C95.0078 102.584 86.3038 103.48 73.6958 103.48C70.4318 103.48 67.7118 103 65.5358 102.04C63.4238 101.08 61.7278 99.512 60.4478 97.336C59.1678 95.16 58.2398 92.472 57.6638 89.272C57.1518 86.072 56.8958 82.072 56.8958 77.272ZM70.3358 73.336H83.1038C85.9198 73.336 87.3278 72.056 87.3278 69.496C87.3278 66.296 86.8798 64.248 85.9838 63.352C85.1518 62.392 83.1358 61.912 79.9358 61.912C77.8878 61.912 76.3518 62.008 75.3278 62.2C74.3678 62.328 73.4078 62.776 72.4478 63.544C71.5518 64.248 70.9438 65.368 70.6238 66.904C70.3678 68.44 70.2718 70.584 70.3358 73.336ZM108.101 128.92V52.024H119.141L121.445 57.112C123.301 55.64 125.637 54.328 128.453 53.176C131.333 52.024 134.149 51.448 136.901 51.448C139.397 51.448 141.573 51.864 143.429 52.696C145.349 53.528 146.917 54.68 148.133 56.152C149.413 57.624 150.469 59.448 151.301 61.624C152.133 63.8 152.709 66.168 153.029 68.728C153.349 71.288 153.509 74.136 153.509 77.272C153.509 79.896 153.413 82.264 153.221 84.376C153.093 86.488 152.805 88.6 152.357 90.712C151.909 92.76 151.269 94.552 150.437 96.088C149.669 97.624 148.677 99 147.461 100.216C146.309 101.368 144.837 102.264 143.045 102.904C141.253 103.48 139.205 103.768 136.901 103.768C134.597 103.768 132.005 103.48 129.125 102.904C126.245 102.264 123.685 101.464 121.445 100.504V128.92H108.101ZM121.445 91.288C124.773 92.568 128.773 93.208 133.445 93.208C134.981 93.208 136.197 92.856 137.093 92.152C137.989 91.384 138.693 89.848 139.205 87.544C139.781 85.24 140.069 82.008 140.069 77.848C140.069 72.344 139.525 68.504 138.437 66.328C137.349 64.088 135.685 62.968 133.445 62.968C128.709 62.968 124.709 63.992 121.445 66.04V91.288Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 402 58"><g fill="#231F20"><path d="M24.6 23c.4 0 .7-.1 1-.2l10-5.4c1-.5 1.3-1.8.8-2.8-.5-1-1.8-1.3-2.8-.8l-9.9 5.4c-1 .3-1.5 1.3-1.3 2.3.3 1 1.3 1.7 2.3 1.5h-.1zM39.8 30.9c.3 0 .7-.1 1-.3L56.7 22c.6-.3 1-1 1-1.7 0-.8-.3-1.5-.9-1.8-.7-.4-1.4-.4-2.1-.1L38.8 27c-.9.4-1.5 1.4-1.2 2.4.2 1 1.2 1.6 2.2 1.5z"/><path d="M81 19.6c-.4-1.2-1.3-2.2-2.4-2.7L61.4 7.7c-2.8-1.4-6.1-1.4-9 0l-1.4.7L39.1 2C36.3.6 33 .6 30.1 2L2.5 16.9c-1.4.6-2.3 1.9-2.5 3.4v15.2c0 .8.4 1.5 1.1 1.8l35 19c2.8 1.4 6.2 1.4 9 0L80 37.1c.7-.3 1.1-1 1.1-1.8v-15c0-.2-.1-.5-.1-.7zm-76.5.9L32 5.6c1.6-.7 3.5-.7 5.2 0L51 13l3.3-1.8c1.7-.7 3.6-.7 5.2 0l17.1 9.2.2.1-.2.1-33.4 18c-1.7.8-3.6.8-5.2 0l-33.5-18-.2-.1h.2zm38.6 32.2c-1.6.7-3.5.7-5.1 0L4.1 34.3v-9.2L36 42.3c2.8 1.4 6.2 1.4 9 0l32-17.2v9L43.1 52.7zM115.7 10.2h18.2c8.7 0 13.1 3.1 13.1 9.1 0 1.9-.5 3.7-1.6 5.2s-2.6 2.6-4.3 3.2c2.2.4 4.2 1.5 5.7 3.1s2.2 3.6 2.2 5.7c0 3.8-1.4 6.7-4.1 8.7-2.7 2-6.6 3-11.8 3h-17.5v-5.4l1.8-.2c.4 0 .8-.2 1.1-.5.2-.4.3-.9.3-1.3V16.1l-3.1-.3v-5.6zm13.1 6.4v9h2.7c3.5 0 5.3-1.6 5.3-4.8 0-2.8-1.7-4.2-5.1-4.2h-2.9zm0 15.1v9.9h3.7c3.8 0 5.8-1.8 5.8-5.2 0-3.1-1.9-4.7-5.7-4.7h-3.8zM180.7 19v22c0 .5 0 .9.3 1.3.2.3.6.4 1 .5l1.5.1v5.2h-11.7v-3.6h-.2c-1.7 3-4.5 4.4-8.5 4.4-3.1 0-5.3-.8-6.8-2.3-1.4-1.6-2.1-4-2.1-7.3V26.2c0-.4-.1-.8-.4-1.1-.2-.3-.6-.5-1-.5l-1.6-.2V19H164v18.4c-.1 1.1.1 2.2.6 3.1.6.8 1.6 1.1 2.5 1 1.1.1 2.2-.4 2.9-1.2.7-1 1.1-2.2 1-3.4V26.3c0-.5-.1-.9-.3-1.3-.3-.3-.7-.4-1.1-.4l-1.3-.2V19h12.4zM198.9 12.3V19h8.1c2.5-1.1 4.3-3.4 5.5-6.7h5.3V19h6.9l-.5 6.3h-6.4v12.3c-.1 1.1.2 2.2.7 3.2.4.5 1.3.8 2.7.8 1.2 0 2.5-.3 3.6-.8l1.4 6.3c-2.5 1.3-5.2 1.9-7.9 1.8-1.3 0-2.5-.1-3.8-.3-.9-.2-1.8-.4-2.7-.8-.7-.3-1.3-.8-1.8-1.4-.4-.5-.8-1-1.1-1.6-.3-.6-.5-1.3-.6-2-.1-.6-.2-1.3-.3-2V25.3h-9v12.3c-.1 1 .1 2.1.6 3.1.5.7 1.4 1.1 2.3 1 1.1 0 2.2-.3 3.2-.8l1.7 6.2c-2.3 1.2-4.9 1.9-7.5 1.8-3.7 0-6.4-.9-7.9-2.6-1.5-1.7-2.3-4.2-2.3-7.6V25.3h-3.9l.8-5.5c3.6-.8 6.2-3.3 7.6-7.4l5.3-.1zM242.7 18.2c2.7-.1 5.3.6 7.5 2.2 2 1.6 3 4.1 2.8 6.6 0 6.9-5.3 10.2-16 10 .1 1.3.7 2.6 1.7 3.5 1.2 1 2.7 1.4 4.2 1.4 2.6-.1 5.2-.9 7.4-2.3l2.6 6.3c-.5.4-1 .7-1.6.9-1.3.6-2.6 1-4 1.4-1.9.5-3.8.7-5.7.7-4.9 0-8.5-1.3-10.8-4-2.3-2.6-3.5-6.2-3.5-10.7-.1-4.1 1.3-8.2 4-11.4 2.7-3 6.5-4.6 11.4-4.6zm2 9.3c0-.7-.2-1.4-.7-1.9-.5-.5-1.2-.7-1.9-.6-1.4 0-2.8.6-3.6 1.8-1 1.3-1.6 2.9-1.6 4.6 5.2.2 7.7-1.2 7.7-3.9h.1zM272.5 25.5c-1.1 0-2.1.5-2.7 1.3-.7.9-1.1 2.1-1 3.3v12.5l5.1.3v5.3h-18.1V43l1.9-.2c.4.1.8-.1 1.1-.4.2-.4.3-.9.3-1.4V26.2c0-.4-.1-.8-.3-1.2-.3-.3-.6-.4-1-.4l-2-.2V19H268v4.4h.1c.7-1.4 1.7-2.7 3-3.6 1.6-1.1 3.5-1.7 5.4-1.6 1.9-.1 3.7.2 5.4.9v11.3l-7.6.4v-3.9c0-.7-.2-1.1-.5-1.2-.4-.1-.9-.2-1.3-.2zM308.7 17.5c-1.2-.3-2.3-.4-3.4-.4-6.1 0-9.2 3.9-9.2 11.8 0 3.8.8 6.8 2.3 9 1.5 2.2 3.9 3.3 7.1 3.4 1.1 0 2.1-.1 3.2-.4.6-.2 1-.8 1-1.5v-3.7l7.3.4v10.5c-3.8 1.7-7.9 2.5-12.1 2.3-6.1 0-10.8-1.6-14.1-4.9-3.3-3.3-5-8.1-5-14.5 0-3.2.5-6.4 1.6-9.4.9-2.5 2.4-4.6 4.4-6.3 1.8-1.4 3.8-2.5 6-3.3 2.2-.7 4.6-1 6.9-1 4.2-.1 8.3.7 12.2 2.4v10l-7.4.4V19c0-.9-.3-1.4-.8-1.5zM323.6 10.2h14.6l7.5 24.8h.2l7.7-24.7h14.6v5.4l-1.8.2c-.5 0-.9.2-1.2.5-.3.4-.4.9-.3 1.3l1.9 24.8 2.9.1v5.6h-15.3v-5.5l1.8-.2c.4.1.8-.1 1-.4.2-.4.3-.9.2-1.3l-.9-16.1h-.1l-7.2 23.5h-7.1l-7-23.1h-.2l-1 17.3 2.8.2v5.6h-15.3v-5.5l1.8-.2c.5 0 .9-.2 1.2-.5.2-.4.4-.9.4-1.4l2-24.6-3.2-.2v-5.6zM385.5 41.6c3.5 0 5.3-1.4 5.3-4.2 0-1.1-.5-2.2-1.4-2.8-1.4-.8-2.9-1.4-4.5-1.8-1.3-.3-2.7-.8-4-1.3-1.2-.5-2.3-1.2-3.4-1.9-1.2-.9-2.2-2-2.8-3.3-.6-1.5-1-3.2-1-4.8-.1-3.4 1.4-6.7 4-8.8 2.7-2.1 6.2-3.1 10.6-3.1 4-.2 8 .6 11.7 2.2v9.3l-7.4.5v-2.9c0-.8-.3-1.3-.8-1.4-1.1-.3-2.2-.4-3.3-.4-1.1 0-2.2.3-3.1.8-.8.6-1.3 1.6-1.2 2.6-.1 1.1.5 2.2 1.4 2.8 1.5.9 3.1 1.6 4.8 2 1.4.4 2.5.8 3.3 1.1.9.4 1.9.8 2.8 1.3 1 .5 1.9 1.2 2.6 2 .7.9 1.2 1.8 1.6 2.9.5 1.3.7 2.6.7 4 .2 3.6-1.3 7-4.1 9.3-2.7 2.2-6.4 3.3-11.2 3.3-4.3.1-8.6-.7-12.6-2.3v-9.8l7.5-.5v3.2c0 .9.3 1.4.9 1.6 1.1.2 2.3.4 3.6.4z"/></g></svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 402 58"><g fill="#fff"><path d="M24.6 23c.4 0 .7-.1 1-.2l10-5.4c1-.5 1.3-1.8.8-2.8-.5-1-1.8-1.3-2.8-.8l-9.9 5.4c-1 .3-1.5 1.3-1.3 2.3.3 1 1.3 1.7 2.3 1.5h-.1zM39.8 30.9c.3 0 .7-.1 1-.3L56.7 22c.6-.3 1-1 1-1.7 0-.8-.3-1.5-.9-1.8-.7-.4-1.4-.4-2.1-.1L38.8 27c-.9.4-1.5 1.4-1.2 2.4.2 1 1.2 1.6 2.2 1.5z"/><path d="M81 19.6c-.4-1.2-1.3-2.2-2.4-2.7L61.4 7.7c-2.8-1.4-6.1-1.4-9 0l-1.4.7L39.1 2C36.3.6 33 .6 30.1 2L2.5 16.9c-1.4.6-2.3 1.9-2.5 3.4v15.2c0 .8.4 1.5 1.1 1.8l35 19c2.8 1.4 6.2 1.4 9 0L80 37.1c.7-.3 1.1-1 1.1-1.8v-15c0-.2-.1-.5-.1-.7zm-76.5.9L32 5.6c1.6-.7 3.5-.7 5.2 0L51 13l3.3-1.8c1.7-.7 3.6-.7 5.2 0l17.1 9.2.2.1-.2.1-33.4 18c-1.7.8-3.6.8-5.2 0l-33.5-18-.2-.1h.2zm38.6 32.2c-1.6.7-3.5.7-5.1 0L4.1 34.3v-9.2L36 42.3c2.8 1.4 6.2 1.4 9 0l32-17.2v9L43.1 52.7zM115.7 10.2h18.2c8.7 0 13.1 3.1 13.1 9.1 0 1.9-.5 3.7-1.6 5.2s-2.6 2.6-4.3 3.2c2.2.4 4.2 1.5 5.7 3.1s2.2 3.6 2.2 5.7c0 3.8-1.4 6.7-4.1 8.7-2.7 2-6.6 3-11.8 3h-17.5v-5.4l1.8-.2c.4 0 .8-.2 1.1-.5.2-.4.3-.9.3-1.3V16.1l-3.1-.3v-5.6zm13.1 6.4v9h2.7c3.5 0 5.3-1.6 5.3-4.8 0-2.8-1.7-4.2-5.1-4.2h-2.9zm0 15.1v9.9h3.7c3.8 0 5.8-1.8 5.8-5.2 0-3.1-1.9-4.7-5.7-4.7h-3.8zM180.7 19v22c0 .5 0 .9.3 1.3.2.3.6.4 1 .5l1.5.1v5.2h-11.7v-3.6h-.2c-1.7 3-4.5 4.4-8.5 4.4-3.1 0-5.3-.8-6.8-2.3-1.4-1.6-2.1-4-2.1-7.3V26.2c0-.4-.1-.8-.4-1.1-.2-.3-.6-.5-1-.5l-1.6-.2V19H164v18.4c-.1 1.1.1 2.2.6 3.1.6.8 1.6 1.1 2.5 1 1.1.1 2.2-.4 2.9-1.2.7-1 1.1-2.2 1-3.4V26.3c0-.5-.1-.9-.3-1.3-.3-.3-.7-.4-1.1-.4l-1.3-.2V19h12.4zM198.9 12.3V19h8.1c2.5-1.1 4.3-3.4 5.5-6.7h5.3V19h6.9l-.5 6.3h-6.4v12.3c-.1 1.1.2 2.2.7 3.2.4.5 1.3.8 2.7.8 1.2 0 2.5-.3 3.6-.8l1.4 6.3c-2.5 1.3-5.2 1.9-7.9 1.8-1.3 0-2.5-.1-3.8-.3-.9-.2-1.8-.4-2.7-.8-.7-.3-1.3-.8-1.8-1.4-.4-.5-.8-1-1.1-1.6-.3-.6-.5-1.3-.6-2-.1-.6-.2-1.3-.3-2V25.3h-9v12.3c-.1 1 .1 2.1.6 3.1.5.7 1.4 1.1 2.3 1 1.1 0 2.2-.3 3.2-.8l1.7 6.2c-2.3 1.2-4.9 1.9-7.5 1.8-3.7 0-6.4-.9-7.9-2.6-1.5-1.7-2.3-4.2-2.3-7.6V25.3h-3.9l.8-5.5c3.6-.8 6.2-3.3 7.6-7.4l5.3-.1zM242.7 18.2c2.7-.1 5.3.6 7.5 2.2 2 1.6 3 4.1 2.8 6.6 0 6.9-5.3 10.2-16 10 .1 1.3.7 2.6 1.7 3.5 1.2 1 2.7 1.4 4.2 1.4 2.6-.1 5.2-.9 7.4-2.3l2.6 6.3c-.5.4-1 .7-1.6.9-1.3.6-2.6 1-4 1.4-1.9.5-3.8.7-5.7.7-4.9 0-8.5-1.3-10.8-4-2.3-2.6-3.5-6.2-3.5-10.7-.1-4.1 1.3-8.2 4-11.4 2.7-3 6.5-4.6 11.4-4.6zm2 9.3c0-.7-.2-1.4-.7-1.9-.5-.5-1.2-.7-1.9-.6-1.4 0-2.8.6-3.6 1.8-1 1.3-1.6 2.9-1.6 4.6 5.2.2 7.7-1.2 7.7-3.9h.1zM272.5 25.5c-1.1 0-2.1.5-2.7 1.3-.7.9-1.1 2.1-1 3.3v12.5l5.1.3v5.3h-18.1V43l1.9-.2c.4.1.8-.1 1.1-.4.2-.4.3-.9.3-1.4V26.2c0-.4-.1-.8-.3-1.2-.3-.3-.6-.4-1-.4l-2-.2V19H268v4.4h.1c.7-1.4 1.7-2.7 3-3.6 1.6-1.1 3.5-1.7 5.4-1.6 1.9-.1 3.7.2 5.4.9v11.3l-7.6.4v-3.9c0-.7-.2-1.1-.5-1.2-.4-.1-.9-.2-1.3-.2zM308.7 17.5c-1.2-.3-2.3-.4-3.4-.4-6.1 0-9.2 3.9-9.2 11.8 0 3.8.8 6.8 2.3 9 1.5 2.2 3.9 3.3 7.1 3.4 1.1 0 2.1-.1 3.2-.4.6-.2 1-.8 1-1.5v-3.7l7.3.4v10.5c-3.8 1.7-7.9 2.5-12.1 2.3-6.1 0-10.8-1.6-14.1-4.9-3.3-3.3-5-8.1-5-14.5 0-3.2.5-6.4 1.6-9.4.9-2.5 2.4-4.6 4.4-6.3 1.8-1.4 3.8-2.5 6-3.3 2.2-.7 4.6-1 6.9-1 4.2-.1 8.3.7 12.2 2.4v10l-7.4.4V19c0-.9-.3-1.4-.8-1.5zM323.6 10.2h14.6l7.5 24.8h.2l7.7-24.7h14.6v5.4l-1.8.2c-.5 0-.9.2-1.2.5-.3.4-.4.9-.3 1.3l1.9 24.8 2.9.1v5.6h-15.3v-5.5l1.8-.2c.4.1.8-.1 1-.4.2-.4.3-.9.2-1.3l-.9-16.1h-.1l-7.2 23.5h-7.1l-7-23.1h-.2l-1 17.3 2.8.2v5.6h-15.3v-5.5l1.8-.2c.5 0 .9-.2 1.2-.5.2-.4.4-.9.4-1.4l2-24.6-3.2-.2v-5.6zM385.5 41.6c3.5 0 5.3-1.4 5.3-4.2 0-1.1-.5-2.2-1.4-2.8-1.4-.8-2.9-1.4-4.5-1.8-1.3-.3-2.7-.8-4-1.3-1.2-.5-2.3-1.2-3.4-1.9-1.2-.9-2.2-2-2.8-3.3-.6-1.5-1-3.2-1-4.8-.1-3.4 1.4-6.7 4-8.8 2.7-2.1 6.2-3.1 10.6-3.1 4-.2 8 .6 11.7 2.2v9.3l-7.4.5v-2.9c0-.8-.3-1.3-.8-1.4-1.1-.3-2.2-.4-3.3-.4-1.1 0-2.2.3-3.1.8-.8.6-1.3 1.6-1.2 2.6-.1 1.1.5 2.2 1.4 2.8 1.5.9 3.1 1.6 4.8 2 1.4.4 2.5.8 3.3 1.1.9.4 1.9.8 2.8 1.3 1 .5 1.9 1.2 2.6 2 .7.9 1.2 1.8 1.6 2.9.5 1.3.7 2.6.7 4 .2 3.6-1.3 7-4.1 9.3-2.7 2.2-6.4 3.3-11.2 3.3-4.3.1-8.6-.7-12.6-2.3v-9.8l7.5-.5v3.2c0 .9.3 1.4.9 1.6 1.1.2 2.3.4 3.6.4z"/></g></svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

@@ -0,0 +1,3 @@
<svg viewBox="0 0 1280 492" overflow="visible" xmlns="http://www.w3.org/2000/svg"><path d="m106.3 334.1c1.9 5.2 3.8 10.7 5.3 16.1-10.5 27.1-42.9 29.2-57.7 14.2-2.5-4.6-4.6-9.4-6.5-14.4 13.8 2.5 46.3-5 58.9-15.9zm80.4-207.2c1.8-6.5 1.8-13.4.2-20-2-7.6-6.1-14.4-12-19.7 0 0-12.8-23.7-36.2-23.7-14 .2-27.4 5.2-38 14.3-9 17.1-12.1 35.8-7.5 53.9 4.4 17.1 15 31.3 29.7 41.9 0 0 30.1 2.1 47.1-10.5 16.4-12.2 16.7-36.2 16.7-36.2zm33.2 125.1-50.1 42c-2.9-3.4-25.7-29.4-36-60l57.1-33.2c12.1 27.1 21.7 40.1 29 51.2zm-50.8 40.6c.5.6.5.6 0 0zm170.7 35.1c-8.5 9.9-34.8 26.2-48.7 26.2 1.7 4.8 3 9.8 3.8 14.8 9.6 15.9 50.3.4 46.2-25.7-.1-5.1-.5-10.2-1.3-15.3zm-141 88.1c-.1 4.6-.4 9.4-.6 14.4 6.4 20.7 47.2 23 58.7-.5 2.7-3.6 6.7-10.3 9.4-20.8-19.6 14.2-54.3 13.7-67.5 6.9zm101.3-282.8c1.2-4.2 2.3-8.5 3.2-12.8-17.3-2.7-34.7-4.4-52.1-4.9-1.3 4.2-3 8.2-5.1 12 8.1 20.1 40.9 21.9 54 5.7zm979.9 15v128c0 4.4-3.6 8-8 8h-296c-4.4 0-8-3.6-8-8v-128c0-4.4 3.6-8 8-8h296c4.4 0 8 3.6 8 8zm-162.4 107.2-53.8-46.6 52.2-39.6v-5h-22.7l-60.6 46v-46h-20.4v96h20.4v-41h14.1l47.2 41h23.7zm32.6-67h-19.9v71.8h19.9zm.4-27.5h-20.7l.9 17.3h18.9zm90.1 98.5-2.3-14.6c-5.7 1.1-11.4 1.6-17.2 1.6-16.1 0-22.4-6.4-22.4-18v-25.6h41.4v-14.5h-41.5v-19.1h-10.4l-9.6 19.2h-17.3v14.5h17.6v25.8c0 20.3 10.7 33.1 40.3 33.1 7.1 0 14.3-.8 21.4-2.4z" fill="#d99b21"/><path d="m339.8 327.7c-7.1-43.3-43.6-72.7-80.8-72.7-6.2 0-12.4.7-18.5 2-7.2-8-13.7-16.8-19.2-26 33.1-13.7 65.8-53.9 78.8-98-2.6 2.1-8.2 5-19.1 5-22.9 0-32.2-7.6-35-10.7-9.7 17.3-28.1 31.7-47 31.7-4.7 0-9.4-.5-14.1-1.4 7.7-14.4 9-26.8 4.3-32.2-.7-.8-2-.9-2.8-.2-.3.3-.5.6-.6 1-7.2 28.9-40.8 46.7-71 46.7-30.4.1-55.8-17.2-55.8-43.7 0-29.5 34.1-56.2 72.2-56.2 17.2 0 32.6 5.5 42.9 15.1.8.7 2 .7 2.8-.1.3-.3.5-.7.5-1.1 2.5-17-29.9-39.7-69.1-39.7-4.5 0-9.1.3-13.6.9l-2.4-9c-.7-2.5-.3-3.8 1.4-5.7 7.4-8.2 6.8-20.8-1.4-28.3-8.2-7.4-20.8-6.8-28.3 1.4-7.4 8.2-6.8 20.8 1.4 28.3 2.1 1.9 4.7 3.4 7.4 4.2 2.4.8 3.3 1.8 4 4.2l2.2 8.2c-37.5 11.6-65 44.3-65 80.2 0 46.9 40.2 68.2 64.3 73.3-8.9 5-16.6 11.8-22.7 20l-4.1-7.1c-.7-1-.8-2.4-.2-3.5 1.9-4.6-.3-9.9-5-11.7-4.6-1.9-9.9.3-11.7 5-1.9 4.6.3 9.9 5 11.7.7.3 1.4.5 2.2.6 1.3.1 2.4.8 2.9 1.9l6.1 10.5c-3 5-5.5 10.3-7.4 15.8l-20.5-35.1c-.8-1.1-.9-2.6-.1-3.7 2.9-6 .4-13.1-5.6-16-1.8-.9-3.7-1.3-5.7-1.2-6.6.2-11.8 5.8-11.6 12.4.2 6.1 5.1 11.1 11.2 11.5 1.3 0 2.6.8 3.1 2l25.2 43.6c-1.7 8-2.5 16.2-2.5 24.4 0 28.1 4.8 49.1 10.4 64 1.9 1.8 6.4 4 16.6 4 22.4 0 41.1-9.5 42.2-20 19.6 29.9 40.3 38.2 74.7 47 10.9 2.8 17.8 10.9 17.8 31 0 1.2 0 2.5-.1 3.8 2.9 3.3 10.4 8.2 29.2 8.2 23.9 0 34.4-10.1 38.2-15.1 1.9-7.8 2.8-15.8 2.8-23.9 0-24.7-18.1-47.9-42.8-61.2 5.5-1.2 11.2-1.8 16.8-1.8 21.4 0 39.5 8.6 48 31.9 1.6 1 4.4 2.1 9 2.1 15.2 0 35-15.6 40.1-28.3zm-126.6-74.9c-25.6 25.1-54.5 41.9-62.2 46.1-1.2.6-2.6.4-3.6-.5-16.9-17.3-26.7-40.7-29.6-48.1-.5-1.3.1-2.8 1.3-3.4 23.5-12 46.2-25.5 67.8-40.5.9-.6 2.1-.4 2.8.5.1.1.1.2.2.3 6.7 14.5 14.6 28.5 23.6 41.8.9 1.2.8 2.8-.3 3.8zm164.8 111.2c0 22.1-24 41-50 41-17.4 0-29.6-12-33-35-.1-.4-.1-.9-.2-1.3 1.3 1.2 3.5 2.3 7.2 2.3 16.2 0 39-17.3 39-28 0 0 2.2-1 8-1 15 0 29 7.7 29 22zm-121.1 65.7c9.1 12.4 14.1 25.4 14.1 33.3 0 15-9.3 29-26 29-24.4 0-47-24.5-47-54 0-2.6.1-5.2.2-7.8 2.2 3.6 8.7 8.8 27.8 8.8 16.3 0 25.8-5.1 30.9-9.3zm-145.3-79.5c2.6 9.2 4.4 18.3 4.4 25.9 0 12.7-3.4 20.4-11.2 23-2.3 14-8.1 22-19.8 22-16.5 0-32-17.2-32-48 0-2.9.3-5.8.9-8.7 3.1 2 8 3.7 16.1 3.7 25.6-.1 37.7-12.8 41.6-17.9zm122.4-259.2c0-5.1 4.3-8 10-8 2.7 0 5.4.5 7.9 1.5-.6-3.5-.9-7-.9-10.5 0-17.9 6.3-32 22-32 17.7 0 33 21.9 33 52 0 8.8-.9 17.6-2.7 26.2-2.6 1.5-8.6 3.8-20.3 3.8-25.3 0-31.9-8.7-31.9-8.7-7.5-6.3-17.1-15.9-17.1-24.3zm168.1 116.6h51.6v48.8c-14.8 3.5-30 5.3-45.2 5.3-42.2 0-64.6-19.6-64.6-49.8 0-30.7 24.2-49.5 66.8-49.5 13.7 0 27.3 1.4 40.7 4.2l-3.4 15.4c-12.1-2.3-24.3-3.4-36.6-3.4-32.4 0-46.9 13.1-46.9 33.7 0 20.7 13.9 33.3 44.6 33.3 8.6.1 17.3-.5 25.8-1.8v-21.1l-32.9-5.4zm449 37 2.3 14.6c-7.1 1.6-14.3 2.4-21.5 2.4-29.6 0-40.3-12.8-40.3-33.1v-25.8h-17.6v-14.5h17.3l9.7-19.2h10.4v19.2h41.5v14.5h-41.4v25.6c0 11.6 6.4 18 22.4 18 5.8-.1 11.6-.6 17.2-1.7zm-108.4-83.9h20.7l-.8 17.3h-18.9zm208.8 27.5v4.9l-49.5 90.9h-25.1v-4.8l28.8-22.6v-.8h-11.5l-34.3-62.7v-4.9h19.3l27 54.2 26.4-54.2zm-430.5 0h10v18.9l-38.1 9.5v43.4h-19.9v-71.8h13.4l5.3 16.1zm222.1 0h19.9v71.8h-19.9zm-32 0h19.2v4.9l-38.3 66.9h-16.6l-38.5-66.9v-4.9h19.5l27.4 50.2zm-132-1.5c-11 .1-22.1 1.3-32.9 3.6l2.3 13.8c9.4-2 19-3 28.7-3.1 19.2 0 26 6.1 26.9 16.4l-34.9.9c-19.3.5-28.5 8.7-28.5 21.4 0 12.6 10.3 21.9 30 21.9 13.2 0 25.1-4.6 34.6-10.3l4.7 8.7h14.1v-38.3c0-21.3-10.2-35-45-35zm25.2 55.3c-8.4 3.9-17.6 6.6-27.3 6.6-12.2 0-17.3-4.2-17.4-10.3 0-5.9 4.3-9.2 12.3-9.5l32.4-1.1z" fill="#001a4d"/></svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 575.8 178.3" viewBox="0 0 575.8 178.3"><path d="m148.6 78.9-24.7-13.6-20.8 12.7-.3 13-10.1-6.7-13.8 8.4c-.2-3.9-.4-8.6-.6-14.2l-14.2-9.5c3.9-2 8.4-4.3 13.5-7-.1 0 .1 1.4-2-46.5l-32-15.4-43.6 13.6 9.7 46.9 14.6 11.4-11.1 5.3 7.3 35.3 10.2 9.6-7.3 4.5 5.7 27.3 22.9 24.3c.1-.1 2.4-1.9 29.5-23.5l-.8-18.6 11.7 9.9c.2-.2 2.4-1.9 23.7-18.8l.8-13.7 8.8 6.1c.1-.2 2.1-1.7 19.3-15.3z"></path><path d="m128.1 93.5 20.5-14.6-24.7-13.6-20.8 12.7z" fill="#141414"></path><path d="m125.8 119.5 2.3-26-25-15.5-.5 25.4z" fill="#004b16"></path><path d="m92.6 146-.3-27-25.1-19.1 1.9 26.4z" fill="#004b16"></path><path d="m92.3 119 25.5-18.2-25.1-16.5-25.5 15.6z" fill="#141414"></path><path d="m52.1 178.2-4.1-27.6-24.6-24.1 5.7 27.4z" fill="#004b16"></path><path d="m48 150.6 32.4-23.1-25.1-20.4-31.9 19.4z" fill="#141414"></path><path d="m45.9 136.3-5.3-36.4-27.4-22.8 7.3 35.4z" fill="#004b16"></path><path d="m40.6 99.9 37.7-21.4-28.2-18.9-36.9 17.5z" fill="#141414"></path><path d="m38 82.5-7.3-49.9-30.7-19 9.7 46.9z" fill="#004b16"></path><path d="m30.7 32.6 44.9-17.2-32-15.4-43.6 13.6z" fill="#141414"></path><g fill="#1cb35c"><path d="m145.2 104.2c-19 15.1-19.4 15.4-19.3 15.4 2.4-27.2 2.2-26 2.3-26 21.8-15.5 20.4-14.6 20.5-14.6z"></path><path d="m116.2 127.2c-23.5 18.7-23.8 18.8-23.7 18.8-.2-28.2-.3-27-.2-27 27.1-19.4 25.4-18.2 25.5-18.2z"></path><path d="m81.6 154.7c-29.4 23.3-29.6 23.5-29.5 23.5-4.2-28.4-4.1-27.5-4-27.5 34.5-24.6 32.3-23.1 32.4-23.1z"></path><path d="m75.6 15.4c2.1 47.9 1.9 46.5 2 46.5-38.8 20.2-39.7 20.6-39.6 20.6-7.5-51-7.4-49.9-7.3-49.9z"></path><path d="m78.3 78.5c1.6 36.3 1.4 35.1 1.5 35.1-33.6 22.6-34 22.8-33.9 22.8-5.5-37.4-5.4-36.4-5.3-36.4z"></path></g><path d="m191.4 33.6 16.8-4c0 81.8-3.1 93.5 8 97.1-2.6 4.9-7.1 7.4-13.3 7.4-15.3 0-11.5-11.3-11.5-100.5z"></path><path d="m233.7 132.7v-58.4h-9.2v-13.8h26.3v72.2zm8.7-100.1c12.9 0 12.9 19.5 0 19.5s-12.9-19.5 0-19.5z"></path><path d="m316.8 132.7c0-43.6 1.1-49.6-3.5-55.2-5.8-6.9-20-5-26.1 3v52.2h-16.8v-72.2h12.1l3.1 6.7c9.1-10.8 30.4-10.9 40.6-.4 9.7 10 7.4 20.5 7.4 65.8z"></path><path d="m347.2 96.4c0-49.2 69.4-51.1 69.4 0-.1 50.7-69.4 50.8-69.4 0zm17.5 0c0 28.8 22.2 27.7 29.7 17.7 7-9.4 8.8-41.2-12.5-41.2-12.3 0-17.2 11.3-17.2 23.5z"></path><path d="m476.4 132.7c0-7.4 1.8-3.4-7.1-.4-10.2 3.5-25.1 2-34.1-7.9-11.1-12.3-12.6-39.5 1.3-54.6 11.4-12.3 28.5-13.1 39.9-7.4v-28.9l16.9-4v103.1zm0-54.9c-8.9-7.1-20.9-4.8-26.8 1.9-8.1 9.1-11.2 40.2 16.2 40.2 2.9 0 9-2.2 10.6-4.4z"></path><path d="m574.6 101.8h-51.6c1.2 22.3 29 21.4 38.1 12.2l6.5 12.9c-14 11.3-62.3 15-62.3-29.5.1-54.1 81.3-49 69.3 4.4zm-51-12.7h35.5c-1.2-10.6-7-15.8-17.5-15.8-9.7 0-15.6 5.2-18 15.8z"></path></svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.0 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.0 KiB

@@ -1,12 +1,10 @@
require("typeface-muli")
require('typeface-muli');
import styles from './css/main.css';
import './js/clipboardjs.js'
import './js/codeblocks.js'
import './js/docsearch.js'
import './js/hljs.js'
import './js/lazysizes.js'
import './js/menutoggle.js'
import './js/scrolldir.js'
import './js/smoothscroll.js'
import './js/tabs.js'
import './js/nojs.js'
import './js/clipboardjs.js';
import './js/docsearch.js';
import './js/lazysizes.js';
import './js/menutoggle.js';
import './js/scrolldir.js';
import './js/smoothscroll.js';
import './js/tabs.js';
import './js/nojs.js';
@@ -1,10 +0,0 @@
let article = document.getElementById('prose')
if (article) {
let codeBlocks = article.getElementsByTagName('code')
for (let [key, codeBlock] of Object.entries(codeBlocks)){
var widthDif = codeBlock.scrollWidth - codeBlock.clientWidth
if (widthDif > 0)
codeBlock.parentNode.classList.add('expand')
}
}
@@ -1,7 +1,8 @@
var docsearch = require('docsearch.js/dist/cdn/docsearch.js');
docsearch({
apiKey: '167e7998590aebda7f9fedcf86bc4a55',
indexName: 'hugodocs',
inputSelector: '#search-input',
debug: true // Set debug to true if you want to inspect the dropdown
appId: 'D1BPLZHGYQ',
apiKey: '6df94e1e5d55d258c56f60d974d10314',
indexName: 'hugodocs',
inputSelector: '#search-input',
debug: true, // Set debug to true if you want to inspect the dropdown
});
@@ -1,19 +0,0 @@
var hljs = require('highlight.js/lib/highlight.js');
hljs.registerLanguage('bash', require('highlight.js/lib/languages/bash'));
hljs.registerLanguage('css', require('highlight.js/lib/languages/css'));
hljs.registerLanguage('markdown', require('highlight.js/lib/languages/markdown'));
hljs.registerLanguage('diff', require('highlight.js/lib/languages/diff'));
// hljs.registerLanguage('go', require('highlight.js/lib/languages/go'));
hljs.registerLanguage('javascript', require('highlight.js/lib/languages/javascript'));
hljs.registerLanguage('json', require('highlight.js/lib/languages/json'));
hljs.registerLanguage('yaml', require('highlight.js/lib/languages/yaml'));
hljs.registerLanguage('xml', require('highlight.js/lib/languages/xml'));
hljs.registerLanguage('html', require('highlight.js/lib/languages/handlebars'));
hljs.registerLanguage("go", function(e) {
var t = { keyword: "code output note warning break default func interface select case map struct chan else goto package switch const fallthrough if range end type continue for import return var go defer bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 uint16 uint32 uint64 int uint uintptr rune id autoplay Get", literal: "file download copy true false iota nil Pages with", built_in: "append cap close complex highlight copy imag len make new panic print println real recover delete Site Data tweet youtube ref relref vimeo instagram gist figure innershortcode" };
return { aliases: ["golang","hugo"], k: t, i: "</", c: [e.CLCM, e.CBCM, { cN: "string", v: [e.QSM, { b: "'", e: "[^\\\\]'" }, { b: "`", e: "`" }] }, { cN: "number", v: [{ b: e.CNR + "[dflsi]", r: 1 }, e.CNM] }, { b: /:=/ }, { cN: "function", bK: "func", e: /\s*\{/, eE: !0, c: [e.TM, { cN: "params", b: /\(/, e: /\)/, k: t, i: /["']/ }] }] }
});
hljs.initHighlightingOnLoad();
@@ -4083,7 +4083,7 @@ img { max-width: 100%; }
max-width: 30em;
}
.measure-wide-l {
max-width: 40em;
max-width: 34em;
}
.measure-narrow-l {
max-width: 20em;
@@ -4768,11 +4768,6 @@ h6:hover .header-link {
padding: 0;
margin: 0;
}
pre, .pre {
overflow-x: auto;
overflow-y: hidden;
overflow: scroll;
}
code {
padding: 0.2em;
margin: 0;
@@ -4780,7 +4775,7 @@ code {
background-color: rgba(27, 31, 35, .05);
border-radius: 3px;
}
pre code {
pre code {
display: block;
padding: 1.5em 1.5em;
font-size: .875rem;
@@ -4814,7 +4809,7 @@ pre {
content: "Copied"
}
@media screen and (min-width: 60em) {
.full-width, pre.expand:hover
.full-width
{
/*width: 100vw;
position: relative;
@@ -4992,7 +4987,7 @@ dd {
font-size: calc(0.70833rem + 0.83333vw);
}
}
/* From http://cssfontstack.com */
/* From https://www.cssfontstack.com */
code, .code, pre code, .highlight pre {
font-family: 'inconsolata',Menlo,Monaco,'Courier New',monospace;
}
File diff suppressed because one or more lines are too long
@@ -1,19 +1,24 @@
[[banners]]
name = "Linode"
link = "https://www.linode.com/"
logo = "/images/sponsors/linode-logo_standard_light_medium.png"
copy = ""
name = "Linode"
link = "https://www.linode.com/"
logo = "images/sponsors/linode-logo.svg"
utm_campaign = "hugosponsor"
[[banners]]
name = "eSolia"
link = "https://esolia.com/post/why-did-esolia-choose-hugo/"
logo = "/images/sponsors/esolia-logo.svg"
copy = ""
name = "ButterCMS"
link = "https://buttercms.com/hugo-cms/"
logo = "images/sponsors/butter-light.svg"
utm_campaign = "sponsorship"
bgcolor = "#131A3E"
[[banners]]
name = "Brave"
link = "https://brave.com/"
logo = "/images/sponsors/brave-logo.svg"
bgcolor = "#5A2FA1"
copy = ""
name = "Gravity Kit"
link = "https://www.gravitykit.com/"
logo = "images/sponsors/graitykit-dark.svg"
query_params = "ref=532&campaign=hugo&"
utm_campaign = "hugosponsor"
bgcolor = "#e0ecf3"
#hugohome
#hugofooter
#hugogithub
@@ -1,83 +1,119 @@
<!DOCTYPE html>
<html class="no-js" lang="{{ with $.Site.LanguageCode }}{{ . }}{{ else }}en-us{{ end }}">
<head>
<meta charset="utf-8">
{{/* https://www.zachleat.com/web/preload/ */}}
<link rel="preload" href="{{ "fonts/muli-latin-200.woff2" | absURL }}" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="{{ "fonts/muli-latin-400.woff2" | absURL }}" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="{{ "fonts/muli-latin-800.woff2" | absURL }}" as="font" type="font/woff2" crossorigin>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
{{/* NOTE: the Site's title, and if there is a page title, that is set too */}}
<title>{{ block "title" . }}{{ with .Title }}{{ . }} | {{ end }}{{ .Site.Title }}{{ end }}</title>
<meta name="viewport" content="width=device-width,minimum-scale=1">
{{ hugo.Generator }}
{{ if eq (getenv "HUGO_ENV") "production" | or (eq .Site.Params.env "production") }}
<meta name="robots" content="index, follow">
<html
class="no-js"
lang="{{ with $.Site.LanguageCode }}
{{ . }}
{{ else }}
<meta name="robots" content="noindex, nofollow">
en-us
{{ end }}
">
<head>
<meta charset="utf-8" />
{{/* https://www.zachleat.com/web/preload/ */}}
<link
rel="preload"
href="{{ "fonts/muli-latin-200.woff2" | absURL }}"
as="font"
type="font/woff2"
crossorigin />
<link
rel="preload"
href="{{ "fonts/muli-latin-400.woff2" | absURL }}"
as="font"
type="font/woff2"
crossorigin />
<link
rel="preload"
href="{{ "fonts/muli-latin-800.woff2" | absURL }}"
as="font"
type="font/woff2"
crossorigin />
{{ range .AlternativeOutputFormats -}}
<link rel="{{ .Rel }}" type="{{ .MediaType.Type }}" href="{{ .Permalink | safeURL }}">
{{ end -}}
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
{{/* NOTE: the Site's title, and if there is a page title, that is set too */}}
<title>
{{ block "title" . }}
{{ with .Title }}{{ . }} | {{ end }}{{ .Site.Title }}
{{ end }}
{{ $isDev := eq hugo.Environment "development" }}
{{ $stylesheet := resources.Get "output/css/app.css" }}
{{ if not $isDev }}
{{ $stylesheet = $stylesheet | minify | fingerprint }}
{{ end }}
{{ with $stylesheet }}
{{ if $isDev }}
<link rel="stylesheet" href="{{ .RelPermalink }}" crossorigin="anonymous">
{{ else }}
<link rel="stylesheet" href="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous">
{{ end }}
{{ $.Scratch.Set "stylesheet" . }}
{{end}}
</title>
<meta name="description"
content="{{ with .Description }}{{ . }}{{ else }}{{ with .Site.Params.description }}{{ . }}{{ end }}{{ end }}">
<meta name="viewport" content="width=device-width,minimum-scale=1" />
{{ hugo.Generator }}
{{ block "scripts" . }}
{{- partial "site-scripts.html" . -}}
{{ end }}
{{ partial "site-manifest.html" . }}
{{- partial "head-additions.html" . -}}
{{- partial "opengraph/opengraph.html" . -}}
{{- template "_internal/schema.html" . -}}
{{- partial "opengraph/twitter_cards.html" . -}}
{{ if hugo.IsProduction }}
<meta name="robots" content="index, follow" />
{{ else }}
<meta name="robots" content="noindex, nofollow" />
{{ end }}
{{ if eq (getenv "HUGO_ENV") "production" | or (eq .Site.Params.env "production") }}
{{ partial "gtag" . }}
{{ end }}
{{ range .AlternativeOutputFormats -}}
<link
rel="{{ .Rel }}"
type="{{ .MediaType.Type }}"
href="{{ .Permalink | safeURL }}" />
{{ end -}}
</head>
<body class="ma0 sans-serif bg-primary-color-light{{ with getenv "HUGO_ENV" }} {{ . }}{{ end }}">
{{ partial "hooks/after-body-start" . }}
{{ block "nav" . }}{{ partial "site-nav.html" . }}{{ end }}
{{ block "header" . }}{{ end }}
<main role="main" class="content-with-sidebar min-vh-100 pb7 pb0-ns">
{{ block "main" . }}{{ end }}
</main>
{{ block "footer" . }}{{ partialCached "site-footer.html" . }}{{ end }}
{{ partial "hooks/before-body-end" . }}
{{ if .Page.Store.Get "hasMermaid" }}
<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
<script>
mermaid.initialize({ startOnLoad: true });
</script>
{{ end }}
{{ $isDev := eq hugo.Environment "development" }}
{{ $stylesheet := resources.Get "output/css/app.css" }}
{{ if not $isDev }}
{{ $stylesheet = $stylesheet | minify | fingerprint }}
{{ end }}
{{ with $stylesheet }}
{{ if $isDev }}
<link
rel="stylesheet"
href="{{ .RelPermalink }}"
crossorigin="anonymous" />
{{ else }}
<link
rel="stylesheet"
href="{{ .RelPermalink }}"
integrity="{{ .Data.Integrity }}"
crossorigin="anonymous" />
{{ end }}
{{ $.Scratch.Set "stylesheet" . }}
{{ end }}
</body>
<meta
name="description"
content="{{ with .Description }}
{{ . }}
{{ else }}
{{ with .Site.Params.description }}{{ . }}{{ end }}
{{ end }}
" />
{{ block "scripts" . }}
{{- partial "site-scripts.html" . -}}
{{ end }}
{{ partial "site-manifest.html" . }}
{{- partial "head-additions.html" . -}}
{{- partial "opengraph/opengraph.html" . -}}
{{- template "_internal/schema.html" . -}}
{{- partial "opengraph/twitter_cards.html" . -}}
{{ if hugo.IsProduction }}
{{ partial "gtag" . }}
{{ end }}
</head>
<body
class="ma0 sans-serif bg-primary-color-light{{ with getenv "HUGO_ENV" }}
{{ . }}
{{ end }}">
{{ partial "hooks/after-body-start" . }}
{{ block "nav" . }}{{ partial "site-nav.html" . }}{{ end }}
{{ block "header" . }}{{ end }}
<main role="main" class="content-with-sidebar min-vh-100 pb7 pb0-ns">
{{ block "main" . }}{{ end }}
</main>
{{ block "footer" . }}{{ partialCached "site-footer.html" . }}{{ end }}
{{ partial "hooks/before-body-end" . }}
</body>
</html>
@@ -20,13 +20,13 @@
</div>
<p class="f6 mid-gray">Windows</p>
<div class="code f6 bg-black light-green lh-copy pv3 ph3 br2 w-100 w-50-ns center tl">
$ choco install hugo -confirm <br />
$ choco install hugo-extended<br />
</div>
<p class="f6 mid-gray">Linux</p>
<div class="code f6 bg-black light-green lh-copy pv3 ph3 br2 w-100 w-50-ns center tl">
$ snap install hugo <br />
$ sudo snap install hugo<br />
</div>
<p class="f5 nested-links"><a href="{{ "getting-started/installing/" | absURL }}" class="link">See the Getting Started Guide for other methods. {{ partial "svg/link-ext.svg" (dict "fill" "#333" "size" "14") }}</a></p>
</div>
@@ -1,38 +1,38 @@
{{$classes_box := "ba b--dark-gray bg-light-gray br3 flex flex-column flex-wrap items-center justify-center ph3 pv4 mb4 w-100 w-30-l "}}
{{$gtag := .gtag | default "unknown" }}
{{ $classes_box := "ba b--dark-gray bg-light-gray br3 flex flex-column flex-wrap items-center justify-center ph3 pv4 mb4 w-100 w-30-l " }}
{{ $gtag := .gtag | default "unknown" }}
{{ $classes_box := "ba b--dark-gray bg-light-gray br3 flex flex-column flex-wrap items-center justify-center ph3 pv4 mb4 w-100 w-30-l " }}
{{ $gtag := .gtag | default "unknown" }}
{{ $isFooter := (eq $gtag "footer") }}
{{ $utmSource := cond $isFooter "hugofooter" "hugohome" }}
{{ with .cx.Site.Data.sponsors }}
<section class="{{ $.classes_section | default "bg-primary-color-dark b--dark-gray bb bt ph5 pv4 w-100"}}">
<div class="center mw9"> 
<section
class="{{ $.classes_section | default "bg-primary-color-dark b--dark-gray bb bt ph5 pv4 w-100" }}">
<div class="center mw9">
<h3 class="b f3 mv0 light-gray">Hugo Sponsors</h3>
<div class="flex-ns flex-wrap center justify-between pt3">
{{ range .banners }}
{{ $banner := . }}
{{if .logo}}
<div class="{{$classes_box}} o-100"{{ with .bgcolor }} style="background-color: {{ . }};"{{ end}}>
{{with .link -}}
{{ $url := printf "%s?%s" . (querify "utm_source" "homepage" "utm_medium" "banner" "utm_campaign" "hugosponsor") | safeURL }}
{{ if eq (getenv "HUGO_ENV") "production" | or (eq $.cx.Site.Params.env "production") }}
{{ $gtagID := printf "Sponsor %s %s" $banner.name $gtag | title }}
<a href="{{ $url }}" onclick="trackOutboundLink({{ printf "'%s', '%s'" $gtagID $url | safeJS }});" class="grow">
{{ else }}
<a href="{{ $url }}" class="grow">
{{ end }}
{{- end}}
<img src="{{ .logo }}" alt="Logo for {{ .name }}" class="img h3 center" />
{{with .link}}</a>{{end}}
{{with .copy}}
<p class="center lh-copy gray mv1 tc {{$.classes_copy | default "f5 w-70-ns"}}">
{{- . -}}
</p>
{{end}}
</div>
{{else}}
<div class="{{$classes_box}} o-10">
<p class="b black tc">Your Logo Here</p>
</div>
{{end}}
{{end}}
<div
class="{{ $classes_box }} o-100"
style="background-color: {{ .bgcolor }};">
{{ $query_params := .query_params | default "" }}
{{ $url := printf "%s?%s%s" .link $query_params (querify "utm_source" $utmSource "utm_medium" "banner" "utm_campaign" (.utm_campaign | default "hugosponsor")) | safeURL }}
{{ $logo := resources.Get .logo }}
{{ if hugo.IsProduction }}
{{ $gtagID := printf "Sponsor %s %s" .name $gtag | title }}
<a
href="{{ $url }}"
onclick="trackOutboundLink({{ printf "'%s', '%s'" $gtagID $url | safeJS }});"
class="w-100 grow pa3">
{{ $logo.Content | safeHTML }}
</a>
{{ else }}
<a href="{{ $url }}" class="w-100 grow pa3" style="">
{{ $logo.Content | safeHTML }}
</a>
{{ end }}
</div>
{{ end }}
</div>
</div>
</section>
{{end}}
{{ end }}
@@ -41,7 +41,7 @@
<img src="/images/gopher-side_color.svg" alt="" class="absolute-l bottom-0 dn db-l h4 right-0 z-999"/>
<div class="bg-primary-color-dark bottom-0 left-0 right-0 dn-l fixed pb3 ph3 pt3 w-100">
<div class="bg-primary-color-dark bottom-0 left-0 right-0 dn-l fixed pb3 ph3 pt3 w-100 z-2">
{{- partial "nav-mobile.html" . -}}
</div>
+6 -15
View File
@@ -3,14 +3,7 @@
"version": "1.1.0",
"description": "Default Theme for Hugo Sites",
"main": "index.js",
"homepage": "https://gohugo.io/",
"bugs": {
"url": "https://github.com/gohugoio/gohugoioTheme/issues"
},
"repository": {
"type": "git",
"url": "git+https://github.com/gohugoio/gohugoioTheme.git"
},
"repository": "",
"author": "budparr",
"license": "MIT",
"scripts": {
@@ -21,14 +14,13 @@
"devDependencies": {
"clean-webpack-plugin": "^1.0.0",
"clipboard": "^2.0.4",
"css-loader": "^4.3.0",
"css-loader": "^1.0.1",
"docsearch.js": "^2.6.1",
"file-loader": "^2.0.0",
"glob-all": "^3.1.0",
"highlight.js": "^9.13.1",
"lazysizes": "^5.2.1",
"lazysizes": "^5.3.2",
"mini-css-extract-plugin": "^0.4.4",
"postcss": "^7.0.36",
"postcss": "^7.0.5",
"postcss-cssnext": "^3.1.0",
"postcss-import": "^12.0.1",
"postcss-loader": "^3.0.0",
@@ -36,8 +28,7 @@
"scrolldir": "^1.4.0",
"tachyons": "^4.7.0",
"typeface-muli": "0.0.54",
"webpack": "^4.44.1",
"webpack": "^4.25.1",
"webpack-command": "^0.4.2"
},
"dependencies": {}
}
}
@@ -0,0 +1,11 @@
<svg width="521" height="594" viewBox="0 0 521 594" fill="none" xmlns="http://www.w3.org/2000/svg">
<mask id="mask0_4_3" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="521" height="594">
<path d="M0 0H520.787V593.521H0V0Z" fill="white"/>
</mask>
<g mask="url(#mask0_4_3)">
<path d="M509.245 139.75C515.594 143.416 520.792 152.416 520.792 159.75V433.776C520.792 441.109 515.594 450.109 509.245 453.776L271.932 590.771C265.583 594.437 255.188 594.437 248.839 590.771L11.5469 453.776C5.19792 450.109 0 441.109 0 433.776V159.75C0 152.416 5.19792 143.416 11.5469 139.75L248.839 2.75488C255.188 -0.911784 265.583 -0.911784 271.932 2.75488" fill="#CB007C"/>
</g>
<path d="M460.031 168.161C466.385 171.828 471.583 180.828 471.583 188.161V405.365C471.583 412.698 466.385 421.698 460.031 425.365L271.932 533.948C265.583 537.615 255.193 537.615 248.839 533.948L60.7604 425.365C54.4062 421.698 49.2083 412.698 49.2083 405.365V188.161C49.2083 180.828 54.4062 171.828 60.7604 168.161L248.839 59.5781C255.193 55.9115 265.583 55.9115 271.932 59.5781" fill="#FF41B4"/>
<path d="M195.112 264.739H322.591V149.114H367.195V444.656H322.591V306.656H195.112V444.656H150.529V149.114H195.112V264.739Z" fill="white"/>
<path d="M195.052 149.365H150.495V444.656H195.052V306.766H322.427V444.656H366.99V149.365H322.427V264.88H195.052V149.365Z" stroke="white" stroke-width="14.6667" stroke-miterlimit="10"/>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

@@ -0,0 +1,62 @@
<svg width="531" height="600" viewBox="0 0 531 600" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_4_14)">
<mask id="mask0_4_14" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="532" height="600">
<path d="M0 0H531.001V600H0V0Z" fill="white"/>
</mask>
<g mask="url(#mask0_4_14)">
<path d="M512.069 135.868C522.479 141.877 531.001 156.626 531.001 168.644V431.374C531.001 443.391 522.479 458.141 512.069 464.15L284.425 595.493C274.015 601.502 256.969 601.502 246.56 595.493L18.9326 464.15C8.52267 458.141 0 443.391 0 431.374V168.644C0 156.626 8.52267 141.877 18.9326 135.868L246.56 4.51551C256.969 -1.49345 274.015 -1.49345 284.425 4.51551" fill="#FF41B4"/>
</g>
<path d="M475.997 159.588C486.407 165.597 494.93 180.346 494.93 192.364V413.466C494.93 425.484 486.407 440.233 475.997 446.242L284.425 556.776C274.015 562.785 256.969 562.785 246.56 556.776L55.0045 446.242C44.5945 440.233 36.0719 425.484 36.0719 413.466V192.364C36.0719 180.346 44.5945 165.597 55.0045 159.588L246.56 49.0536C256.969 43.0446 274.015 43.0446 284.425 49.0536" fill="#CB007C"/>
<path d="M81.8834 291.29H124.548V252.642H139.441V351.482H124.548V305.322H81.8834V351.482H66.9559V252.642H81.8834V291.29Z" fill="white"/>
<path d="M178.031 252.642V312.185C178.031 320.678 179.415 326.883 182.199 330.792C186.341 336.485 192.173 339.328 199.688 339.328C207.22 339.328 213.061 336.485 217.212 330.792C219.987 326.994 221.379 320.789 221.379 312.185V252.642H236.307V316.282C236.307 326.687 233.053 335.256 226.571 341.991C219.261 349.528 210.295 353.292 199.688 353.292C189.048 353.292 180.098 349.528 172.839 341.991C166.349 335.256 163.104 326.687 163.104 316.282V252.642H178.031Z" fill="white"/>
<path d="M81.8791 252.641H66.9516V351.481H81.8791V305.33H124.535V351.481H139.454V252.641H124.535V291.307H81.8791V252.641Z" stroke="white" stroke-width="4" stroke-miterlimit="10"/>
<path d="M163.152 252.64V316.272C163.152 326.686 166.397 335.264 172.887 342.007C180.146 349.518 189.087 353.273 199.728 353.273C210.351 353.273 219.318 349.518 226.619 342.007C233.118 335.264 236.355 326.686 236.355 316.272V252.64H221.436V312.133C221.436 320.745 220.044 326.95 217.277 330.748C213.126 336.424 207.285 339.258 199.728 339.258C192.204 339.258 186.38 336.424 182.238 330.748C179.463 326.822 178.071 320.617 178.071 312.133V252.64H163.152Z" stroke="white" stroke-width="4" stroke-miterlimit="10"/>
<path d="M310.923 299.997H351.777V303.275C351.777 310.701 350.898 317.281 349.147 323.009C347.439 328.292 344.553 333.243 340.505 337.86C331.325 348.171 319.642 353.327 305.458 353.327C291.632 353.327 279.787 348.342 269.932 338.373C260.069 328.343 255.142 316.3 255.142 302.25C255.142 287.919 260.146 275.748 270.172 265.753C280.206 255.741 292.426 250.73 306.824 250.73C314.536 250.73 321.752 252.31 328.447 255.442C334.86 258.609 341.171 263.73 347.371 270.806L336.713 281.014C328.601 270.208 318.72 264.797 307.063 264.797C296.611 264.797 287.84 268.407 280.761 275.62C273.656 282.704 270.103 291.581 270.103 302.25C270.103 313.27 274.049 322.343 281.956 329.461C289.352 336.085 297.362 339.397 305.97 339.397C313.323 339.397 319.924 336.921 325.782 331.954C331.632 326.978 334.903 320.994 335.586 314.029H310.923V299.997Z" fill="white"/>
<path d="M310.915 314.036H335.569C334.886 320.975 331.624 326.933 325.774 331.918C319.924 336.851 313.323 339.318 305.979 339.318C297.354 339.318 289.352 336.015 281.965 329.4C274.058 322.273 270.112 313.2 270.112 302.189C270.112 291.52 273.656 282.643 280.744 275.558C287.832 268.346 296.611 264.744 307.072 264.744C318.72 264.744 328.609 270.147 336.722 280.936L347.354 270.761C341.163 263.694 334.869 258.581 328.456 255.44C321.761 252.299 314.544 250.72 306.816 250.72C292.427 250.72 280.215 255.739 270.18 265.768C260.138 275.755 255.125 287.918 255.125 302.257C255.125 316.298 260.052 328.333 269.924 338.362C279.788 348.349 291.632 353.342 305.467 353.342C319.643 353.342 331.317 348.178 340.505 337.85C344.562 333.241 347.44 328.29 349.147 322.998C350.898 317.28 351.769 310.707 351.769 303.281V300.012H310.915V314.036Z" stroke="white" stroke-width="4" stroke-miterlimit="10"/>
<path d="M368.248 301.602C368.248 287.698 373.346 275.748 383.551 265.753C393.705 255.792 405.908 250.799 420.169 250.799C434.26 250.799 446.344 255.835 456.412 265.89C466.54 275.978 471.613 288.073 471.613 302.182C471.613 316.411 466.532 328.48 456.378 338.373C446.147 348.325 433.824 353.293 419.418 353.293C406.642 353.293 395.174 348.871 385.02 340.011C373.833 330.255 368.248 317.444 368.248 301.602ZM383.278 301.807C383.278 312.732 386.95 321.72 394.311 328.745C401.595 335.803 410.024 339.329 419.589 339.329C429.965 339.329 438.726 335.744 445.857 328.574C452.979 321.319 456.549 312.476 456.549 302.046C456.549 291.513 453.022 282.679 445.994 275.552C438.974 268.39 430.306 264.797 419.999 264.797C409.7 264.797 400.998 268.39 393.901 275.552C386.813 282.636 383.278 291.385 383.278 301.807Z" fill="white"/>
<mask id="mask1_4_14" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="275" y="157" width="257" height="291">
<path d="M275.458 157.325H531.001V447.94H275.458V157.325Z" fill="white"/>
</mask>
<g mask="url(#mask1_4_14)">
<path d="M385.014 340.026C395.177 348.861 406.637 353.273 419.404 353.273C433.836 353.273 446.15 348.306 456.364 338.362C466.526 328.461 471.607 316.4 471.607 302.197C471.607 288.063 466.543 275.968 456.424 265.896C446.347 255.824 434.263 250.788 420.173 250.788C405.911 250.788 393.699 255.781 383.537 265.768C373.332 275.754 368.234 287.704 368.234 301.617C368.234 317.45 373.827 330.253 385.014 340.026ZM393.913 275.55C401.001 268.388 409.694 264.803 419.985 264.803C430.318 264.803 438.986 268.388 445.988 275.55C453.033 282.668 456.552 291.494 456.552 302.027C456.552 312.431 452.982 321.265 445.86 328.512C438.729 335.673 429.976 339.258 419.6 339.258C410.036 339.258 401.599 335.742 394.297 328.7C386.953 321.667 383.281 312.687 383.281 301.779C383.281 291.374 386.825 282.625 393.913 275.55Z" stroke="white" stroke-width="4" stroke-miterlimit="10"/>
</g>
<path d="M457.688 389.839C457.688 389.839 451.684 389.959 441.172 390.155C430.659 390.317 415.646 390.727 397.628 390.889C379.617 391.043 358.592 391.393 336.073 391.453C313.545 391.529 289.523 391.615 265.501 391.7C241.478 391.615 217.456 391.529 194.928 391.453C172.409 391.384 151.384 391.043 133.365 390.889C115.355 390.719 100.333 390.317 89.8296 390.155C79.3171 389.959 73.3052 389.839 73.3052 389.839V389.626H457.688" fill="white"/>
<path d="M73.3137 213.66C73.3137 213.66 79.3172 213.54 89.8296 213.344C100.342 213.19 115.355 212.772 133.374 212.61C151.393 212.456 172.409 212.106 194.928 212.046C217.456 211.97 241.478 211.884 265.501 211.799C289.523 211.884 313.545 211.97 336.065 212.046C358.592 212.115 379.609 212.465 397.628 212.618C415.646 212.78 430.659 213.19 441.172 213.344C451.684 213.54 457.688 213.66 457.688 213.66V213.873H73.3137" fill="white"/>
<path d="M112.991 432.463H106.467L104.486 437.345H103.529L109.746 422.016L115.929 437.345H114.972L112.991 432.463ZM112.65 431.575L109.746 424.44L106.843 431.575H112.65Z" fill="white"/>
<path d="M129.721 423.415H124.666V428.775H129.585V429.663H124.666V437.345H123.744V422.527H129.721V423.415Z" fill="white"/>
<path d="M135.895 428.878C134.888 428.878 134.042 429.271 133.368 430.039C132.702 430.816 132.377 431.72 132.377 432.736C132.377 433.829 132.702 434.776 133.368 435.57C134.042 436.347 134.913 436.731 135.964 436.731C137.074 436.731 137.953 436.347 138.594 435.57C139.226 434.776 139.55 433.794 139.55 432.634C139.55 431.567 139.2 430.679 138.526 429.971C137.86 429.245 136.98 428.878 135.895 428.878ZM140.37 428.263V437.345H139.482V435.706H139.448C139.123 436.278 138.637 436.739 137.979 437.072C137.339 437.388 136.673 437.55 135.998 437.55C134.632 437.55 133.53 437.098 132.719 436.184C131.899 435.254 131.489 434.102 131.489 432.736C131.489 431.396 131.899 430.278 132.719 429.39C133.53 428.511 134.614 428.059 135.964 428.059C136.664 428.059 137.33 428.221 137.945 428.537C138.551 428.835 139.055 429.271 139.448 429.834H139.482V428.263H140.37Z" fill="white"/>
<path d="M148.007 429.527L147.221 429.902C146.897 429.228 146.359 428.878 145.616 428.878C145.223 428.878 144.873 429.032 144.557 429.322C144.232 429.595 144.079 429.928 144.079 430.312C144.079 430.705 144.224 431.02 144.523 431.268C144.813 431.524 145.18 431.729 145.616 431.882C146.043 432.019 146.478 432.181 146.914 432.36C147.366 432.548 147.742 432.83 148.041 433.214C148.357 433.607 148.519 434.11 148.519 434.716C148.519 435.536 148.229 436.227 147.665 436.765C147.093 437.294 146.393 437.55 145.582 437.55C144.804 437.55 144.13 437.337 143.566 436.901C142.994 436.475 142.618 435.877 142.439 435.126L143.293 434.853C143.677 436.108 144.437 436.731 145.582 436.731C146.12 436.731 146.606 436.543 147.016 436.15C147.418 435.749 147.631 435.254 147.631 434.682C147.631 434.187 147.469 433.811 147.153 433.555C146.854 433.308 146.418 433.077 145.855 432.873C145.419 432.719 145.086 432.591 144.864 432.497C144.659 432.412 144.395 432.258 144.079 432.053C143.78 431.857 143.549 431.609 143.395 431.336C143.259 431.072 143.19 430.747 143.19 430.38C143.19 429.706 143.43 429.143 143.908 428.707C144.403 428.281 145.001 428.059 145.684 428.059C146.137 428.059 146.581 428.204 147.016 428.468C147.469 428.741 147.802 429.1 148.007 429.527Z" fill="white"/>
<path d="M151.764 429.083V437.346H150.876V429.083H149.886V428.264H150.876V425.021H151.764V428.264H153.37V429.083H151.764Z" fill="white"/>
<path d="M165.699 423.143C165.17 423.143 164.726 423.356 164.367 423.757C164 424.167 163.821 424.653 163.821 425.191C163.821 425.447 163.863 425.712 163.957 425.976C164.043 426.232 164.145 426.446 164.265 426.625C164.376 426.787 164.521 427.018 164.709 427.308C164.888 427.581 165.025 427.794 165.119 427.922C165.247 427.811 165.469 427.649 165.768 427.444C166.058 427.248 166.28 427.086 166.417 426.966C166.57 426.838 166.758 426.659 166.963 426.454C167.16 426.232 167.305 426.002 167.373 425.771C167.458 425.524 167.51 425.259 167.51 424.986C167.51 424.466 167.322 424.03 166.963 423.689C166.622 423.33 166.195 423.143 165.699 423.143ZM171.131 437.346L169.252 434.887C168.244 435.732 167.296 436.407 166.417 436.902C165.546 437.397 164.666 437.653 163.786 437.653C162.693 437.653 161.762 437.269 161.019 436.492C160.285 435.724 159.926 434.802 159.926 433.727C159.926 433.231 160.029 432.753 160.234 432.293C160.43 431.823 160.652 431.422 160.883 431.098C161.13 430.782 161.506 430.432 162.01 430.039C162.505 429.638 162.881 429.339 163.137 429.152C163.402 428.972 163.838 428.699 164.435 428.332C164.384 428.289 164.256 428.144 164.06 427.888C163.872 427.624 163.744 427.436 163.684 427.342C163.633 427.257 163.53 427.094 163.376 426.864C163.24 426.617 163.146 426.42 163.103 426.284C163.052 426.13 162.992 425.942 162.932 425.737C162.881 425.515 162.864 425.294 162.864 425.089C162.864 424.32 163.146 423.655 163.718 423.108C164.282 422.545 164.965 422.255 165.768 422.255C166.511 422.255 167.151 422.537 167.68 423.074C168.201 423.603 168.466 424.244 168.466 424.986C168.466 425.396 168.389 425.789 168.261 426.147C168.125 426.488 167.894 426.821 167.578 427.137C167.279 427.436 166.989 427.692 166.724 427.888C166.468 428.093 166.118 428.349 165.665 428.639L169.354 433.658L171.233 431.576L171.95 431.985L169.901 434.341L172.155 437.346H171.131ZM164.982 429.083L164.025 429.732C163.547 430.031 163.163 430.287 162.898 430.483C162.625 430.688 162.3 430.97 161.942 431.302C161.575 431.644 161.301 432.011 161.122 432.395C160.934 432.788 160.849 433.197 160.849 433.624C160.849 434.495 161.122 435.237 161.668 435.843C162.232 436.458 162.941 436.765 163.786 436.765C164.324 436.765 164.922 436.612 165.563 436.287C166.22 435.971 166.741 435.664 167.134 435.365C167.535 435.075 168.065 434.665 168.705 434.136L164.982 429.083Z" fill="white"/>
<path d="M194.781 437.345L192.253 425.088H192.219L187.026 437.823L181.868 425.088H181.834L179.307 437.345H178.384L181.561 422.016L187.026 435.502L192.492 422.016L195.669 437.345H194.781Z" fill="white"/>
<path d="M201.225 428.059C202.541 428.059 203.668 428.52 204.607 429.424C205.538 430.338 206.008 431.464 206.008 432.804C206.008 434.153 205.538 435.28 204.607 436.184C203.668 437.098 202.541 437.55 201.225 437.55C199.927 437.55 198.809 437.098 197.878 436.184C196.938 435.254 196.477 434.136 196.477 432.838C196.477 431.524 196.93 430.397 197.844 429.458C198.775 428.528 199.902 428.059 201.225 428.059ZM201.157 428.878C200.081 428.878 199.184 429.271 198.459 430.039C197.724 430.816 197.365 431.754 197.365 432.838C197.365 433.888 197.724 434.802 198.459 435.57C199.184 436.347 200.081 436.731 201.157 436.731C202.267 436.731 203.207 436.355 203.958 435.604C204.727 434.861 205.12 433.931 205.12 432.838C205.12 431.729 204.727 430.79 203.958 430.039C203.207 429.271 202.267 428.878 201.157 428.878Z" fill="white"/>
<path d="M211.715 436.731C212.825 436.731 213.704 436.347 214.345 435.57C214.977 434.776 215.301 433.795 215.301 432.634C215.301 431.567 214.951 430.679 214.277 429.971C213.611 429.245 212.731 428.878 211.646 428.878C210.639 428.878 209.793 429.271 209.119 430.039C208.452 430.816 208.128 431.72 208.128 432.736C208.128 433.829 208.452 434.776 209.119 435.57C209.793 436.347 210.664 436.731 211.715 436.731ZM215.233 437.345V435.706H215.199C214.874 436.278 214.388 436.739 213.73 437.072C213.09 437.388 212.423 437.55 211.749 437.55C210.382 437.55 209.281 437.098 208.47 436.184C207.65 435.254 207.24 434.102 207.24 432.736C207.24 431.396 207.65 430.278 208.47 429.39C209.281 428.511 210.365 428.059 211.715 428.059C212.415 428.059 213.081 428.221 213.696 428.537C214.302 428.835 214.806 429.271 215.199 429.834H215.233V421.128H216.121V437.345H215.233Z" fill="white"/>
<path d="M227.037 432.873H219.146C219.121 434.016 219.454 434.947 220.137 435.672C220.837 436.381 221.725 436.731 222.801 436.731C223.476 436.731 224.099 436.551 224.646 436.184C225.21 435.8 225.671 435.288 226.012 434.648L226.764 435.092C225.893 436.731 224.526 437.55 222.665 437.55C221.367 437.55 220.299 437.098 219.488 436.184C218.668 435.254 218.258 434.119 218.258 432.77C218.258 431.481 218.668 430.372 219.488 429.458C220.299 428.528 221.367 428.059 222.665 428.059C224.005 428.059 225.073 428.528 225.876 429.458C226.67 430.397 227.054 431.533 227.037 432.873ZM219.146 432.053H226.149C226.029 431.191 225.654 430.449 225.022 429.834C224.381 429.202 223.604 428.878 222.699 428.878C221.785 428.878 220.982 429.202 220.308 429.834C219.625 430.449 219.232 431.191 219.146 432.053Z" fill="white"/>
<path d="M230.069 428.263V429.424H230.103C230.505 428.52 231.171 428.059 232.084 428.059C232.4 428.059 232.716 428.135 233.041 428.263L232.563 429.083C232.358 428.955 232.144 428.878 231.948 428.878C231.674 428.878 231.427 428.929 231.23 429.015C231.043 429.108 230.88 429.228 230.752 429.356C230.616 429.475 230.496 429.646 230.411 429.868C230.317 430.099 230.248 430.303 230.206 430.483C230.18 430.645 230.146 430.884 230.103 431.2C230.078 431.498 230.069 431.72 230.069 431.848C230.069 431.985 230.069 432.207 230.069 432.497C230.069 432.591 230.069 432.659 230.069 432.702V437.345H229.181V428.263H230.069Z" fill="white"/>
<path d="M235.696 428.263V429.663H235.73C235.995 429.168 236.362 428.776 236.823 428.502C237.293 428.212 237.831 428.059 238.429 428.059C239.539 428.059 240.316 428.383 240.752 429.015C241.204 429.655 241.435 430.602 241.435 431.848V437.345H240.547V431.848C240.547 431.396 240.521 431.012 240.478 430.688C240.427 430.372 240.333 430.064 240.205 429.766C240.069 429.475 239.838 429.254 239.522 429.117C239.223 428.963 238.83 428.878 238.361 428.878C236.584 428.878 235.696 430.218 235.696 432.873V437.345H234.808V428.263H235.696Z" fill="white"/>
<path d="M258.166 424.405L257.517 424.951C256.765 423.799 255.758 423.21 254.511 423.21C253.708 423.21 253.034 423.492 252.496 424.029C251.966 424.576 251.71 425.25 251.71 426.044C251.71 426.411 251.778 426.744 251.915 427.034C252.043 427.307 252.274 427.572 252.598 427.819C252.931 428.075 253.213 428.254 253.418 428.365C253.614 428.459 253.939 428.613 254.374 428.809L257.209 430.277C258.345 430.986 258.917 431.976 258.917 433.248C258.917 434.46 258.448 435.484 257.517 436.32C256.578 437.14 255.493 437.55 254.272 437.55C253.247 437.55 252.342 437.268 251.573 436.696C250.796 436.107 250.233 435.322 249.899 434.34L250.719 433.999C251.42 435.774 252.615 436.662 254.306 436.662C255.28 436.662 256.133 436.32 256.868 435.638C257.594 434.963 257.961 434.127 257.961 433.145C257.961 432.855 257.884 432.565 257.756 432.292C257.636 432.027 257.508 431.805 257.38 431.643C257.244 431.489 257.013 431.302 256.697 431.097C256.373 430.9 256.142 430.755 256.014 430.687C255.877 430.602 255.613 430.465 255.228 430.277C255.109 430.218 255.015 430.166 254.955 430.141L252.291 428.741C251.266 428.109 250.753 427.222 250.753 426.078C250.753 424.994 251.104 424.089 251.812 423.381C252.513 422.681 253.426 422.322 254.545 422.322C255.288 422.322 255.997 422.519 256.663 422.903C257.32 423.27 257.824 423.773 258.166 424.405Z" fill="white"/>
<path d="M262.243 429.082V437.345H261.354V429.082H260.364V428.263H261.354V425.02H262.243V428.263H263.848V429.082H262.243Z" fill="white"/>
<path d="M268.883 428.878C267.875 428.878 267.029 429.271 266.355 430.039C265.689 430.816 265.364 431.72 265.364 432.736C265.364 433.829 265.689 434.776 266.355 435.57C267.029 436.347 267.9 436.731 268.951 436.731C270.061 436.731 270.941 436.347 271.581 435.57C272.213 434.776 272.538 433.794 272.538 432.634C272.538 431.567 272.187 430.679 271.513 429.971C270.847 429.245 269.967 428.878 268.883 428.878ZM273.357 428.263V437.345H272.469V435.706H272.435C272.111 436.278 271.624 436.739 270.966 437.072C270.326 437.388 269.66 437.55 268.985 437.55C267.619 437.55 266.517 437.098 265.706 436.184C264.886 435.254 264.476 434.102 264.476 432.736C264.476 431.396 264.886 430.278 265.706 429.39C266.517 428.511 267.602 428.059 268.951 428.059C269.651 428.059 270.317 428.221 270.932 428.537C271.538 428.835 272.042 429.271 272.435 429.834H272.469V428.263H273.357Z" fill="white"/>
<path d="M277.373 429.082V437.345H276.485V429.082H275.494V428.263H276.485V425.02H277.373V428.263H278.979V429.082H277.373Z" fill="white"/>
<path d="M281.724 428.263V437.345H280.836V428.263H281.724ZM280.734 424.678C280.888 424.525 281.075 424.439 281.28 424.439C281.502 424.439 281.699 424.525 281.861 424.678C282.015 424.815 282.1 425.003 282.1 425.225C282.1 425.455 282.015 425.651 281.861 425.805C281.699 425.967 281.502 426.044 281.28 426.044C281.075 426.044 280.888 425.967 280.734 425.805C280.572 425.651 280.495 425.455 280.495 425.225C280.495 425.003 280.572 424.815 280.734 424.678Z" fill="white"/>
<path d="M292.067 429.185V430.38C291.179 429.382 290.103 428.878 288.856 428.878C287.806 428.878 286.918 429.271 286.192 430.039C285.457 430.816 285.099 431.729 285.099 432.77C285.099 433.82 285.457 434.742 286.192 435.536C286.918 436.338 287.806 436.731 288.856 436.731C290.197 436.731 291.316 436.184 292.204 435.092V436.287C291.247 437.132 290.137 437.55 288.89 437.55C287.541 437.55 286.422 437.098 285.543 436.184C284.655 435.254 284.211 434.119 284.211 432.77C284.211 431.456 284.655 430.338 285.543 429.424C286.448 428.52 287.575 428.059 288.925 428.059C290.146 428.059 291.196 428.443 292.067 429.185Z" fill="white"/>
<path d="M300.276 422.527L304.443 435.262L309.977 421.776L315.545 435.262L319.644 422.527H320.601L315.579 437.823L309.909 424.132L304.273 437.823L299.32 422.527H300.276Z" fill="white"/>
<path d="M329.036 432.873H321.145C321.119 434.016 321.452 434.947 322.135 435.672C322.836 436.381 323.724 436.731 324.8 436.731C325.474 436.731 326.098 436.551 326.644 436.184C327.208 435.8 327.669 435.288 328.011 434.648L328.762 435.092C327.891 436.731 326.525 437.55 324.663 437.55C323.365 437.55 322.298 437.098 321.486 436.184C320.667 435.254 320.257 434.119 320.257 432.77C320.257 431.481 320.667 430.372 321.486 429.458C322.298 428.528 323.365 428.059 324.663 428.059C326.004 428.059 327.071 428.528 327.874 429.458C328.668 430.397 329.053 431.533 329.036 432.873ZM321.145 432.053H328.147C328.028 431.191 327.652 430.449 327.02 429.834C326.38 429.202 325.603 428.878 324.697 428.878C323.784 428.878 322.981 429.202 322.306 429.834C321.623 430.449 321.23 431.191 321.145 432.053Z" fill="white"/>
<path d="M335.586 436.731C336.67 436.731 337.541 436.347 338.182 435.57C338.839 434.776 339.173 433.829 339.173 432.736C339.173 431.72 338.822 430.816 338.148 430.039C337.482 429.271 336.653 428.878 335.654 428.878C334.535 428.878 333.647 429.262 332.99 430.005C332.349 430.739 332.033 431.661 332.033 432.77C332.033 433.863 332.349 434.802 332.99 435.57C333.647 436.347 334.51 436.731 335.586 436.731ZM331.179 437.345V421.128H332.067V429.834H332.102C332.486 429.271 332.99 428.835 333.605 428.537C334.237 428.221 334.911 428.059 335.62 428.059C336.961 428.059 338.028 428.511 338.831 429.39C339.642 430.278 340.061 431.396 340.061 432.736C340.061 434.102 339.642 435.254 338.831 436.184C338.011 437.098 336.927 437.55 335.586 437.55C334.877 437.55 334.202 437.388 333.57 437.072C332.93 436.739 332.435 436.278 332.102 435.706H332.067V437.345H331.179Z" fill="white"/>
<path d="M346.809 429.527L346.023 429.902C345.699 429.228 345.161 428.878 344.418 428.878C344.025 428.878 343.675 429.032 343.359 429.322C343.035 429.595 342.881 429.928 342.881 430.312C342.881 430.705 343.026 431.02 343.325 431.268C343.615 431.524 343.982 431.729 344.418 431.882C344.845 432.019 345.281 432.181 345.716 432.36C346.169 432.548 346.544 432.83 346.843 433.214C347.159 433.607 347.322 434.11 347.322 434.716C347.322 435.536 347.031 436.227 346.468 436.765C345.895 437.294 345.195 437.55 344.384 437.55C343.607 437.55 342.932 437.337 342.368 436.901C341.796 436.475 341.421 435.877 341.241 435.126L342.095 434.853C342.479 436.108 343.24 436.731 344.384 436.731C344.922 436.731 345.409 436.543 345.819 436.15C346.22 435.749 346.433 435.254 346.433 434.682C346.433 434.187 346.271 433.811 345.955 433.555C345.656 433.308 345.221 433.077 344.657 432.873C344.222 432.719 343.889 432.591 343.667 432.497C343.462 432.412 343.197 432.258 342.881 432.053C342.582 431.857 342.351 431.609 342.198 431.336C342.061 431.072 341.993 430.747 341.993 430.38C341.993 429.706 342.232 429.143 342.71 428.707C343.205 428.281 343.803 428.059 344.486 428.059C344.939 428.059 345.383 428.204 345.819 428.468C346.271 428.741 346.604 429.1 346.809 429.527Z" fill="white"/>
<path d="M350.806 428.263V437.345H349.918V428.263H350.806ZM349.815 424.678C349.969 424.525 350.157 424.439 350.362 424.439C350.584 424.439 350.78 424.525 350.942 424.678C351.096 424.815 351.181 425.003 351.181 425.225C351.181 425.455 351.096 425.651 350.942 425.805C350.78 425.967 350.584 426.044 350.362 426.044C350.157 426.044 349.969 425.967 349.815 425.805C349.653 425.651 349.576 425.455 349.576 425.225C349.576 425.003 349.653 424.815 349.815 424.678Z" fill="white"/>
<path d="M355.171 429.083V437.346H354.283V429.083H353.292V428.264H354.283V425.021H355.171V428.264H356.776V429.083H355.171Z" fill="white"/>
<path d="M366.183 432.873H358.292C358.267 434.016 358.6 434.947 359.283 435.672C359.983 436.381 360.871 436.731 361.947 436.731C362.622 436.731 363.245 436.551 363.792 436.184C364.356 435.8 364.817 435.288 365.158 434.648L365.91 435.092C365.039 436.731 363.672 437.55 361.811 437.55C360.513 437.55 359.445 437.098 358.634 436.184C357.814 435.254 357.404 434.119 357.404 432.77C357.404 431.481 357.814 430.372 358.634 429.458C359.445 428.528 360.513 428.059 361.811 428.059C363.151 428.059 364.219 428.528 365.022 429.458C365.816 430.397 366.2 431.533 366.183 432.873ZM358.292 432.053H365.295C365.175 431.191 364.8 430.449 364.168 429.834C363.527 429.202 362.75 428.878 361.845 428.878C360.931 428.878 360.128 429.202 359.454 429.834C358.771 430.449 358.378 431.191 358.292 432.053Z" fill="white"/>
<path d="M381.206 423.415H375.057V428.775H381.035V429.663H375.057V436.457H381.206V437.345H374.135V422.527H381.206V423.415Z" fill="white"/>
<path d="M384.896 428.263V429.663H384.93C385.195 429.168 385.562 428.776 386.023 428.502C386.493 428.212 387.031 428.059 387.629 428.059C388.739 428.059 389.516 428.383 389.952 429.015C390.404 429.655 390.635 430.602 390.635 431.848V437.345H389.747V431.848C389.747 431.396 389.721 431.012 389.678 430.688C389.627 430.372 389.533 430.064 389.405 429.766C389.269 429.475 389.038 429.254 388.722 429.117C388.423 428.963 388.03 428.878 387.561 428.878C385.784 428.878 384.896 430.218 384.896 432.873V437.345H384.008V428.263H384.896Z" fill="white"/>
<path d="M397.304 428.878C396.296 428.878 395.451 429.271 394.776 430.039C394.11 430.816 393.786 431.72 393.786 432.736C393.786 433.829 394.11 434.776 394.776 435.57C395.451 436.347 396.322 436.731 397.372 436.731C398.483 436.731 399.362 436.347 400.003 435.57C400.635 434.776 400.959 433.794 400.959 432.634C400.959 431.567 400.609 430.679 399.934 429.971C399.268 429.245 398.389 428.878 397.304 428.878ZM401.779 428.263V436.901C401.779 437.49 401.762 437.96 401.745 438.301C401.719 438.634 401.634 439.035 401.506 439.496C401.369 439.966 401.156 440.392 400.891 440.759C400.02 441.912 398.816 442.501 397.27 442.501C396.04 442.501 394.99 442.142 394.127 441.442C393.282 440.759 392.821 439.812 392.761 438.608H393.649C393.709 439.539 394.076 440.281 394.742 440.828C395.417 441.391 396.228 441.681 397.168 441.681C398.483 441.681 399.465 441.229 400.105 440.35C400.626 439.547 400.891 438.395 400.891 436.901V435.775H400.857C400.447 436.321 399.917 436.756 399.285 437.072C398.645 437.388 397.979 437.55 397.304 437.55C396.023 437.55 394.964 437.089 394.127 436.15C393.308 435.22 392.898 434.093 392.898 432.77C392.898 431.456 393.316 430.338 394.162 429.424C395.024 428.52 396.117 428.059 397.441 428.059C398.85 428.059 399.986 428.656 400.857 429.834H400.891V428.263H401.779Z" fill="white"/>
<path d="M406.035 428.263V437.345H405.147V428.263H406.035ZM405.044 424.678C405.198 424.525 405.386 424.439 405.591 424.439C405.813 424.439 406.009 424.525 406.172 424.678C406.325 424.815 406.411 425.003 406.411 425.225C406.411 425.455 406.325 425.651 406.172 425.805C406.009 425.967 405.813 426.044 405.591 426.044C405.386 426.044 405.198 425.967 405.044 425.805C404.882 425.651 404.805 425.455 404.805 425.225C404.805 425.003 404.882 424.815 405.044 424.678Z" fill="white"/>
<path d="M410.297 428.263V429.663H410.332C410.596 429.168 410.964 428.776 411.425 428.502C411.894 428.212 412.432 428.059 413.03 428.059C414.14 428.059 414.917 428.383 415.353 429.015C415.806 429.655 416.036 430.602 416.036 431.848V437.345H415.148V431.848C415.148 431.396 415.122 431.012 415.08 430.688C415.028 430.372 414.934 430.064 414.806 429.766C414.67 429.475 414.439 429.254 414.123 429.117C413.824 428.963 413.431 428.878 412.962 428.878C411.186 428.878 410.297 430.218 410.297 432.873V437.345H409.409V428.263H410.297Z" fill="white"/>
<path d="M426.941 432.873H419.05C419.025 434.016 419.358 434.947 420.041 435.672C420.741 436.381 421.629 436.731 422.705 436.731C423.38 436.731 424.003 436.551 424.55 436.184C425.114 435.8 425.575 435.288 425.916 434.648L426.668 435.092C425.797 436.731 424.43 437.55 422.569 437.55C421.271 437.55 420.203 437.098 419.392 436.184C418.572 435.254 418.162 434.119 418.162 432.77C418.162 431.481 418.572 430.372 419.392 429.458C420.203 428.528 421.271 428.059 422.569 428.059C423.909 428.059 424.977 428.528 425.78 429.458C426.574 430.397 426.958 431.533 426.941 432.873ZM419.05 432.053H426.053C425.933 431.191 425.558 430.449 424.926 429.834C424.285 429.202 423.508 428.878 422.603 428.878C421.689 428.878 420.886 429.202 420.212 429.834C419.529 430.449 419.136 431.191 419.05 432.053Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_4_14">
<rect width="531" height="600" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 27 KiB

@@ -0,0 +1,62 @@
<svg width="324" height="367" viewBox="0 0 324 367" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_4_115)">
<mask id="mask0_4_115" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="324" height="367">
<path d="M0 0H323.854V366.12H0V0Z" fill="white"/>
</mask>
<g mask="url(#mask0_4_115)">
<path d="M312.307 82.9059C318.656 86.5726 323.854 95.5726 323.854 102.906V263.224C323.854 270.557 318.656 279.557 312.307 283.224L173.469 363.369C167.12 367.036 156.724 367.036 150.375 363.369L11.5469 283.224C5.19792 279.557 0 270.557 0 263.224V102.906C0 95.5726 5.19792 86.5726 11.5469 82.9059L150.375 2.75488C156.724 -0.911784 167.12 -0.911784 173.469 2.75488" fill="#CB007C"/>
</g>
<path d="M290.307 97.3805C296.656 101.047 301.854 110.047 301.854 117.381V252.297C301.854 259.631 296.656 268.631 290.307 272.297L173.469 339.745C167.12 343.412 156.724 343.412 150.375 339.745L33.5469 272.297C27.1979 268.631 22 259.631 22 252.297V117.381C22 110.047 27.1979 101.047 33.5469 97.3805L150.375 29.9326C156.724 26.266 167.12 26.266 173.469 29.9326" fill="#FF41B4"/>
<path d="M49.9396 177.745H75.9605V154.162H85.0438V214.475H75.9605V186.308H49.9396V214.475H40.8354V154.162H49.9396V177.745Z" fill="white"/>
<path d="M108.58 154.162V190.495C108.58 195.678 109.423 199.464 111.121 201.85C113.647 205.324 117.205 207.058 121.788 207.058C126.382 207.058 129.944 205.324 132.475 201.85C134.168 199.532 135.017 195.745 135.017 190.495V154.162H144.121V192.995C144.121 199.344 142.137 204.574 138.184 208.683C133.725 213.282 128.257 215.579 121.788 215.579C115.298 215.579 109.84 213.282 105.413 208.683C101.455 204.574 99.4755 199.344 99.4755 192.995V154.162H108.58Z" fill="white"/>
<path d="M49.9323 154.161H40.8333V214.474H49.9323V186.312H75.9479V214.474H85.0521V154.161H75.9479V177.755H49.9323V154.161Z" stroke="white" stroke-width="4" stroke-miterlimit="10"/>
<path d="M99.5052 154.161V192.989C99.5052 199.343 101.484 204.578 105.443 208.692C109.87 213.276 115.323 215.567 121.807 215.567C128.292 215.567 133.76 213.276 138.214 208.692C142.172 204.578 144.151 199.343 144.151 192.989V154.161H135.052V190.463C135.052 195.718 134.203 199.505 132.51 201.823C129.984 205.286 126.422 207.015 121.807 207.015C117.224 207.015 113.672 205.286 111.146 201.823C109.453 199.427 108.604 195.64 108.604 190.463V154.161H99.5052Z" stroke="white" stroke-width="4" stroke-miterlimit="10"/>
<path d="M189.629 183.058H214.545V185.058C214.545 189.589 214.009 193.604 212.941 197.099C211.9 200.323 210.139 203.344 207.67 206.162C202.071 212.453 194.946 215.599 186.295 215.599C177.863 215.599 170.639 212.558 164.629 206.474C158.613 200.354 155.608 193.006 155.608 184.433C155.608 175.688 158.66 168.261 164.775 162.162C170.894 156.052 178.347 152.995 187.129 152.995C191.832 152.995 196.233 153.959 200.316 155.87C204.228 157.802 208.077 160.927 211.858 165.245L205.358 171.474C200.41 164.881 194.384 161.578 187.275 161.578C180.9 161.578 175.551 163.782 171.233 168.183C166.9 172.506 164.733 177.922 164.733 184.433C164.733 191.157 167.139 196.693 171.962 201.037C176.472 205.078 181.358 207.099 186.608 207.099C191.092 207.099 195.118 205.589 198.691 202.558C202.259 199.521 204.254 195.87 204.67 191.62H189.629V183.058Z" fill="white"/>
<path d="M189.62 191.625H204.661C204.245 195.859 202.25 199.495 198.682 202.536C195.115 205.547 191.094 207.052 186.615 207.052C181.354 207.052 176.469 205.036 171.964 201C167.146 196.651 164.74 191.115 164.74 184.396C164.74 177.885 166.901 172.469 171.224 168.146C175.547 163.745 180.896 161.547 187.276 161.547C194.385 161.547 200.417 164.844 205.365 171.427L211.849 165.219C208.073 160.906 204.229 157.786 200.323 155.87C196.234 153.953 191.833 152.99 187.12 152.99C178.344 152.99 170.896 156.052 164.776 162.172C158.656 168.266 155.599 175.687 155.599 184.437C155.599 193.005 158.604 200.349 164.62 206.469C170.635 212.562 177.865 215.609 186.302 215.609C194.948 215.609 202.068 212.458 207.667 206.156C210.141 203.344 211.901 200.323 212.943 197.094C214.01 193.604 214.542 189.594 214.542 185.062V183.068H189.62V191.625Z" stroke="white" stroke-width="4" stroke-miterlimit="10"/>
<path d="M224.592 184.037C224.592 175.553 227.701 168.261 233.925 162.162C240.118 156.084 247.561 153.037 256.259 153.037C264.852 153.037 272.222 156.11 278.363 162.245C284.54 168.402 287.634 175.782 287.634 184.391C287.634 193.074 284.535 200.438 278.342 206.475C272.102 212.548 264.587 215.579 255.8 215.579C248.009 215.579 241.014 212.881 234.821 207.475C227.998 201.521 224.592 193.704 224.592 184.037ZM233.759 184.162C233.759 190.829 235.998 196.313 240.488 200.6C244.93 204.907 250.071 207.058 255.904 207.058C262.232 207.058 267.576 204.87 271.925 200.495C276.269 196.068 278.446 190.673 278.446 184.308C278.446 177.881 276.295 172.49 272.009 168.141C267.727 163.771 262.441 161.579 256.154 161.579C249.873 161.579 244.566 163.771 240.238 168.141C235.915 172.464 233.759 177.803 233.759 184.162Z" fill="white"/>
<mask id="mask1_4_115" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="168" y="96" width="156" height="178">
<path d="M168 96H323.854V273.333H168V96Z" fill="white"/>
</mask>
<g mask="url(#mask1_4_115)">
<path d="M234.818 207.484C241.016 212.875 248.005 215.567 255.792 215.567C264.594 215.567 272.104 212.536 278.333 206.468C284.531 200.427 287.63 193.067 287.63 184.401C287.63 175.776 284.542 168.396 278.37 162.25C272.224 156.104 264.854 153.031 256.26 153.031C247.562 153.031 240.115 156.078 233.917 162.172C227.693 168.265 224.583 175.557 224.583 184.047C224.583 193.708 227.995 201.521 234.818 207.484ZM240.245 168.14C244.568 163.771 249.87 161.583 256.146 161.583C262.448 161.583 267.734 163.771 272.005 168.14C276.302 172.484 278.448 177.869 278.448 184.297C278.448 190.646 276.271 196.036 271.927 200.458C267.578 204.828 262.24 207.015 255.911 207.015C250.078 207.015 244.932 204.869 240.479 200.573C236 196.281 233.76 190.802 233.76 184.146C233.76 177.797 235.922 172.458 240.245 168.14Z" stroke="white" stroke-width="4" stroke-miterlimit="10"/>
</g>
<path d="M279.141 237.88C279.141 237.88 275.479 237.953 269.068 238.073C262.656 238.172 253.5 238.422 242.51 238.521C231.526 238.615 218.703 238.828 204.969 238.865C191.229 238.911 176.578 238.964 161.927 239.016C147.276 238.964 132.625 238.911 118.885 238.865C105.151 238.823 92.3281 238.615 81.3385 238.521C70.3541 238.417 61.1927 238.172 54.7864 238.073C48.375 237.953 44.7083 237.88 44.7083 237.88V237.75H279.141" fill="white"/>
<path d="M44.7136 130.375C44.7136 130.375 48.375 130.302 54.7865 130.182C61.1979 130.088 70.3542 129.833 81.3438 129.734C92.3334 129.64 105.151 129.427 118.885 129.39C132.625 129.343 147.276 129.291 161.927 129.239C176.578 129.291 191.229 129.343 204.964 129.39C218.703 129.432 231.521 129.646 242.51 129.739C253.5 129.838 262.656 130.088 269.068 130.182C275.479 130.302 279.141 130.375 279.141 130.375V130.505H44.7136" fill="white"/>
<path d="M68.9115 263.889H64.9323L63.724 266.868H63.1406L66.9323 257.514L70.7031 266.868H70.1198L68.9115 263.889ZM68.7031 263.347L66.9323 258.993L65.1615 263.347H68.7031Z" fill="white"/>
<path d="M79.1151 258.368H76.0318V261.639H79.0318V262.18H76.0318V266.868H75.4693V257.826H79.1151V258.368Z" fill="white"/>
<path d="M82.8806 261.701C82.266 261.701 81.7504 261.941 81.3389 262.41C80.9327 262.883 80.7348 263.436 80.7348 264.055C80.7348 264.722 80.9327 265.3 81.3389 265.785C81.7504 266.258 82.2817 266.493 82.9223 266.493C83.5994 266.493 84.1358 266.258 84.5264 265.785C84.9119 265.3 85.1098 264.701 85.1098 263.993C85.1098 263.342 84.8962 262.8 84.4848 262.368C84.0785 261.925 83.5421 261.701 82.8806 261.701ZM85.6098 261.326V266.868H85.0681V265.868H85.0473C84.8494 266.217 84.5525 266.498 84.1514 266.701C83.7608 266.894 83.3546 266.993 82.9431 266.993C82.1098 266.993 81.4379 266.717 80.9431 266.16C80.4431 265.592 80.1931 264.889 80.1931 264.055C80.1931 263.238 80.4431 262.555 80.9431 262.014C81.4379 261.477 82.0994 261.201 82.9223 261.201C83.3494 261.201 83.7556 261.3 84.1306 261.493C84.5004 261.675 84.8077 261.941 85.0473 262.285H85.0681V261.326H85.6098Z" fill="white"/>
<path d="M90.2673 262.097L89.7881 262.326C89.5902 261.915 89.2621 261.701 88.809 261.701C88.5694 261.701 88.3558 261.795 88.1631 261.972C87.9652 262.139 87.8715 262.342 87.8715 262.576C87.8715 262.816 87.96 263.008 88.1423 263.16C88.3194 263.316 88.5433 263.441 88.809 263.535C89.0694 263.618 89.335 263.717 89.6006 263.826C89.8767 263.941 90.1058 264.113 90.2881 264.347C90.4808 264.587 90.5798 264.894 90.5798 265.264C90.5798 265.764 90.4027 266.186 90.059 266.514C89.71 266.837 89.2829 266.993 88.7881 266.993C88.3142 266.993 87.9027 266.863 87.559 266.597C87.21 266.337 86.9808 265.972 86.8715 265.514L87.3923 265.347C87.6267 266.113 88.0902 266.493 88.7881 266.493C89.1163 266.493 89.4131 266.378 89.6631 266.139C89.9079 265.894 90.0381 265.592 90.0381 265.243C90.0381 264.941 89.9392 264.712 89.7465 264.555C89.5642 264.404 89.2985 264.264 88.9548 264.139C88.6892 264.045 88.486 263.967 88.3506 263.91C88.2256 263.857 88.0642 263.764 87.8715 263.639C87.6892 263.519 87.5485 263.368 87.4548 263.201C87.3715 263.04 87.3298 262.842 87.3298 262.618C87.3298 262.206 87.4756 261.863 87.7673 261.597C88.0694 261.337 88.434 261.201 88.8506 261.201C89.1267 261.201 89.3975 261.29 89.6631 261.451C89.9392 261.618 90.1423 261.837 90.2673 262.097Z" fill="white"/>
<path d="M92.559 261.826V266.868H92.0173V261.826H91.4131V261.326H92.0173V259.347H92.559V261.326H93.5381V261.826H92.559Z" fill="white"/>
<path d="M101.058 258.201C100.735 258.201 100.464 258.331 100.245 258.576C100.021 258.826 99.912 259.123 99.912 259.451C99.912 259.607 99.938 259.769 99.9953 259.93C100.047 260.086 100.11 260.216 100.183 260.326C100.251 260.425 100.339 260.565 100.454 260.743C100.563 260.909 100.646 261.039 100.704 261.118C100.782 261.05 100.917 260.951 101.099 260.826C101.277 260.706 101.412 260.607 101.495 260.534C101.589 260.456 101.704 260.347 101.829 260.222C101.948 260.086 102.037 259.946 102.079 259.805C102.131 259.654 102.162 259.493 102.162 259.326C102.162 259.008 102.047 258.743 101.829 258.534C101.62 258.315 101.36 258.201 101.058 258.201ZM104.37 266.868L103.224 265.368C102.61 265.883 102.032 266.295 101.495 266.597C100.964 266.899 100.428 267.055 99.8912 267.055C99.2245 267.055 98.6568 266.821 98.2037 266.347C97.7557 265.878 97.537 265.315 97.537 264.659C97.537 264.357 97.5995 264.065 97.7245 263.784C97.8443 263.498 97.9797 263.253 98.1203 263.055C98.2714 262.862 98.5005 262.649 98.8078 262.409C99.1099 262.164 99.3391 261.982 99.4953 261.868C99.6568 261.758 99.9224 261.591 100.287 261.368C100.256 261.341 100.178 261.253 100.058 261.097C99.9432 260.935 99.8651 260.821 99.8287 260.763C99.7974 260.711 99.7349 260.612 99.6412 260.472C99.5578 260.321 99.5005 260.201 99.4745 260.118C99.4432 260.024 99.4068 259.909 99.3703 259.784C99.3391 259.649 99.3287 259.513 99.3287 259.388C99.3287 258.92 99.5005 258.513 99.8495 258.18C100.193 257.836 100.61 257.659 101.099 257.659C101.553 257.659 101.943 257.831 102.266 258.159C102.584 258.482 102.745 258.873 102.745 259.326C102.745 259.576 102.698 259.815 102.62 260.034C102.537 260.243 102.396 260.446 102.204 260.638C102.021 260.821 101.844 260.977 101.683 261.097C101.527 261.222 101.313 261.378 101.037 261.555L103.287 264.618L104.433 263.347L104.87 263.597L103.62 265.034L104.995 266.868H104.37ZM100.62 261.826L100.037 262.222C99.7453 262.404 99.5109 262.56 99.3495 262.68C99.1828 262.805 98.9849 262.977 98.7662 263.18C98.5422 263.388 98.3755 263.612 98.2662 263.847C98.1516 264.086 98.0995 264.336 98.0995 264.597C98.0995 265.128 98.2662 265.581 98.5995 265.951C98.9432 266.326 99.3755 266.513 99.8912 266.513C100.219 266.513 100.584 266.42 100.974 266.222C101.376 266.029 101.693 265.841 101.933 265.659C102.178 265.482 102.501 265.232 102.891 264.909L100.62 261.826Z" fill="white"/>
<path d="M118.794 266.868L117.253 259.389H117.232L114.065 267.16L110.919 259.389H110.898L109.357 266.868H108.794L110.732 257.514L114.065 265.743L117.398 257.514L119.336 266.868H118.794Z" fill="white"/>
<path d="M122.725 261.201C123.527 261.201 124.215 261.482 124.787 262.035C125.355 262.592 125.642 263.279 125.642 264.097C125.642 264.92 125.355 265.607 124.787 266.16C124.215 266.717 123.527 266.993 122.725 266.993C121.933 266.993 121.251 266.717 120.683 266.16C120.11 265.592 119.829 264.91 119.829 264.118C119.829 263.316 120.105 262.628 120.662 262.055C121.23 261.488 121.918 261.201 122.725 261.201ZM122.683 261.701C122.027 261.701 121.48 261.941 121.037 262.41C120.59 262.883 120.371 263.456 120.371 264.118C120.371 264.758 120.59 265.316 121.037 265.785C121.48 266.258 122.027 266.493 122.683 266.493C123.36 266.493 123.933 266.264 124.392 265.805C124.86 265.352 125.1 264.785 125.1 264.118C125.1 263.441 124.86 262.868 124.392 262.41C123.933 261.941 123.36 261.701 122.683 261.701Z" fill="white"/>
<path d="M129.122 266.493C129.799 266.493 130.336 266.258 130.726 265.784C131.112 265.3 131.31 264.701 131.31 263.993C131.31 263.341 131.096 262.8 130.685 262.368C130.279 261.925 129.742 261.701 129.081 261.701C128.466 261.701 127.95 261.94 127.539 262.409C127.133 262.883 126.935 263.435 126.935 264.055C126.935 264.722 127.133 265.3 127.539 265.784C127.95 266.258 128.482 266.493 129.122 266.493ZM131.268 266.868V265.868H131.247C131.049 266.216 130.753 266.498 130.351 266.701C129.961 266.894 129.555 266.993 129.143 266.993C128.31 266.993 127.638 266.716 127.143 266.159C126.643 265.591 126.393 264.888 126.393 264.055C126.393 263.237 126.643 262.555 127.143 262.013C127.638 261.477 128.299 261.201 129.122 261.201C129.549 261.201 129.956 261.3 130.331 261.493C130.7 261.675 131.008 261.94 131.247 262.284H131.268V256.972H131.81V266.868H131.268Z" fill="white"/>
<path d="M138.467 264.139H133.655C133.639 264.837 133.842 265.404 134.259 265.847C134.686 266.279 135.228 266.493 135.884 266.493C136.295 266.493 136.676 266.383 137.009 266.16C137.353 265.925 137.634 265.613 137.842 265.222L138.301 265.493C137.769 266.493 136.936 266.993 135.801 266.993C135.009 266.993 134.358 266.717 133.863 266.16C133.363 265.592 133.113 264.899 133.113 264.076C133.113 263.29 133.363 262.613 133.863 262.055C134.358 261.488 135.009 261.201 135.801 261.201C136.618 261.201 137.269 261.488 137.759 262.055C138.243 262.628 138.478 263.321 138.467 264.139ZM133.655 263.639H137.926C137.853 263.113 137.624 262.66 137.238 262.285C136.847 261.899 136.374 261.701 135.821 261.701C135.264 261.701 134.775 261.899 134.363 262.285C133.946 262.66 133.707 263.113 133.655 263.639Z" fill="white"/>
<path d="M140.316 261.326V262.035H140.337C140.582 261.482 140.988 261.201 141.546 261.201C141.738 261.201 141.931 261.248 142.129 261.326L141.837 261.826C141.712 261.748 141.582 261.701 141.462 261.701C141.296 261.701 141.145 261.732 141.025 261.785C140.91 261.842 140.811 261.915 140.733 261.993C140.65 262.066 140.577 262.17 140.525 262.305C140.467 262.446 140.426 262.571 140.4 262.68C140.384 262.779 140.363 262.925 140.337 263.118C140.322 263.3 140.316 263.436 140.316 263.514C140.316 263.597 140.316 263.732 140.316 263.91C140.316 263.967 140.316 264.008 140.316 264.035V266.868H139.775V261.326H140.316Z" fill="white"/>
<path d="M143.748 261.326V262.18H143.769C143.931 261.878 144.155 261.639 144.436 261.472C144.722 261.295 145.051 261.201 145.415 261.201C146.092 261.201 146.566 261.399 146.832 261.785C147.108 262.175 147.248 262.753 147.248 263.514V266.868H146.707V263.514C146.707 263.238 146.691 263.003 146.665 262.805C146.634 262.613 146.577 262.425 146.498 262.243C146.415 262.066 146.274 261.93 146.082 261.847C145.899 261.753 145.66 261.701 145.373 261.701C144.29 261.701 143.748 262.519 143.748 264.139V266.868H143.207V261.326H143.748Z" fill="white"/>
<path d="M157.453 258.972L157.057 259.305C156.598 258.602 155.984 258.243 155.223 258.243C154.734 258.243 154.322 258.415 153.994 258.743C153.671 259.076 153.515 259.488 153.515 259.972C153.515 260.196 153.557 260.399 153.64 260.576C153.718 260.743 153.859 260.904 154.057 261.055C154.26 261.212 154.432 261.321 154.557 261.389C154.677 261.446 154.874 261.54 155.14 261.66L156.869 262.555C157.562 262.988 157.911 263.592 157.911 264.368C157.911 265.107 157.624 265.732 157.057 266.243C156.484 266.743 155.822 266.993 155.078 266.993C154.453 266.993 153.901 266.821 153.432 266.472C152.958 266.113 152.614 265.633 152.411 265.035L152.911 264.826C153.338 265.91 154.067 266.451 155.098 266.451C155.692 266.451 156.213 266.243 156.661 265.826C157.104 265.415 157.328 264.904 157.328 264.305C157.328 264.128 157.281 263.951 157.203 263.785C157.13 263.623 157.052 263.488 156.973 263.389C156.89 263.295 156.749 263.18 156.557 263.055C156.359 262.936 156.218 262.847 156.14 262.805C156.057 262.753 155.895 262.67 155.661 262.555C155.588 262.519 155.531 262.488 155.494 262.472L153.869 261.618C153.244 261.232 152.932 260.691 152.932 259.993C152.932 259.331 153.145 258.779 153.578 258.347C154.005 257.92 154.562 257.701 155.244 257.701C155.697 257.701 156.13 257.821 156.536 258.055C156.937 258.279 157.244 258.587 157.453 258.972Z" fill="white"/>
<path d="M159.939 261.827V266.868H159.397V261.827H158.793V261.327H159.397V259.348H159.939V261.327H160.918V261.827H159.939Z" fill="white"/>
<path d="M163.989 261.701C163.374 261.701 162.858 261.941 162.447 262.41C162.041 262.883 161.843 263.436 161.843 264.055C161.843 264.722 162.041 265.3 162.447 265.785C162.858 266.258 163.39 266.493 164.03 266.493C164.707 266.493 165.244 266.258 165.634 265.785C166.02 265.3 166.218 264.701 166.218 263.993C166.218 263.342 166.004 262.8 165.593 262.368C165.187 261.925 164.65 261.701 163.989 261.701ZM166.718 261.326V266.868H166.176V265.868H166.155C165.957 266.217 165.661 266.498 165.259 266.701C164.869 266.894 164.463 266.993 164.051 266.993C163.218 266.993 162.546 266.717 162.051 266.16C161.551 265.592 161.301 264.889 161.301 264.055C161.301 263.238 161.551 262.555 162.051 262.014C162.546 261.477 163.207 261.201 164.03 261.201C164.457 261.201 164.864 261.3 165.239 261.493C165.608 261.675 165.916 261.941 166.155 262.285H166.176V261.326H166.718Z" fill="white"/>
<path d="M169.167 261.827V266.868H168.625V261.827H168.021V261.327H168.625V259.348H169.167V261.327H170.146V261.827H169.167Z" fill="white"/>
<path d="M171.821 261.326V266.868H171.279V261.326H171.821ZM171.217 259.139C171.31 259.045 171.425 258.993 171.55 258.993C171.685 258.993 171.805 259.045 171.904 259.139C171.998 259.222 172.05 259.337 172.05 259.472C172.05 259.613 171.998 259.733 171.904 259.826C171.805 259.925 171.685 259.972 171.55 259.972C171.425 259.972 171.31 259.925 171.217 259.826C171.118 259.733 171.071 259.613 171.071 259.472C171.071 259.337 171.118 259.222 171.217 259.139Z" fill="white"/>
<path d="M178.129 261.889V262.618C177.587 262.008 176.931 261.701 176.17 261.701C175.53 261.701 174.988 261.941 174.545 262.41C174.098 262.883 173.879 263.441 173.879 264.076C173.879 264.717 174.098 265.279 174.545 265.764C174.988 266.253 175.53 266.493 176.17 266.493C176.988 266.493 177.67 266.16 178.212 265.493V266.222C177.629 266.738 176.952 266.993 176.191 266.993C175.368 266.993 174.686 266.717 174.15 266.16C173.608 265.592 173.337 264.899 173.337 264.076C173.337 263.274 173.608 262.592 174.15 262.035C174.702 261.482 175.389 261.201 176.212 261.201C176.957 261.201 177.598 261.436 178.129 261.889Z" fill="white"/>
<path d="M183.135 257.826L185.677 265.597L189.052 257.368L192.448 265.597L194.948 257.826H195.531L192.469 267.16L189.01 258.806L185.573 267.16L182.552 257.826H183.135Z" fill="white"/>
<path d="M200.676 264.139H195.863C195.847 264.837 196.051 265.404 196.467 265.847C196.894 266.279 197.436 266.493 198.092 266.493C198.504 266.493 198.884 266.383 199.217 266.16C199.561 265.925 199.842 265.613 200.051 265.222L200.509 265.493C199.978 266.493 199.144 266.993 198.009 266.993C197.217 266.993 196.566 266.717 196.071 266.16C195.571 265.592 195.321 264.899 195.321 264.076C195.321 263.29 195.571 262.613 196.071 262.055C196.566 261.488 197.217 261.201 198.009 261.201C198.827 261.201 199.478 261.488 199.967 262.055C200.452 262.628 200.686 263.321 200.676 264.139ZM195.863 263.639H200.134C200.061 263.113 199.832 262.66 199.446 262.285C199.056 261.899 198.582 261.701 198.03 261.701C197.472 261.701 196.983 261.899 196.571 262.285C196.155 262.66 195.915 263.113 195.863 263.639Z" fill="white"/>
<path d="M204.671 266.493C205.332 266.493 205.863 266.258 206.254 265.784C206.655 265.3 206.858 264.722 206.858 264.055C206.858 263.435 206.644 262.883 206.233 262.409C205.827 261.94 205.322 261.701 204.712 261.701C204.03 261.701 203.488 261.935 203.087 262.388C202.697 262.836 202.504 263.399 202.504 264.076C202.504 264.743 202.697 265.315 203.087 265.784C203.488 266.258 204.014 266.493 204.671 266.493ZM201.983 266.868V256.972H202.525V262.284H202.546C202.78 261.94 203.087 261.675 203.462 261.493C203.848 261.3 204.259 261.201 204.691 261.201C205.509 261.201 206.16 261.477 206.65 262.013C207.144 262.555 207.4 263.237 207.4 264.055C207.4 264.888 207.144 265.591 206.65 266.159C206.15 266.716 205.488 266.993 204.671 266.993C204.238 266.993 203.827 266.894 203.441 266.701C203.051 266.498 202.749 266.216 202.546 265.868H202.525V266.868H201.983Z" fill="white"/>
<path d="M211.515 262.097L211.036 262.326C210.838 261.915 210.51 261.701 210.057 261.701C209.818 261.701 209.604 261.795 209.411 261.972C209.213 262.139 209.12 262.342 209.12 262.576C209.12 262.816 209.208 263.008 209.39 263.16C209.568 263.316 209.792 263.441 210.057 263.535C210.318 263.618 210.583 263.717 210.849 263.826C211.125 263.941 211.354 264.113 211.536 264.347C211.729 264.587 211.828 264.894 211.828 265.264C211.828 265.764 211.651 266.186 211.307 266.514C210.958 266.837 210.531 266.993 210.036 266.993C209.562 266.993 209.151 266.863 208.807 266.597C208.458 266.337 208.229 265.972 208.12 265.514L208.64 265.347C208.875 266.113 209.338 266.493 210.036 266.493C210.364 266.493 210.661 266.378 210.911 266.139C211.156 265.894 211.286 265.592 211.286 265.243C211.286 264.941 211.187 264.712 210.995 264.555C210.812 264.404 210.547 264.264 210.203 264.139C209.937 264.045 209.734 263.967 209.599 263.91C209.474 263.857 209.312 263.764 209.12 263.639C208.937 263.519 208.797 263.368 208.703 263.201C208.62 263.04 208.578 262.842 208.578 262.618C208.578 262.206 208.724 261.863 209.015 261.597C209.318 261.337 209.682 261.201 210.099 261.201C210.375 261.201 210.646 261.29 210.911 261.451C211.187 261.618 211.39 261.837 211.515 262.097Z" fill="white"/>
<path d="M213.953 261.326V266.867H213.411V261.326H213.953ZM213.349 259.138C213.443 259.044 213.557 258.992 213.682 258.992C213.818 258.992 213.937 259.044 214.036 259.138C214.13 259.221 214.182 259.336 214.182 259.471C214.182 259.612 214.13 259.732 214.036 259.826C213.937 259.924 213.818 259.971 213.682 259.971C213.557 259.971 213.443 259.924 213.349 259.826C213.25 259.732 213.203 259.612 213.203 259.471C213.203 259.336 213.25 259.221 213.349 259.138Z" fill="white"/>
<path d="M216.615 261.826V266.868H216.074V261.826H215.469V261.326H216.074V259.347H216.615V261.326H217.594V261.826H216.615Z" fill="white"/>
<path d="M223.331 264.139H218.519C218.503 264.837 218.706 265.404 219.123 265.847C219.55 266.279 220.092 266.493 220.748 266.493C221.16 266.493 221.54 266.383 221.873 266.16C222.217 265.925 222.498 265.613 222.706 265.222L223.165 265.493C222.634 266.493 221.8 266.993 220.665 266.993C219.873 266.993 219.222 266.717 218.727 266.16C218.227 265.592 217.977 264.899 217.977 264.076C217.977 263.29 218.227 262.613 218.727 262.055C219.222 261.488 219.873 261.201 220.665 261.201C221.483 261.201 222.134 261.488 222.623 262.055C223.108 262.628 223.342 263.321 223.331 264.139ZM218.519 263.639H222.79C222.717 263.113 222.488 262.66 222.102 262.285C221.712 261.899 221.238 261.701 220.686 261.701C220.128 261.701 219.639 261.899 219.227 262.285C218.811 262.66 218.571 263.113 218.519 263.639Z" fill="white"/>
<path d="M232.493 258.368H228.743V261.639H232.389V262.18H228.743V266.326H232.493V266.868H228.181V257.826H232.493V258.368Z" fill="white"/>
<path d="M234.744 261.326V262.18H234.765C234.926 261.878 235.15 261.639 235.432 261.472C235.718 261.295 236.046 261.201 236.411 261.201C237.088 261.201 237.562 261.399 237.827 261.785C238.103 262.175 238.244 262.753 238.244 263.514V266.868H237.702V263.514C237.702 263.238 237.687 263.003 237.661 262.805C237.629 262.613 237.572 262.425 237.494 262.243C237.411 262.066 237.27 261.93 237.077 261.847C236.895 261.753 236.656 261.701 236.369 261.701C235.286 261.701 234.744 262.519 234.744 264.139V266.868H234.202V261.326H234.744Z" fill="white"/>
<path d="M242.312 261.701C241.697 261.701 241.181 261.941 240.77 262.41C240.364 262.883 240.166 263.436 240.166 264.055C240.166 264.722 240.364 265.3 240.77 265.785C241.181 266.258 241.713 266.493 242.353 266.493C243.03 266.493 243.567 266.258 243.957 265.785C244.343 265.3 244.541 264.701 244.541 263.993C244.541 263.342 244.327 262.8 243.916 262.368C243.509 261.925 242.973 261.701 242.312 261.701ZM245.041 261.326V266.597C245.041 266.956 245.03 267.243 245.02 267.451C245.004 267.654 244.952 267.899 244.874 268.18C244.791 268.467 244.661 268.727 244.499 268.951C243.968 269.654 243.233 270.014 242.291 270.014C241.541 270.014 240.9 269.795 240.374 269.368C239.858 268.951 239.577 268.373 239.541 267.639H240.082C240.119 268.206 240.343 268.66 240.749 268.993C241.161 269.337 241.655 269.514 242.228 269.514C243.03 269.514 243.629 269.238 244.02 268.701C244.338 268.212 244.499 267.508 244.499 266.597V265.91H244.478C244.228 266.243 243.905 266.508 243.52 266.701C243.129 266.894 242.723 266.993 242.312 266.993C241.53 266.993 240.884 266.712 240.374 266.139C239.874 265.571 239.624 264.883 239.624 264.076C239.624 263.274 239.879 262.592 240.395 262.035C240.921 261.482 241.588 261.201 242.395 261.201C243.254 261.201 243.947 261.566 244.478 262.285H244.499V261.326H245.041Z" fill="white"/>
<path d="M247.636 261.326V266.868H247.095V261.326H247.636ZM247.032 259.139C247.126 259.045 247.241 258.993 247.366 258.993C247.501 258.993 247.621 259.045 247.72 259.139C247.813 259.222 247.866 259.337 247.866 259.472C247.866 259.613 247.813 259.733 247.72 259.826C247.621 259.925 247.501 259.972 247.366 259.972C247.241 259.972 247.126 259.925 247.032 259.826C246.933 259.733 246.886 259.613 246.886 259.472C246.886 259.337 246.933 259.222 247.032 259.139Z" fill="white"/>
<path d="M250.236 261.326V262.18H250.257C250.418 261.878 250.642 261.639 250.924 261.472C251.21 261.295 251.538 261.201 251.903 261.201C252.58 261.201 253.054 261.399 253.319 261.785C253.595 262.175 253.736 262.753 253.736 263.514V266.868H253.194V263.514C253.194 263.238 253.179 263.003 253.153 262.805C253.121 262.613 253.064 262.425 252.986 262.243C252.903 262.066 252.762 261.93 252.569 261.847C252.387 261.753 252.147 261.701 251.861 261.701C250.778 261.701 250.236 262.519 250.236 264.139V266.868H249.694V261.326H250.236Z" fill="white"/>
<path d="M260.387 264.139H255.574C255.559 264.837 255.762 265.404 256.179 265.847C256.606 266.279 257.147 266.493 257.804 266.493C258.215 266.493 258.595 266.383 258.929 266.16C259.272 265.925 259.554 265.613 259.762 265.222L260.22 265.493C259.689 266.493 258.856 266.993 257.72 266.993C256.929 266.993 256.278 266.717 255.783 266.16C255.283 265.592 255.033 264.899 255.033 264.076C255.033 263.29 255.283 262.613 255.783 262.055C256.278 261.488 256.929 261.201 257.72 261.201C258.538 261.201 259.189 261.488 259.679 262.055C260.163 262.628 260.397 263.321 260.387 264.139ZM255.574 263.639H259.845C259.772 263.113 259.543 262.66 259.158 262.285C258.767 261.899 258.293 261.701 257.741 261.701C257.184 261.701 256.694 261.899 256.283 262.285C255.866 262.66 255.626 263.113 255.574 263.639Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_4_115">
<rect width="323.853" height="366.12" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 27 KiB

@@ -0,0 +1,62 @@
<svg width="325" height="364" viewBox="0 0 325 364" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_4_216)">
<mask id="mask0_4_216" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="326" height="364">
<path d="M0 0H325.001V363.999H0V0Z" fill="white"/>
</mask>
<g mask="url(#mask0_4_216)">
<path d="M309.224 79.2331C317.899 84.2353 325.001 96.5065 325.001 106.511V257.488C325.001 267.492 317.899 279.771 309.224 284.773L178.271 360.247C169.596 365.249 155.391 365.249 146.716 360.247L15.7775 284.773C7.10237 279.771 0 267.492 0 257.488V106.511C0 96.5065 7.10237 84.2353 15.7775 79.2331L146.716 3.75169C155.391 -1.25056 169.596 -1.25056 178.271 3.75169" fill="#FF41B4"/>
</g>
<path d="M287.148 93.7353C295.823 98.7376 302.925 111.016 302.925 121.02V246.538C302.925 256.543 295.823 268.821 287.148 273.823L178.271 336.572C169.596 341.574 155.391 341.574 146.716 336.572L37.8532 273.823C29.1781 268.821 22.0757 256.543 22.0757 246.538V121.02C22.0757 111.016 29.1781 98.7376 37.8532 93.7353L146.716 30.987C155.391 25.9847 169.596 25.9847 178.271 30.9798" fill="#CB007C"/>
<path d="M50.093 176.726H76.1683V153.136H85.2775V213.475H76.1683V185.309H50.093V213.475H40.9553V153.136H50.093V176.726Z" fill="white"/>
<path d="M108.941 153.136V189.487C108.941 194.66 109.78 198.454 111.474 200.856C114.015 204.324 117.58 206.057 122.178 206.057C126.782 206.057 130.355 204.324 132.881 200.856C134.582 198.533 135.443 194.738 135.443 189.487V153.136H144.552V191.988C144.552 198.341 142.567 203.57 138.603 207.677C134.141 212.282 128.661 214.584 122.178 214.584C115.666 214.584 110.186 212.282 105.752 207.677C101.781 203.57 99.803 198.341 99.803 191.988V153.136H108.941Z" fill="white"/>
<path d="M50.108 153.045H40.9774V213.477H50.108V185.254H76.2188V213.477H85.3495V153.045H76.2188V176.684H50.108V153.045Z" stroke="white" stroke-width="4" stroke-miterlimit="10"/>
<path d="M99.8531 153.045V191.947C99.8531 198.314 101.839 203.558 105.817 207.686C110.258 212.276 115.73 214.571 122.242 214.571C128.747 214.571 134.233 212.276 138.703 207.686C142.674 203.558 144.659 198.314 144.659 191.947V153.045H135.529V189.418C135.529 194.683 134.675 198.477 132.981 200.801C130.447 204.268 126.868 206.002 122.242 206.002C117.637 206.002 114.072 204.268 111.539 200.801C109.838 198.399 108.991 194.605 108.991 189.418V153.045H99.8531Z" stroke="white" stroke-width="4" stroke-miterlimit="10"/>
<path d="M190.231 182.041H215.196V184.059C215.196 188.592 214.663 192.6 213.602 196.081C212.556 199.322 210.791 202.348 208.307 205.148C202.707 211.458 195.569 214.613 186.901 214.613C178.453 214.613 171.209 211.564 165.181 205.461C159.16 199.343 156.157 192.003 156.157 183.434C156.157 174.687 159.217 167.255 165.352 161.151C171.479 155.033 178.937 151.971 187.726 151.971C192.444 151.971 196.864 152.93 200.963 154.841C204.87 156.774 208.72 159.908 212.52 164.221L206.002 170.445C201.048 163.858 195.006 160.554 187.897 160.554C181.499 160.554 176.133 162.764 171.813 167.176C167.465 171.497 165.295 176.918 165.295 183.434C165.295 190.141 167.714 195.676 172.554 200.032C177.065 204.068 181.955 206.086 187.214 206.086C191.704 206.086 195.739 204.58 199.312 201.567C202.892 198.519 204.899 194.874 205.318 190.624H190.231V182.041Z" fill="white"/>
<path d="M190.291 190.575H205.385C204.965 194.825 202.966 198.463 199.386 201.511C195.806 204.531 191.771 206.037 187.273 206.037C181.993 206.037 177.097 204.019 172.571 199.969C167.738 195.613 165.319 190.071 165.319 183.335C165.319 176.812 167.489 171.391 171.83 167.056C176.164 162.644 181.537 160.441 187.942 160.441C195.073 160.441 201.122 163.745 206.09 170.346L212.601 164.122C208.808 159.802 204.951 156.675 201.037 154.75C196.931 152.831 192.518 151.872 187.786 151.872C178.976 151.872 171.503 154.934 165.361 161.066C159.22 167.17 156.153 174.609 156.153 183.378C156.153 191.961 159.17 199.322 165.205 205.454C171.24 211.558 178.492 214.613 186.96 214.613C195.643 214.613 202.788 211.451 208.403 205.142C210.886 202.321 212.651 199.294 213.697 196.061C214.772 192.565 215.306 188.543 215.306 184.003V182.006H190.291V190.575Z" stroke="white" stroke-width="4" stroke-miterlimit="10"/>
<path d="M225.383 183.036C225.383 174.552 228.493 167.254 234.72 161.151C240.919 155.054 248.391 151.999 257.123 151.999C265.713 151.999 273.1 155.083 279.27 161.236C285.455 167.375 288.55 174.758 288.55 183.377C288.55 192.06 285.44 199.421 279.242 205.461C272.993 211.543 265.457 214.584 256.639 214.584C248.84 214.584 241.83 211.884 235.631 206.484C228.799 200.522 225.383 192.699 225.383 183.036ZM234.578 183.149C234.578 189.821 236.813 195.307 241.296 199.606C245.751 203.912 250.903 206.057 256.753 206.057C263.087 206.057 268.439 203.869 272.808 199.492C277.171 195.065 279.356 189.658 279.356 183.292C279.356 176.875 277.199 171.482 272.894 167.119C268.602 162.75 263.308 160.554 257.009 160.554C250.704 160.554 245.388 162.75 241.068 167.119C236.741 171.44 234.578 176.79 234.578 183.149Z" fill="white"/>
<mask id="mask1_4_216" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="147" y="74" width="179" height="219">
<path d="M147.57 74.5791H325.001V292.859H147.57V74.5791Z" fill="white"/>
</mask>
<g mask="url(#mask1_4_216)">
<path d="M235.645 206.471C241.865 211.871 248.882 214.571 256.696 214.571C265.528 214.571 273.071 211.53 279.32 205.448C285.532 199.401 288.65 192.026 288.65 183.336C288.65 174.703 285.547 167.306 279.355 161.145C273.185 154.985 265.791 151.908 257.166 151.908C248.434 151.908 240.961 154.964 234.748 161.067C228.5 167.171 225.376 174.482 225.376 182.987C225.376 192.665 228.799 200.495 235.645 206.471ZM241.096 167.05C245.43 162.673 250.754 160.484 257.052 160.484C263.371 160.484 268.68 162.673 272.965 167.05C277.277 171.406 279.434 176.799 279.434 183.236C279.434 189.603 277.249 194.996 272.886 199.43C268.524 203.814 263.165 206.002 256.817 206.002C250.96 206.002 245.8 203.849 241.331 199.543C236.833 195.244 234.585 189.759 234.585 183.087C234.585 176.72 236.755 171.377 241.096 167.05Z" stroke="white" stroke-width="4" stroke-miterlimit="10"/>
</g>
<path d="M280.131 236.953C280.131 236.953 276.452 237.046 270.025 237.216C263.592 237.344 254.397 237.692 243.374 237.82C232.343 237.948 219.476 238.239 205.691 238.296C191.906 238.36 177.203 238.431 162.501 238.495C147.798 238.431 133.095 238.36 119.31 238.289C105.525 238.232 92.6582 237.948 81.6274 237.82C70.6038 237.685 61.4092 237.344 54.9758 237.209C48.5423 237.046 44.8702 236.953 44.8702 236.953V236.769H280.131" fill="white"/>
<path d="M44.8702 129.184C44.8702 129.184 48.5495 129.092 54.9829 128.922C61.4163 128.794 70.6038 128.445 81.6274 128.31C92.6582 128.19 105.525 127.891 119.31 127.842C133.095 127.778 147.798 127.707 162.501 127.643C177.203 127.707 191.906 127.778 205.691 127.842C219.476 127.905 232.343 128.19 243.374 128.318C254.397 128.453 263.585 128.794 270.018 128.929C276.452 129.092 280.131 129.184 280.131 129.184V129.362H44.8702" fill="white"/>
<path d="M109.798 261.907H104.361L102.71 265.971H101.913L107.094 253.21L112.246 265.971H111.449L109.798 261.907ZM109.513 261.168L107.094 255.228L104.674 261.168H109.513Z" fill="white"/>
<path d="M123.74 254.375H119.527V258.837H123.626V259.576H119.527V265.971H118.758V253.636H123.74V254.375Z" fill="white"/>
<path d="M128.885 258.922C128.045 258.922 127.341 259.249 126.779 259.889C126.224 260.535 125.953 261.288 125.953 262.134C125.953 263.044 126.224 263.832 126.779 264.493C127.341 265.14 128.067 265.459 128.942 265.459C129.867 265.459 130.6 265.14 131.134 264.493C131.661 263.832 131.931 263.015 131.931 262.049C131.931 261.161 131.639 260.422 131.077 259.832C130.522 259.228 129.789 258.922 128.885 258.922ZM132.614 258.411V265.971H131.874V264.607H131.846C131.575 265.083 131.17 265.466 130.622 265.744C130.088 266.007 129.533 266.142 128.971 266.142C127.832 266.142 126.914 265.765 126.238 265.005C125.555 264.23 125.213 263.271 125.213 262.134C125.213 261.018 125.555 260.088 126.238 259.349C126.914 258.617 127.818 258.24 128.942 258.24C129.526 258.24 130.081 258.375 130.593 258.638C131.098 258.887 131.518 259.249 131.846 259.718H131.874V258.411H132.614Z" fill="white"/>
<path d="M138.978 259.462L138.323 259.775C138.053 259.214 137.605 258.922 136.986 258.922C136.658 258.922 136.366 259.05 136.103 259.292C135.833 259.519 135.705 259.796 135.705 260.116C135.705 260.443 135.826 260.706 136.075 260.912C136.317 261.125 136.623 261.296 136.986 261.423C137.341 261.537 137.704 261.672 138.067 261.821C138.444 261.978 138.758 262.212 139.007 262.532C139.27 262.859 139.405 263.278 139.405 263.782C139.405 264.465 139.163 265.04 138.694 265.488C138.217 265.928 137.633 266.142 136.957 266.142C136.309 266.142 135.747 265.964 135.278 265.601C134.801 265.246 134.488 264.749 134.338 264.124L135.05 263.896C135.37 264.941 136.003 265.459 136.957 265.459C137.405 265.459 137.811 265.303 138.153 264.976C138.487 264.642 138.665 264.23 138.665 263.754C138.665 263.342 138.53 263.029 138.267 262.816C138.017 262.61 137.655 262.418 137.185 262.248C136.822 262.12 136.544 262.013 136.359 261.935C136.188 261.864 135.968 261.736 135.705 261.566C135.455 261.402 135.263 261.196 135.135 260.969C135.021 260.748 134.964 260.478 134.964 260.173C134.964 259.612 135.164 259.143 135.562 258.78C135.975 258.425 136.473 258.24 137.042 258.24C137.42 258.24 137.79 258.361 138.153 258.581C138.53 258.809 138.807 259.107 138.978 259.462Z" fill="white"/>
<path d="M142.11 259.093V265.971H141.369V259.093H140.544V258.411H141.369V255.711H142.11V258.411H143.447V259.093H142.11Z" fill="white"/>
<path d="M153.722 254.147C153.281 254.147 152.911 254.325 152.612 254.659C152.306 255 152.157 255.405 152.157 255.852C152.157 256.066 152.192 256.286 152.27 256.506C152.342 256.719 152.427 256.897 152.527 257.046C152.619 257.181 152.74 257.373 152.897 257.615C153.046 257.842 153.16 258.02 153.238 258.126C153.345 258.034 153.53 257.899 153.779 257.728C154.021 257.565 154.206 257.43 154.32 257.33C154.448 257.224 154.605 257.075 154.775 256.904C154.939 256.719 155.06 256.528 155.117 256.336C155.188 256.13 155.231 255.909 155.231 255.682C155.231 255.249 155.074 254.886 154.775 254.602C154.491 254.303 154.135 254.147 153.722 254.147ZM158.248 265.971L156.683 263.924C155.843 264.628 155.053 265.189 154.32 265.601C153.594 266.013 152.861 266.226 152.128 266.226C151.217 266.226 150.441 265.907 149.822 265.26C149.21 264.621 148.911 263.853 148.911 262.958C148.911 262.546 148.997 262.148 149.168 261.764C149.331 261.373 149.516 261.039 149.708 260.769C149.915 260.507 150.228 260.215 150.648 259.888C151.061 259.554 151.374 259.306 151.587 259.149C151.808 259 152.171 258.773 152.669 258.467C152.626 258.432 152.52 258.311 152.356 258.098C152.199 257.878 152.093 257.721 152.043 257.643C152 257.572 151.915 257.437 151.787 257.245C151.673 257.039 151.594 256.876 151.559 256.762C151.516 256.634 151.466 256.478 151.416 256.307C151.374 256.122 151.36 255.938 151.36 255.767C151.36 255.128 151.594 254.573 152.071 254.119C152.541 253.65 153.11 253.408 153.779 253.408C154.398 253.408 154.932 253.643 155.373 254.09C155.807 254.531 156.028 255.064 156.028 255.682C156.028 256.023 155.964 256.35 155.857 256.648C155.743 256.933 155.551 257.21 155.288 257.473C155.039 257.721 154.797 257.934 154.576 258.098C154.363 258.268 154.071 258.482 153.694 258.723L156.768 262.901L158.334 261.167L158.932 261.508L157.224 263.47L159.102 265.971H158.248ZM153.124 259.093L152.327 259.633C151.929 259.881 151.609 260.094 151.388 260.258C151.16 260.428 150.89 260.663 150.591 260.94C150.285 261.224 150.057 261.53 149.908 261.849C149.751 262.176 149.68 262.517 149.68 262.873C149.68 263.597 149.908 264.216 150.363 264.72C150.833 265.232 151.424 265.487 152.128 265.487C152.576 265.487 153.075 265.36 153.608 265.09C154.156 264.827 154.59 264.571 154.918 264.322C155.252 264.081 155.694 263.74 156.227 263.299L153.124 259.093Z" fill="white"/>
<path d="M177.957 265.971L175.851 255.768H175.822L171.495 266.369L167.197 255.768H167.168L165.062 265.971H164.293L166.941 253.21L171.495 264.437L176.05 253.21L178.697 265.971H177.957Z" fill="white"/>
<path d="M183.328 258.24C184.424 258.24 185.363 258.624 186.146 259.377C186.922 260.137 187.313 261.075 187.313 262.191C187.313 263.314 186.922 264.251 186.146 265.005C185.363 265.765 184.424 266.142 183.328 266.142C182.246 266.142 181.314 265.765 180.538 265.005C179.755 264.23 179.371 263.299 179.371 262.219C179.371 261.125 179.748 260.187 180.51 259.406C181.286 258.631 182.225 258.24 183.328 258.24ZM183.271 258.922C182.374 258.922 181.627 259.249 181.022 259.889C180.41 260.535 180.111 261.317 180.111 262.219C180.111 263.093 180.41 263.854 181.022 264.493C181.627 265.14 182.374 265.459 183.271 265.459C184.196 265.459 184.979 265.147 185.605 264.521C186.246 263.903 186.573 263.129 186.573 262.219C186.573 261.296 186.246 260.514 185.605 259.889C184.979 259.249 184.196 258.922 183.271 258.922Z" fill="white"/>
<path d="M192.069 265.459C192.994 265.459 193.727 265.14 194.261 264.493C194.788 263.832 195.058 263.015 195.058 262.049C195.058 261.161 194.766 260.422 194.204 259.832C193.649 259.228 192.916 258.922 192.012 258.922C191.173 258.922 190.468 259.249 189.906 259.889C189.351 260.535 189.08 261.289 189.08 262.134C189.08 263.044 189.351 263.832 189.906 264.493C190.468 265.14 191.194 265.459 192.069 265.459ZM195.001 265.971V264.607H194.973C194.702 265.083 194.297 265.467 193.749 265.744C193.215 266.007 192.66 266.142 192.098 266.142C190.959 266.142 190.041 265.765 189.365 265.005C188.682 264.23 188.34 263.271 188.34 262.134C188.34 261.019 188.682 260.088 189.365 259.349C190.041 258.617 190.945 258.24 192.069 258.24C192.653 258.24 193.208 258.375 193.72 258.638C194.226 258.887 194.645 259.249 194.973 259.718H195.001V252.471H195.741V265.971H195.001Z" fill="white"/>
<path d="M204.838 262.248H198.262C198.241 263.2 198.519 263.974 199.088 264.578C199.671 265.168 200.412 265.459 201.308 265.459C201.871 265.459 202.39 265.31 202.845 265.005C203.315 264.685 203.699 264.259 203.984 263.726L204.61 264.095C203.885 265.459 202.746 266.142 201.194 266.142C200.113 266.142 199.223 265.765 198.547 265.005C197.864 264.23 197.522 263.285 197.522 262.162C197.522 261.09 197.864 260.166 198.547 259.406C199.223 258.631 200.113 258.24 201.194 258.24C202.312 258.24 203.201 258.631 203.87 259.406C204.532 260.187 204.852 261.132 204.838 262.248ZM198.262 261.566H204.098C203.998 260.848 203.685 260.23 203.159 259.718C202.625 259.192 201.977 258.922 201.223 258.922C200.461 258.922 199.792 259.192 199.23 259.718C198.661 260.23 198.334 260.848 198.262 261.566Z" fill="white"/>
<path d="M207.365 258.411V259.377H207.393C207.728 258.624 208.283 258.24 209.044 258.24C209.308 258.24 209.571 258.304 209.841 258.411L209.443 259.093C209.272 258.986 209.094 258.922 208.93 258.922C208.703 258.922 208.496 258.965 208.333 259.036C208.176 259.114 208.041 259.214 207.934 259.32C207.82 259.42 207.721 259.562 207.649 259.747C207.571 259.938 207.514 260.109 207.479 260.258C207.457 260.393 207.429 260.592 207.393 260.855C207.372 261.104 207.365 261.288 207.365 261.395C207.365 261.509 207.365 261.693 207.365 261.935C207.365 262.013 207.365 262.07 207.365 262.106V265.971H206.625V258.411H207.365Z" fill="white"/>
<path d="M212.054 258.411V259.576H212.083C212.303 259.164 212.609 258.837 212.994 258.61C213.385 258.368 213.833 258.24 214.332 258.24C215.257 258.24 215.904 258.51 216.267 259.036C216.644 259.569 216.837 260.358 216.837 261.395V265.971H216.096V261.395C216.096 261.018 216.075 260.699 216.039 260.429C215.997 260.166 215.919 259.91 215.812 259.661C215.698 259.42 215.506 259.235 215.242 259.121C214.993 258.993 214.666 258.922 214.275 258.922C212.794 258.922 212.054 260.038 212.054 262.248V265.971H211.314V258.411H212.054Z" fill="white"/>
<path d="M95.7198 274.844L95.1789 275.299C94.5527 274.34 93.7129 273.849 92.6739 273.849C92.0049 273.849 91.4427 274.084 90.9944 274.531C90.5532 274.986 90.3397 275.548 90.3397 276.208C90.3397 276.514 90.3966 276.791 90.5105 277.033C90.6172 277.26 90.8093 277.48 91.0798 277.686C91.3573 277.899 91.5922 278.049 91.763 278.141C91.9267 278.219 92.1971 278.347 92.56 278.511L94.9227 279.733C95.8693 280.322 96.3461 281.147 96.3461 282.205C96.3461 283.214 95.9547 284.067 95.1789 284.763C94.3961 285.445 93.4923 285.787 92.4746 285.787C91.6206 285.787 90.8663 285.552 90.2258 285.076C89.5782 284.586 89.1085 283.932 88.8309 283.115L89.5141 282.831C90.0977 284.309 91.094 285.048 92.5031 285.048C93.3144 285.048 94.0261 284.763 94.6381 284.195C95.243 283.634 95.549 282.937 95.549 282.12C95.549 281.878 95.485 281.637 95.3782 281.41C95.2786 281.189 95.1718 281.005 95.0651 280.87C94.9512 280.742 94.7591 280.585 94.4958 280.415C94.2253 280.251 94.0332 280.131 93.9264 280.074C93.8126 280.003 93.5919 279.889 93.2717 279.733C93.1721 279.683 93.0938 279.64 93.044 279.619L90.8236 278.454C89.9696 277.928 89.5426 277.189 89.5426 276.237C89.5426 275.334 89.8344 274.581 90.4251 273.991C91.0086 273.409 91.7701 273.11 92.7024 273.11C93.3215 273.11 93.9122 273.274 94.4673 273.594C95.0153 273.899 95.4351 274.318 95.7198 274.844Z" fill="white"/>
<path d="M99.1171 278.738V285.616H98.377V278.738H97.5515V278.056H98.377V275.355H99.1171V278.056H100.455V278.738H99.1171Z" fill="white"/>
<path d="M104.651 278.567C103.811 278.567 103.106 278.894 102.544 279.533C101.989 280.18 101.718 280.933 101.718 281.779C101.718 282.688 101.989 283.477 102.544 284.138C103.106 284.784 103.832 285.104 104.707 285.104C105.633 285.104 106.366 284.784 106.899 284.138C107.426 283.477 107.696 282.66 107.696 281.693C107.696 280.805 107.405 280.066 106.842 279.476C106.287 278.872 105.554 278.567 104.651 278.567ZM108.38 278.055V285.616H107.64V284.251H107.611C107.341 284.727 106.935 285.111 106.387 285.388C105.853 285.651 105.298 285.786 104.736 285.786C103.597 285.786 102.679 285.409 102.003 284.649C101.32 283.875 100.978 282.915 100.978 281.779C100.978 280.663 101.32 279.732 102.003 278.993C102.679 278.261 103.583 277.885 104.707 277.885C105.291 277.885 105.846 278.02 106.359 278.283C106.864 278.531 107.284 278.894 107.611 279.363H107.64V278.055H108.38Z" fill="white"/>
<path d="M111.726 278.738V285.616H110.986V278.738H110.16V278.056H110.986V275.355H111.726V278.056H113.064V278.738H111.726Z" fill="white"/>
<path d="M115.352 278.055V285.616H114.612V278.055H115.352ZM114.527 275.071C114.655 274.943 114.811 274.872 114.982 274.872C115.167 274.872 115.331 274.943 115.466 275.071C115.594 275.185 115.665 275.341 115.665 275.526C115.665 275.718 115.594 275.881 115.466 276.009C115.331 276.144 115.167 276.208 114.982 276.208C114.811 276.208 114.655 276.144 114.527 276.009C114.392 275.881 114.328 275.718 114.328 275.526C114.328 275.341 114.392 275.185 114.527 275.071Z" fill="white"/>
<path d="M123.971 278.823V279.817C123.231 278.986 122.335 278.567 121.296 278.567C120.42 278.567 119.68 278.894 119.075 279.533C118.463 280.18 118.164 280.94 118.164 281.807C118.164 282.681 118.463 283.448 119.075 284.109C119.68 284.777 120.42 285.104 121.296 285.104C122.413 285.104 123.345 284.649 124.085 283.74V284.734C123.288 285.438 122.363 285.786 121.324 285.786C120.2 285.786 119.267 285.409 118.534 284.649C117.794 283.875 117.424 282.93 117.424 281.807C117.424 280.713 117.794 279.782 118.534 279.022C119.289 278.268 120.228 277.885 121.353 277.885C122.37 277.885 123.246 278.205 123.971 278.823Z" fill="white"/>
<path d="M130.812 273.281L134.285 283.882L138.897 272.655L143.537 283.882L146.953 273.281H147.75L143.565 286.014L138.84 274.616L134.143 286.014L130.015 273.281H130.812Z" fill="white"/>
<path d="M154.779 281.892H148.203C148.182 282.844 148.46 283.619 149.029 284.223C149.612 284.813 150.353 285.104 151.249 285.104C151.811 285.104 152.331 284.955 152.786 284.649C153.256 284.329 153.64 283.903 153.925 283.37L154.551 283.74C153.825 285.104 152.687 285.786 151.135 285.786C150.054 285.786 149.164 285.409 148.488 284.649C147.805 283.875 147.463 282.93 147.463 281.807C147.463 280.734 147.805 279.81 148.488 279.05C149.164 278.276 150.054 277.885 151.135 277.885C152.253 277.885 153.142 278.276 153.811 279.05C154.473 279.832 154.793 280.777 154.779 281.892ZM148.203 281.21H154.039C153.939 280.492 153.626 279.874 153.1 279.363C152.566 278.837 151.918 278.567 151.164 278.567C150.402 278.567 149.733 278.837 149.171 279.363C148.602 279.874 148.274 280.492 148.203 281.21Z" fill="white"/>
<path d="M160.238 285.104C161.142 285.104 161.867 284.784 162.401 284.138C162.949 283.477 163.227 282.688 163.227 281.779C163.227 280.933 162.935 280.18 162.373 279.533C161.818 278.894 161.127 278.567 160.295 278.567C159.362 278.567 158.622 278.887 158.074 279.505C157.541 280.116 157.277 280.883 157.277 281.807C157.277 282.717 157.541 283.498 158.074 284.138C158.622 284.784 159.341 285.104 160.238 285.104ZM156.566 285.616V272.115H157.306V279.363H157.334C157.654 278.894 158.074 278.531 158.587 278.283C159.113 278.02 159.676 277.885 160.266 277.885C161.384 277.885 162.273 278.261 162.942 278.993C163.618 279.732 163.967 280.663 163.967 281.779C163.967 282.916 163.618 283.875 162.942 284.649C162.259 285.41 161.355 285.786 160.238 285.786C159.647 285.786 159.085 285.651 158.558 285.388C158.025 285.111 157.612 284.727 157.334 284.251H157.306V285.616H156.566Z" fill="white"/>
<path d="M169.591 279.107L168.936 279.42C168.666 278.858 168.217 278.567 167.598 278.567C167.271 278.567 166.979 278.695 166.716 278.936C166.445 279.164 166.317 279.441 166.317 279.761C166.317 280.087 166.438 280.35 166.687 280.556C166.929 280.77 167.235 280.94 167.598 281.068C167.954 281.182 168.317 281.317 168.68 281.466C169.057 281.622 169.37 281.857 169.619 282.176C169.882 282.503 170.018 282.923 170.018 283.427C170.018 284.109 169.776 284.685 169.306 285.132C168.829 285.573 168.246 285.786 167.57 285.786C166.922 285.786 166.36 285.608 165.89 285.246C165.413 284.891 165.1 284.393 164.951 283.768L165.662 283.541C165.983 284.585 166.616 285.104 167.57 285.104C168.018 285.104 168.424 284.948 168.765 284.621C169.1 284.287 169.278 283.875 169.278 283.399C169.278 282.986 169.142 282.674 168.879 282.461C168.63 282.255 168.267 282.063 167.797 281.892C167.434 281.764 167.157 281.658 166.972 281.58C166.801 281.509 166.58 281.381 166.317 281.21C166.068 281.047 165.876 280.841 165.748 280.613C165.634 280.393 165.577 280.123 165.577 279.817C165.577 279.256 165.776 278.787 166.175 278.425C166.588 278.07 167.086 277.885 167.655 277.885C168.032 277.885 168.402 278.006 168.765 278.226C169.142 278.453 169.42 278.752 169.591 279.107Z" fill="white"/>
<path d="M172.921 278.055V285.616H172.181V278.055H172.921ZM172.096 275.071C172.224 274.943 172.38 274.872 172.551 274.872C172.736 274.872 172.9 274.943 173.035 275.071C173.163 275.185 173.234 275.341 173.234 275.526C173.234 275.718 173.163 275.881 173.035 276.009C172.9 276.144 172.736 276.208 172.551 276.208C172.38 276.208 172.224 276.144 172.096 276.009C171.961 275.881 171.896 275.718 171.896 275.526C171.896 275.341 171.961 275.185 172.096 275.071Z" fill="white"/>
<path d="M176.559 278.738V285.616H175.819V278.738H174.993V278.056H175.819V275.355H176.559V278.056H177.897V278.738H176.559Z" fill="white"/>
<path d="M185.736 281.892H179.16C179.139 282.844 179.416 283.619 179.986 284.223C180.569 284.813 181.309 285.104 182.206 285.104C182.768 285.104 183.288 284.955 183.743 284.649C184.213 284.329 184.597 283.903 184.882 283.37L185.508 283.74C184.782 285.104 183.644 285.786 182.092 285.786C181.011 285.786 180.121 285.409 179.445 284.649C178.762 283.875 178.42 282.93 178.42 281.807C178.42 280.734 178.762 279.81 179.445 279.05C180.121 278.276 181.011 277.885 182.092 277.885C183.21 277.885 184.099 278.276 184.768 279.05C185.43 279.832 185.75 280.777 185.736 281.892ZM179.16 281.21H184.996C184.896 280.492 184.583 279.874 184.056 279.363C183.523 278.837 182.875 278.567 182.121 278.567C181.359 278.567 180.69 278.837 180.128 279.363C179.559 279.874 179.231 280.492 179.16 281.21Z" fill="white"/>
<path d="M198.255 274.02H193.131V278.482H198.113V279.221H193.131V284.877H198.255V285.616H192.363V273.281H198.255V274.02Z" fill="white"/>
<path d="M201.331 278.056V279.222H201.359C201.58 278.809 201.886 278.483 202.27 278.255C202.661 278.014 203.11 277.886 203.608 277.886C204.533 277.886 205.181 278.156 205.544 278.682C205.921 279.214 206.113 280.003 206.113 281.041V285.616H205.373V281.041C205.373 280.664 205.352 280.344 205.316 280.074C205.273 279.811 205.195 279.556 205.088 279.307C204.974 279.065 204.782 278.881 204.519 278.767C204.27 278.639 203.942 278.568 203.551 278.568C202.071 278.568 201.331 279.683 201.331 281.893V285.616H200.591V278.056H201.331Z" fill="white"/>
<path d="M211.671 278.568C210.831 278.568 210.126 278.895 209.564 279.534C209.009 280.181 208.739 280.934 208.739 281.78C208.739 282.689 209.009 283.478 209.564 284.139C210.126 284.785 210.852 285.105 211.728 285.105C212.653 285.105 213.386 284.785 213.92 284.139C214.446 283.478 214.717 282.661 214.717 281.694C214.717 280.806 214.425 280.067 213.863 279.477C213.308 278.873 212.575 278.568 211.671 278.568ZM215.4 278.056V285.247C215.4 285.737 215.386 286.128 215.371 286.412C215.35 286.689 215.279 287.023 215.172 287.407C215.058 287.798 214.88 288.153 214.66 288.459C213.934 289.418 212.93 289.908 211.642 289.908C210.618 289.908 209.742 289.61 209.023 289.027C208.319 288.459 207.935 287.67 207.885 286.668H208.625C208.675 287.443 208.981 288.061 209.536 288.516C210.098 288.984 210.774 289.226 211.557 289.226C212.653 289.226 213.471 288.849 214.005 288.118C214.439 287.45 214.66 286.49 214.66 285.247V284.309H214.631C214.29 284.764 213.848 285.126 213.322 285.389C212.788 285.652 212.233 285.787 211.671 285.787C210.603 285.787 209.721 285.403 209.023 284.622C208.34 283.847 207.999 282.909 207.999 281.808C207.999 280.714 208.347 279.783 209.052 279.023C209.771 278.269 210.682 277.886 211.785 277.886C212.959 277.886 213.905 278.383 214.631 279.364H214.66V278.056H215.4Z" fill="white"/>
<path d="M218.947 278.056V285.617H218.206V278.056H218.947ZM218.121 275.072C218.249 274.944 218.406 274.873 218.577 274.873C218.762 274.873 218.925 274.944 219.06 275.072C219.189 275.186 219.26 275.342 219.26 275.527C219.26 275.719 219.189 275.882 219.06 276.01C218.925 276.145 218.762 276.209 218.577 276.209C218.406 276.209 218.249 276.145 218.121 276.01C217.986 275.882 217.922 275.719 217.922 275.527C217.922 275.342 217.986 275.186 218.121 275.072Z" fill="white"/>
<path d="M222.499 278.056V279.222H222.527C222.748 278.809 223.054 278.483 223.438 278.255C223.83 278.014 224.278 277.886 224.776 277.886C225.701 277.886 226.349 278.156 226.712 278.682C227.089 279.214 227.281 280.003 227.281 281.041V285.616H226.541V281.041C226.541 280.664 226.52 280.344 226.484 280.074C226.441 279.811 226.363 279.556 226.256 279.307C226.142 279.065 225.95 278.881 225.687 278.767C225.438 278.639 225.111 278.568 224.719 278.568C223.239 278.568 222.499 279.683 222.499 281.893V285.616H221.759V278.056H222.499Z" fill="white"/>
<path d="M236.369 281.893H229.793C229.772 282.845 230.049 283.62 230.619 284.224C231.202 284.814 231.942 285.105 232.839 285.105C233.401 285.105 233.921 284.956 234.376 284.65C234.846 284.33 235.23 283.904 235.515 283.371L236.141 283.741C235.415 285.105 234.276 285.787 232.725 285.787C231.643 285.787 230.754 285.41 230.078 284.65C229.394 283.876 229.053 282.931 229.053 281.808C229.053 280.735 229.394 279.811 230.078 279.051C230.754 278.277 231.643 277.886 232.725 277.886C233.842 277.886 234.732 278.277 235.401 279.051C236.063 279.833 236.383 280.778 236.369 281.893ZM229.793 281.211H235.629C235.529 280.493 235.216 279.875 234.689 279.364C234.155 278.838 233.508 278.568 232.753 278.568C231.992 278.568 231.323 278.838 230.761 279.364C230.192 279.875 229.864 280.493 229.793 281.211Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_4_216">
<rect width="325" height="364" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 27 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 5.6 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 6.7 KiB

+1 -1
View File
@@ -1 +1 @@
# github.com/gohugoio/gohugoioTheme v0.0.0-20220228085601-7cfbda06d135
# github.com/gohugoio/gohugoioTheme v0.0.0-20230124135550-462d5fe4a87f
-4
View File
@@ -1,16 +1,12 @@
---
linktitle: ""
description: ""
publishdate: ""
lastmod: ""
categories: [functions]
tags: []
ns: ""
signature: []
workson: []
hugoversion: ""
aliases: []
relatedfuncs: []
toc: false
deprecated: false
---
-80
View File
@@ -1,80 +0,0 @@
baseURL = "https://gohugo.io/"
paginate = 100
defaultContentLanguage = "en"
enableEmoji = true
timeZone = "Europe/Oslo"
# Set the unicode character used for the "return" link in page footnotes.
footnotereturnlinkcontents = "↩"
languageCode = "en-us"
title = "Hugo"
ignoreErrors = ["error-remote-getjson", "error-missing-instagram-accesstoken"]
googleAnalytics = "UA-7131036-4"
pluralizeListTitles = false
# We do redirects via Netlify's _redirects file, generated by Hugo (see "outputs" below).
disableAliases = true
[minify]
[minify.tdewolff]
[minify.tdewolff.css]
[minify.tdewolff.html]
keepWhitespace = true
[module]
[module.hugoVersion]
min = "0.56.0"
[[module.imports]]
path = "github.com/gohugoio/gohugoioTheme"
[outputs]
home = [ "HTML", "RSS", "REDIR", "HEADERS" ]
section = [ "HTML", "RSS"]
[mediaTypes]
[mediaTypes."text/netlify"]
delimiter = ""
[outputFormats]
[outputFormats.REDIR]
mediatype = "text/netlify"
baseName = "_redirects"
isPlainText = true
notAlternative = true
[outputFormats.HEADERS]
mediatype = "text/netlify"
baseName = "_headers"
isPlainText = true
notAlternative = true
[related]
threshold = 80
includeNewer = true
toLower = false
[[related.indices]]
name = "keywords"
weight = 100
[[related.indices]]
name = "date"
weight = 10
pattern = "2006"
[social]
twitter = "GoHugoIO"
[imaging]
# See https://github.com/disintegration/imaging
# CatmullRom is a sharp bicubic filter which should fit the docs site well with its many screenshots.
# Note that you can also set this per image processing.
resampleFilter = "CatmullRom"
# Default JPEG quality setting. Default is 75.
quality = 75
anchor = "smart"
-91
View File
@@ -1,91 +0,0 @@
baseURL = "https://gohugo.io/"
paginate = 100
defaultContentLanguage = "en"
enableEmoji = true
# Set the unicode character used for the "return" link in page footnotes.
footnotereturnlinkcontents = "↩"
languageCode = "en-us"
title = "Hugo"
googleAnalytics = "UA-7131036-4"
pluralizeListTitles = false
# We do redirects via Netlify's _redirects file, generated by Hugo (see "outputs" below).
disableAliases = true
[outputs]
home = [ "HTML", "RSS", "REDIR", "HEADERS" ]
section = [ "HTML", "RSS"]
[mediaTypes]
[mediaTypes."text/netlify"]
delimiter = ""
[outputFormats]
[outputFormats.REDIR]
mediatype = "text/netlify"
baseName = "_redirects"
isPlainText = true
notAlternative = true
[outputFormats.HEADERS]
mediatype = "text/netlify"
baseName = "_headers"
isPlainText = true
notAlternative = true
[caches]
[caches.getjson]
dir = ":cacheDir/:project"
maxAge = -1
[caches.getcsv]
dir = ":cacheDir/:project"
maxAge = -1
[caches.images]
dir = ":cacheDir/images"
maxAge = "1440h"
[caches.assets]
dir = ":resourceDir/_gen"
maxAge = -1
[related]
threshold = 80
includeNewer = true
toLower = false
[[related.indices]]
name = "keywords"
weight = 100
[[related.indices]]
name = "date"
weight = 10
pattern = "2006"
[social]
twitter = "GoHugoIO"
# MARKDOWN
## Configuration for BlackFriday markdown parser: https://github.com/russross/blackfriday
[blackfriday]
plainIDAnchors = true
# See https://github.com/gohugoio/hugo/issues/2424
hrefTargetBlank = false
angledQuotes = false
latexDashes = true
[imaging]
# See https://github.com/disintegration/imaging
# CatmullRom is a sharp bicubic filter which should fit the docs site well with its many screenshots.
# Note that you can also set this per image processing.
resampleFilter = "CatmullRom"
# Default JPEG quality setting. Default is 75.
quality = 75
anchor = "smart"
[taxonomies]
category = "categories"
+4 -10
View File
@@ -1,10 +1,4 @@
[en]
contentDir = "content/en"
languageName = "English"
weight = 1
[zh]
contentDir = "content/zh"
languageName = "中文"
weight = 2
[en]
contentDir = "content/en"
languageName = "English"
weight = 1

Some files were not shown because too many files have changed in this diff Show More