Add Snapcraft metadata and install/maintenance hooks (#666)
* Add Snapcraft metadata and install/maintenance hooks * Move set-environment script into snap/local * snap: Remove diesel-cli part. This *was* necessary as of 0.3.0, but now `plm migrations run` does the job. * snap: Add an actual description * snap: Add an 'enabled' config item. Don't try to run until enabled is set, and automatically run the migrations when we are enabled
This commit is contained in:
parent
309e1200d0
commit
b5eecbf2e7
48
snap/hooks/configure
vendored
Normal file
48
snap/hooks/configure
vendored
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
db_type="$(snapctl get db.type)"
|
||||||
|
db_url="$(snapctl get db.url)"
|
||||||
|
if [ "${db_type}" = "sqlite" ]
|
||||||
|
then
|
||||||
|
if [ -n "${db_url}" ]
|
||||||
|
then
|
||||||
|
echo "sqlite backend does not use db.url key"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
elif [ "${db_type}" = "postgres" ]
|
||||||
|
then
|
||||||
|
if [ -z "${db_url}" ]
|
||||||
|
then
|
||||||
|
echo "postgres backend requires db.url to be set"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
elif [ -n "${db_type}" ]
|
||||||
|
then
|
||||||
|
echo "Invalid db.type: " ${db_type}
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
base_url="$(snapctl get base-url)"
|
||||||
|
enabled="$(snapctl get enabled)"
|
||||||
|
|
||||||
|
if [ -n ${enabled} -a \( "${enabled}" != "true" -a "${enabled}" != "false" \) ]
|
||||||
|
then
|
||||||
|
echo "Invalid 'enabled' setting: ${enabled}. Valid values are 'true' or 'false'"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n ${base_url} -a \( -z "${enabled}" -o "${enabled}" = "false" \) ]
|
||||||
|
then
|
||||||
|
echo "All required configuration available."
|
||||||
|
echo "Plume can now be enabled by setting 'snap set plume enabled=true' and restarting the service \
|
||||||
|
with 'snap restart plume'"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${enabled}" = "true" -a ! -e ${SNAP_COMMON}/initial-migrations-run ]
|
||||||
|
then
|
||||||
|
cd ${SNAP}
|
||||||
|
exec ./set-environment bin/plm migration run --path ${SNAP_DATA}
|
||||||
|
touch ${SNAP_COMMON}/initial-migrations-run
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 0
|
3
snap/hooks/install
Executable file
3
snap/hooks/install
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
openssl rand -base64 32 > ${SNAP_COMMON}/rocket-secret-key
|
11
snap/hooks/post-refresh
Normal file
11
snap/hooks/post-refresh
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
db_type=$(snapctl get db.type)
|
||||||
|
|
||||||
|
if [ -z "${db_type}" ]
|
||||||
|
then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd ${SNAP}
|
||||||
|
exec ./set-environment bin/plm migration run --path ${SNAP_DATA}
|
29
snap/local/set-environment
Executable file
29
snap/local/set-environment
Executable file
@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
enabled="$(snapctl get enabled)"
|
||||||
|
if [ -z "${enabled}" -o "${enabled}" != "true" ]
|
||||||
|
then
|
||||||
|
echo "Plume not yet enabled"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
export BASE_URL="$(snapctl get base-url)"
|
||||||
|
database_type="$(snapctl get db.type)"
|
||||||
|
|
||||||
|
if [ z"${database_type}" = z"sqlite" ]
|
||||||
|
then
|
||||||
|
export DATABASE_URL=${SNAP_DATA}/plume.db
|
||||||
|
export MIGRATION_DIR=migrations/sqlite
|
||||||
|
else
|
||||||
|
# Must be postgres, so must have set db.url
|
||||||
|
export DATABASE_URL="$(snapctl get db.url)"
|
||||||
|
export MIGRATION_DIRECTORY=migrations/postgres
|
||||||
|
fi
|
||||||
|
|
||||||
|
ROCKET_ADDRESS="$(snapctl get listen.address)"
|
||||||
|
ROCKET_PORT="$(snapctl get listen.port)"
|
||||||
|
export ROCKET_SECRET_KEY="$(cat ${SNAP_COMMON}/rocket-secret-key)"
|
||||||
|
export SEARCH_INDEX="${SNAP_DATA}/search_index"
|
||||||
|
|
||||||
|
cd ${SNAP}
|
||||||
|
exec $@
|
50
snap/snapcraft.yaml
Normal file
50
snap/snapcraft.yaml
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
name: plume
|
||||||
|
base: core18
|
||||||
|
version: '0.3.0' # just for humans, typically '1.2+git' or '1.3.2'
|
||||||
|
summary: Multi-user blogging platform, federated over ActivityPub
|
||||||
|
description: |
|
||||||
|
Plume is a federated blogging platform, featuring:
|
||||||
|
* A blog-centric approach: you can create as much blogs as you want with your account, to keep your different publications separated.
|
||||||
|
* Media management: you can upload pictures to illustrate your articles, but also audio files if you host a podcast, and manage them all from Plume.
|
||||||
|
* Federation: Plume is part of a network of interconnected websites called the Fediverse. Each of these websites (often called instances) have their own rules and thematics, but they can all communicate with each other.
|
||||||
|
* Collaborative writing: invite other people to your blogs, and write articles together.
|
||||||
|
grade: devel # must be 'stable' to release into candidate/stable channels
|
||||||
|
confinement: strict
|
||||||
|
|
||||||
|
apps:
|
||||||
|
plume:
|
||||||
|
daemon: simple
|
||||||
|
command: set-environment bin/plume
|
||||||
|
plugs:
|
||||||
|
- network
|
||||||
|
- network-bind
|
||||||
|
plm:
|
||||||
|
command: set-environment bin/plm
|
||||||
|
|
||||||
|
parts:
|
||||||
|
plume:
|
||||||
|
plugin: rust
|
||||||
|
source: .
|
||||||
|
rust-revision: nightly-2019-03-23
|
||||||
|
build-packages:
|
||||||
|
- libssl-dev
|
||||||
|
- pkg-config
|
||||||
|
- libsqlite3-dev
|
||||||
|
- gettext
|
||||||
|
after:
|
||||||
|
- cargo-web
|
||||||
|
override-build: |
|
||||||
|
export PATH=$PATH:$SNAPCRAFT_PROJECT_DIR/../.cargo/bin
|
||||||
|
cargo web deploy -p plume-front --release
|
||||||
|
cargo install --force --no-default-features --features sqlite --path . --root ${SNAPCRAFT_PART_INSTALL}
|
||||||
|
cargo install --force --no-default-features --features sqlite --path plume-cli --root ${SNAPCRAFT_PART_INSTALL}
|
||||||
|
cp -a assets migrations static target translations ${SNAPCRAFT_PART_INSTALL}
|
||||||
|
cp snap/local/set-environment ${SNAPCRAFT_PART_INSTALL}
|
||||||
|
stage-packages:
|
||||||
|
- openssl
|
||||||
|
- libsqlite3-0
|
||||||
|
|
||||||
|
cargo-web:
|
||||||
|
plugin: rust
|
||||||
|
source: https://github.com/koute/cargo-web.git
|
||||||
|
source-tag: 0.6.26
|
Loading…
Reference in New Issue
Block a user