mirror of
https://github.com/gohugoio/hugo.git
synced 2024-12-01 04:51:31 -05:00
d24ffdde5b
Closes #12219
219 lines
6.6 KiB
YAML
219 lines
6.6 KiB
YAML
name: hugo
|
|
base: core22
|
|
confinement: strict
|
|
adopt-info: hugo
|
|
title: Hugo
|
|
icon: snap/local/logo.png
|
|
summary: Fast and Flexible Static Site Generator
|
|
description: |
|
|
Hugo is a static site generator written in Go, optimized for speed and
|
|
designed for flexibility. With its advanced templating system and fast asset
|
|
pipelines, Hugo renders a complete site in seconds, often less.
|
|
|
|
Due to its flexible framework, multilingual support, and powerful taxonomy
|
|
system, Hugo is widely used to create:
|
|
|
|
* Corporate, government, nonprofit, education, news, event, and project sites
|
|
* Documentation sites
|
|
* Image portfolios
|
|
* Landing pages
|
|
* Business, professional, and personal blogs
|
|
* Resumes and CVs
|
|
|
|
Use Hugo's embedded web server during development to instantly see changes to
|
|
content, structure, behavior, and presentation. Then deploy the site to your
|
|
host, or push changes to your Git provider for automated builds and
|
|
deployment.
|
|
issues: https://github.com/gohugoio/hugo/issues
|
|
license: "Apache-2.0"
|
|
source-code: https://github.com/gohugoio/hugo.git
|
|
website: https://gohugo.io/
|
|
|
|
package-repositories:
|
|
- type: apt
|
|
components: [main]
|
|
suites: [focal]
|
|
key-id: 9FD3B784BC1C6FC31A8A0A1C1655A0AB68576280
|
|
url: https://deb.nodesource.com/node_16.x
|
|
|
|
plugs:
|
|
etc-gitconfig:
|
|
interface: system-files
|
|
read:
|
|
- /etc/gitconfig
|
|
gitconfig:
|
|
interface: personal-files
|
|
read:
|
|
- $HOME/.gitconfig
|
|
- $HOME/.config/git
|
|
- $HOME/.gitconfig.local
|
|
dot-aws:
|
|
interface: personal-files
|
|
read:
|
|
- $HOME/.aws
|
|
dot-azure:
|
|
interface: personal-files
|
|
read:
|
|
- $HOME/.azure
|
|
dot-config-gcloud:
|
|
interface: personal-files
|
|
read:
|
|
- $HOME/.config/gcloud
|
|
dot-cache-hugo:
|
|
interface: personal-files
|
|
write:
|
|
- $HOME/.cache/hugo_cache
|
|
ssh-keys:
|
|
interface: ssh-keys
|
|
|
|
environment:
|
|
HOME: $SNAP_REAL_HOME
|
|
GIT_EXEC_PATH: $SNAP/usr/lib/git-core
|
|
GOCACHE: $SNAP_USER_DATA/.cache/go-build
|
|
npm_config_cache: $SNAP_USER_DATA/.npm
|
|
npm_config_init_module: $SNAP_USER_DATA/.npm-init.js
|
|
npm_config_userconfig: $SNAP_USER_DATA/.npmrc
|
|
pandoc_datadir: $SNAP/usr/share/pandoc
|
|
PYTHONHOME: /usr:$SNAP/usr
|
|
RUBYLIB: $SNAP/usr/lib/ruby/vendor_ruby/3.0.0:$SNAP/usr/lib/$CRAFT_ARCH_TRIPLET/ruby/vendor_ruby/3.0.0:$SNAP/usr/lib/ruby/vendor_ruby:$SNAP/usr/lib/ruby/3.0.0:$SNAP/usr/lib/$CRAFT_ARCH_TRIPLET/ruby/3.0.0
|
|
|
|
# HUGO_SECURITY_EXEC_OSENV
|
|
#
|
|
# Default value:
|
|
# (?i)^((HTTPS?|NO)_PROXY|PATH(EXT)?|APPDATA|TE?MP|TERM|GO\w+|(XDG_CONFIG_)?HOME|USERPROFILE|SSH_AUTH_SOCK|DISPLAY|LANG|SYSTEMDRIVE)$
|
|
# Bundled applications require additional access:
|
|
# git: GIT_EXEC_PATH and LD_LIBRARY_PATH
|
|
# npx: npm_config_{cache,init_module,userconfig}
|
|
# pandoc: pandoc_datadir
|
|
# rst2html: PYTHONHOME and SNAP
|
|
# asciidoctor: RUBYLIB
|
|
HUGO_SECURITY_EXEC_OSENV: (?i)^((HTTPS?|NO)_PROXY|PATH(EXT)?|APPDATA|TE?MP|TERM|GO\w+|(XDG_CONFIG_)?HOME|USERPROFILE|SSH_AUTH_SOCK|DISPLAY|LANG|SYSTEMDRIVE|GIT_EXEC_PATH|LD_LIBRARY_PATH|npm_config_(cache|init_module|userconfig)|pandoc_datadir|PYTHONHOME|SNAP|RUBYLIB)$
|
|
apps:
|
|
hugo:
|
|
command: bin/hugo
|
|
completer: hugo-completion
|
|
plugs:
|
|
- home
|
|
- network-bind
|
|
- removable-media
|
|
- etc-gitconfig
|
|
- gitconfig
|
|
- dot-aws
|
|
- dot-azure
|
|
- dot-config-gcloud
|
|
- dot-cache-hugo
|
|
- ssh-keys
|
|
|
|
parts:
|
|
git:
|
|
plugin: nil
|
|
stage-packages:
|
|
- git
|
|
prime:
|
|
- usr/bin/git
|
|
- usr/lib
|
|
|
|
go:
|
|
plugin: nil
|
|
stage-snaps:
|
|
- go/1.22/stable
|
|
prime:
|
|
- bin/go
|
|
- pkg/tool
|
|
- -pkg/tool/*
|
|
|
|
hugo:
|
|
plugin: nil
|
|
source: .
|
|
after:
|
|
- git
|
|
- go
|
|
override-pull: |
|
|
craftctl default
|
|
craftctl set version=$(git describe --tags --always --match 'v[0-9]*' | sed 's/^v//; s/-/+git/; s/-g/./')
|
|
if grep -q 'Suffix:\s*""' common/hugo/version_current.go; then
|
|
craftctl set grade=stable
|
|
else
|
|
craftctl set grade=devel
|
|
fi
|
|
override-build: |
|
|
echo "\nStarting override-build:"
|
|
set -ex
|
|
|
|
export GOPATH=$(realpath ../go)
|
|
export PATH=$GOPATH/bin:$PATH
|
|
|
|
HUGO_BUILD_TAGS="extended"
|
|
echo " * Building hugo (HUGO_BUILD_TAGS=\"$HUGO_BUILD_TAGS\")..."
|
|
go build -v -ldflags "-X github.com/gohugoio/hugo/common/hugo.vendorInfo=snap:$(git describe --tags --always --match 'v[0-9]*' | sed 's/^v//; s/-/+git/; s/-g/./')" -tags "$HUGO_BUILD_TAGS"
|
|
./hugo version
|
|
ldd hugo || :
|
|
|
|
echo " * Building shell completion..."
|
|
./hugo completion bash > hugo-completion
|
|
|
|
echo " * Installing to ${CRAFT_PART_INSTALL}..."
|
|
install -d $CRAFT_PART_INSTALL/bin
|
|
cp -av hugo $CRAFT_PART_INSTALL/bin/
|
|
mv -v hugo-completion $CRAFT_PART_INSTALL/
|
|
|
|
echo " * Stripping binary..."
|
|
ls -l $CRAFT_PART_INSTALL/bin/hugo
|
|
strip --remove-section=.comment --remove-section=.note $CRAFT_PART_INSTALL/bin/hugo
|
|
ls -l $CRAFT_PART_INSTALL/bin/hugo
|
|
|
|
asciidoctor:
|
|
plugin: nil
|
|
stage-packages:
|
|
- asciidoctor
|
|
override-build: |
|
|
set -ex
|
|
craftctl default
|
|
sed -i '1s|#!/usr/bin/ruby|#!/usr/bin/env ruby|' $CRAFT_PART_INSTALL/usr/bin/asciidoctor
|
|
# don't try and flock() gemspecs since this is blocked by AppArmor - see
|
|
# https://github.com/rubygems/rubygems/pull/5278 in particular
|
|
# https://github.com/rubygems/rubygems/pull/5278/commits/27b682c81226838b1254ac5843a3f5b1cb20f076
|
|
sed -i 's|!solaris_platform|win_platform|' $CRAFT_PART_INSTALL/usr/lib/ruby/vendor_ruby/rubygems.rb
|
|
|
|
dart-sass:
|
|
plugin: nil
|
|
build-packages:
|
|
- curl
|
|
override-build: |
|
|
set -ex
|
|
craftctl default
|
|
case "$CRAFT_TARGET_ARCH" in
|
|
amd64) arch=x64 ;;
|
|
arm64) arch=arm64 ;;
|
|
armhf) arch=arm ;;
|
|
i386) arch=ia32 ;;
|
|
*) arch="" ;;
|
|
esac
|
|
if [[ -n $arch ]]; then
|
|
url=$(curl -s https://api.github.com/repos/sass/dart-sass/releases/latest | awk -F\" "/browser_download_url.*-linux-${arch}.tar.gz/{print \$(NF-1)}")
|
|
curl -LO --retry-connrefused --retry 10 "${url}"
|
|
tar xf dart-sass-*-linux-${arch}.tar.gz
|
|
install -d $CRAFT_PART_INSTALL/bin
|
|
cp -av dart-sass/* $CRAFT_PART_INSTALL/bin/
|
|
fi
|
|
|
|
node:
|
|
plugin: nil
|
|
stage-packages:
|
|
- nodejs
|
|
|
|
pandoc:
|
|
plugin: nil
|
|
stage-packages:
|
|
- pandoc
|
|
|
|
rst2html:
|
|
plugin: nil
|
|
stage-packages:
|
|
- python3-docutils
|
|
override-build: |
|
|
set -ex
|
|
craftctl default
|
|
sed -i "s|'/usr/share/docutils/'|os.path.expandvars('\$SNAP/usr/share/docutils/')|" $CRAFT_PART_INSTALL/usr/lib/python3/dist-packages/docutils/__init__.py
|
|
organize:
|
|
usr/share/docutils/scripts/python3: usr/bin
|