Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
O
ots-blog
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
ots
ots-blog
Commits
30b7a21d
Commit
30b7a21d
authored
1 year ago
by
James Vasile
Browse files
Options
Downloads
Patches
Plain Diff
Add config and tasks
parent
c1169e30
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
site/pelicanconf.py
+50
-0
50 additions, 0 deletions
site/pelicanconf.py
site/publishconf.py
+21
-0
21 additions, 0 deletions
site/publishconf.py
site/tasks.py
+138
-0
138 additions, 0 deletions
site/tasks.py
with
209 additions
and
0 deletions
site/pelicanconf.py
0 → 100644
+
50
−
0
View file @
30b7a21d
AUTHOR
=
'
James Vasile and Karl Fogel
'
SITENAME
=
'
OTS Blog
'
SITEURL
=
'
https://blog.opentechstrategies.com
'
PATH
=
'
content
'
TIMEZONE
=
'
America/New_York
'
DEFAULT_LANG
=
'
en
'
FEED_DOMAIN
=
SITEURL
AUTHOR_FEED_ATOM
=
'
feeds/{slug}.author.atom.xml
'
AUTHOR_FEED_RSS
=
'
feeds/{slug}.author.rss
'
FEED_ALL_ATOM
=
'
feeds/all.atom.xml
'
FEED_ALL_RSS
=
'
feeds/all.rss
'
TAG_FEED_ATOM
=
'
feeds/{slug}.tag.atom.xml
'
TAG_FEED_RSS
=
'
feeds/{slug}.tag.rss
'
CATEGORY_FEED_ATOM
=
'
feeds/{slug}.atom.xml
'
CATEGORY_FEED_RSS
=
'
feeds/{slug}.rss
'
TRANSLATION_FEED_ATOM
=
None
# we only post in english and no translations
THEME
=
"
themes/ots
"
ARTICLE_URL
=
'
{date:%Y}/{date:%m}/{slug}/
'
ARTICLE_SAVE_AS
=
ARTICLE_URL
+
'
index.html
'
PAGE_URL
=
"
pages/{slug}/
"
PAGE_SAVE_AS
=
PAGE_URL
+
'
index.html
'
YEAR_ARCHIVE_SAVE_AS
=
'
{date:%Y}/index.html
'
MONTH_ARCHIVE_SAVE_AS
=
'
{date:%Y}/{date:%b}/index.html
'
DAY_ARCHIVE_SAVE_AS
=
'
{date:%Y}/{date:%b}/{date:%d}/index.html
'
STATIC_PATHS
=
[
'
uploads
'
]
PAGE_PATHS
=
[
'
pages
'
]
# Blogroll
LINKS
=
((
'
Pelican
'
,
'
https://getpelican.com/
'
),
(
'
Python.org
'
,
'
https://www.python.org/
'
),
(
'
Jinja2
'
,
'
https://palletsprojects.com/p/jinja/
'
),
(
'
You can modify those links in your config file
'
,
'
#
'
),)
# Social widget
SOCIAL
=
((
'
You can add links in your config file
'
,
'
#
'
),
(
'
Another social link
'
,
'
#
'
),)
DEFAULT_PAGINATION
=
5
RECENT_ARTICLES
=
5
PLUGINS
=
[]
# Uncomment following line if you want document-relative URLs when developing
#RELATIVE_URLS = True
This diff is collapsed.
Click to expand it.
site/publishconf.py
0 → 100644
+
21
−
0
View file @
30b7a21d
# This file is only used if you use `make publish` or
# explicitly specify it as your config file.
import
os
import
sys
sys
.
path
.
append
(
os
.
curdir
)
from
pelicanconf
import
*
# If your site is available via HTTPS, make sure SITEURL begins with https://
SITEURL
=
'
https://blog.opentechstrategies.com
'
RELATIVE_URLS
=
False
FEED_ALL_ATOM
=
'
feeds/all.atom.xml
'
CATEGORY_FEED_ATOM
=
'
feeds/{slug}.atom.xml
'
DELETE_OUTPUT_DIRECTORY
=
True
# Following items are often useful when publishing
#DISQUS_SITENAME = ""
#GOOGLE_ANALYTICS = ""
\ No newline at end of file
This diff is collapsed.
Click to expand it.
site/tasks.py
0 → 100644
+
138
−
0
View file @
30b7a21d
# -*- coding: utf-8 -*-
import
os
import
shlex
import
shutil
import
sys
import
datetime
from
invoke
import
task
from
invoke.main
import
program
from
invoke.util
import
cd
from
pelican
import
main
as
pelican_main
from
pelican.server
import
ComplexHTTPRequestHandler
,
RootedHTTPServer
from
pelican.settings
import
DEFAULT_CONFIG
,
get_settings_from_file
OPEN_BROWSER_ON_SERVE
=
True
SETTINGS_FILE_BASE
=
'
pelicanconf.py
'
SETTINGS
=
{}
SETTINGS
.
update
(
DEFAULT_CONFIG
)
LOCAL_SETTINGS
=
get_settings_from_file
(
SETTINGS_FILE_BASE
)
SETTINGS
.
update
(
LOCAL_SETTINGS
)
CONFIG
=
{
'
settings_base
'
:
SETTINGS_FILE_BASE
,
'
settings_publish
'
:
'
publishconf.py
'
,
# Output path. Can be absolute or relative to tasks.py. Default: 'output'
'
deploy_path
'
:
SETTINGS
[
'
OUTPUT_PATH
'
],
# Host and port for `serve`
'
host
'
:
'
localhost
'
,
'
port
'
:
8000
,
}
@task
def
clean
(
c
):
"""
Remove generated files
"""
if
os
.
path
.
isdir
(
CONFIG
[
'
deploy_path
'
]):
shutil
.
rmtree
(
CONFIG
[
'
deploy_path
'
])
os
.
makedirs
(
CONFIG
[
'
deploy_path
'
])
@task
def
build
(
c
):
"""
Build local version of site
"""
pelican_run
(
'
-s {settings_base}
'
.
format
(
**
CONFIG
))
@task
def
rebuild
(
c
):
"""
`build` with the delete switch
"""
pelican_run
(
'
-d -s {settings_base}
'
.
format
(
**
CONFIG
))
@task
def
regenerate
(
c
):
"""
Automatically regenerate site upon file modification
"""
pelican_run
(
'
-r -s {settings_base}
'
.
format
(
**
CONFIG
))
@task
def
serve
(
c
):
"""
Serve site at http://$HOST:$PORT/ (default is localhost:8000)
"""
class
AddressReuseTCPServer
(
RootedHTTPServer
):
allow_reuse_address
=
True
server
=
AddressReuseTCPServer
(
CONFIG
[
'
deploy_path
'
],
(
CONFIG
[
'
host
'
],
CONFIG
[
'
port
'
]),
ComplexHTTPRequestHandler
)
if
OPEN_BROWSER_ON_SERVE
:
# Open site in default browser
import
webbrowser
webbrowser
.
open
(
"
http://{host}:{port}
"
.
format
(
**
CONFIG
))
sys
.
stderr
.
write
(
'
Serving at {host}:{port} ...
\n
'
.
format
(
**
CONFIG
))
server
.
serve_forever
()
@task
def
reserve
(
c
):
"""
`build`, then `serve`
"""
build
(
c
)
serve
(
c
)
@task
def
preview
(
c
):
"""
Build production version of site
"""
pelican_run
(
'
-s {settings_publish}
'
.
format
(
**
CONFIG
))
@task
def
livereload
(
c
):
"""
Automatically reload browser tab upon file modification.
"""
from
livereload
import
Server
def
cached_build
():
cmd
=
'
-s {settings_base} -e CACHE_CONTENT=true LOAD_CONTENT_CACHE=true
'
pelican_run
(
cmd
.
format
(
**
CONFIG
))
cached_build
()
server
=
Server
()
theme_path
=
SETTINGS
[
'
THEME
'
]
watched_globs
=
[
CONFIG
[
'
settings_base
'
],
'
{}/templates/**/*.html
'
.
format
(
theme_path
),
]
content_file_extensions
=
[
'
.md
'
,
'
.rst
'
]
for
extension
in
content_file_extensions
:
content_glob
=
'
{0}/**/*{1}
'
.
format
(
SETTINGS
[
'
PATH
'
],
extension
)
watched_globs
.
append
(
content_glob
)
static_file_extensions
=
[
'
.css
'
,
'
.js
'
]
for
extension
in
static_file_extensions
:
static_file_glob
=
'
{0}/static/**/*{1}
'
.
format
(
theme_path
,
extension
)
watched_globs
.
append
(
static_file_glob
)
for
glob
in
watched_globs
:
server
.
watch
(
glob
,
cached_build
)
if
OPEN_BROWSER_ON_SERVE
:
# Open site in default browser
import
webbrowser
webbrowser
.
open
(
"
http://{host}:{port}
"
.
format
(
**
CONFIG
))
server
.
serve
(
host
=
CONFIG
[
'
host
'
],
port
=
CONFIG
[
'
port
'
],
root
=
CONFIG
[
'
deploy_path
'
])
@task
def
publish
(
c
):
"""
Publish to production via rsync
"""
pelican_run
(
'
-s {settings_publish}
'
.
format
(
**
CONFIG
))
c
.
run
(
'
rsync --delete --exclude
"
.DS_Store
"
-pthrvz -c
'
'
-e
"
ssh -p {ssh_port}
"
'
'
{} {ssh_user}@{ssh_host}:{ssh_path}
'
.
format
(
CONFIG
[
'
deploy_path
'
].
rstrip
(
'
/
'
)
+
'
/
'
,
**
CONFIG
))
def
pelican_run
(
cmd
):
cmd
+=
'
'
+
program
.
core
.
remainder
# allows to pass-through args to pelican
pelican_main
(
shlex
.
split
(
cmd
))
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment