Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
6c546ebb6f | |||
9783119a7d | |||
a94d6bc197 |
@ -3,18 +3,22 @@ export AWS_ACCOUNT=
|
||||
export AWS_PROFILE=
|
||||
export AWS_REGION=
|
||||
export AWS__EFS__LOCAL_MOUNT_POINT=
|
||||
export AWS__S3__MEDIA_BUCKET=
|
||||
export AWS__S3__MEDIA_TARGETS=
|
||||
export DIRECTUS__API_TOKEN=
|
||||
export DIRECTUS__BASE_URL=
|
||||
export DISCORD__BOT_TOKEN=
|
||||
export DISCORD__CONTENT_FOOTER=
|
||||
export DISCORD__CONTENT_HEADER=
|
||||
export DISCORD__DEFAULT_AVATAR_URL=
|
||||
export DISCORD__DEFAULT_CHANNEL_ID=
|
||||
export DISCORD__DEFAULT_USERNAME=
|
||||
export DISCORD__DEFAULT_WEBHOOK=
|
||||
export I3__BORDER_PIXEL_SIZE=
|
||||
export I3__DMENU_FONT_SIZE=
|
||||
export I3__GLOBAL_FONT_SIZE=
|
||||
export I3__MODEL_CONFIG=
|
||||
export LINEAR__API_TOKEN=
|
||||
export MEDIA_SYNC__S3_BUCKET
|
||||
export MEDIA_SYNC__TARGETS
|
||||
export REDIS_AUTH=
|
||||
export REDIS_HOST=
|
||||
export REDIS_PORT=
|
||||
|
@ -4,15 +4,16 @@ AWS_REGION |
|
||||
|
||||
AWS__EFS__LOCAL_MOUNT_POINT | fully-qualified path to mount the EFS drive
|
||||
|
||||
AWS__S3__MEDIA_BUCKET | s3 bucket name and filesystem targets for media backups
|
||||
AWS__S3__MEDIA_TARGETS |
|
||||
|
||||
DIRECTUS__API_TOKEN | details for a directus instance
|
||||
DIRECTUS__BASE_URL |
|
||||
|
||||
DISCORD__BOT_TOKEN | details for discord bot
|
||||
DISCORD__CONTENT_HEADER |
|
||||
DISCORD__CONTENT_FOOTER |
|
||||
DISCORD__DEFAULT_AVATAR_URL |
|
||||
DISCORD__DEFAULT_CHANNEL_ID |
|
||||
DISCORD__DEFAULT_USERNAME |
|
||||
DISCORD__DEFAULT_WEBHOOK |
|
||||
|
||||
I3__BORDER_PIXEL_SIZE | custom i3 configuration settings
|
||||
I3__DMENU_FONT_SIZE |
|
||||
@ -21,6 +22,9 @@ I3__MODEL_CONFIG |
|
||||
|
||||
LINEAR__API_TOKEN | linear.app project management configuration
|
||||
|
||||
MEDIA_SYNC__S3_BUCKET | s3 bucket name and filesystem targets for media backups
|
||||
MEDIA_SYNC__TARGETS |
|
||||
|
||||
REDIS_AUTH | redis connection credentials
|
||||
REDIS_HOST |
|
||||
REDIS_PORT |
|
||||
|
@ -13,19 +13,14 @@ if __name__ != '__main__':
|
||||
#####################################################################
|
||||
|
||||
def main(args, stream):
|
||||
if args.body is None:
|
||||
if args.content is None:
|
||||
print(f'reading input from {stream.input.name}', file=stderr)
|
||||
args.body = ''.join(stream.readlines()).strip()
|
||||
args.content = ''.join(stream.readlines()).strip()
|
||||
|
||||
if len(args.body) == 0:
|
||||
args.body = 'PING'
|
||||
if len(args.content) == 0:
|
||||
args.content = 'PING'
|
||||
|
||||
response = discord.send_message(
|
||||
content = args.body,
|
||||
channel_id = args.channel_id,
|
||||
webhook = args.webhook,
|
||||
avatar_url = args.avatar_url,
|
||||
)
|
||||
response = discord.send_message(**vars(args))
|
||||
|
||||
stream.writeline(dumps({
|
||||
**(response.json() if response.text != '' else {'message': 'OK'}),
|
||||
@ -38,23 +33,28 @@ execute(main,
|
||||
description = 'post a message to the indicated discord channel',
|
||||
parse_args = [
|
||||
( ['-b', '--body'], {
|
||||
'dest' : 'body',
|
||||
'dest' : 'content',
|
||||
'help' : 'message body',
|
||||
'required' : False,
|
||||
}),
|
||||
( ['-c', '--channel-id'], {
|
||||
'dest' : 'channel_id',
|
||||
'help' : 'target channel id',
|
||||
'help' : 'override default target channel id',
|
||||
'required' : False,
|
||||
}),
|
||||
( ['-w', '--webhook'], {
|
||||
'dest' : 'webhook',
|
||||
'help' : 'target webhook (takes precedence over -c)',
|
||||
'help' : 'override default target webhook (takes precedence over -c)',
|
||||
'required' : False,
|
||||
}),
|
||||
( ['--avatar-url'], {
|
||||
'dest' : 'avatar_url',
|
||||
'help' : 'replace default avatar_url',
|
||||
'help' : 'override default avatar_url',
|
||||
'required' : False,
|
||||
}),
|
||||
( ['--username'], {
|
||||
'dest' : 'username',
|
||||
'help' : 'override default username',
|
||||
'required' : False,
|
||||
}),
|
||||
]
|
||||
|
@ -1,9 +1,9 @@
|
||||
from py.lib.scwrypts import getenv
|
||||
from py.lib.http.discord import request
|
||||
|
||||
def send_message(content, channel_id=None, webhook=None, avatar_url=None, **kwargs):
|
||||
if channel_id is None:
|
||||
channel_id = getenv('DISCORD__DEFAULT_CHANNEL_ID', required=False)
|
||||
def send_message(content, channel_id=None, webhook=None, username=None, avatar_url=None, **kwargs):
|
||||
if username is None:
|
||||
username = getenv('DISCORD__DEFAULT_USERNAME', required=False)
|
||||
|
||||
if avatar_url is None:
|
||||
avatar_url = getenv('DISCORD__DEFAULT_AVATAR_URL', required=False)
|
||||
@ -12,11 +12,25 @@ def send_message(content, channel_id=None, webhook=None, avatar_url=None, **kwar
|
||||
|
||||
if webhook is not None:
|
||||
endpoint = f'webhooks/{webhook}'
|
||||
|
||||
elif channel_id is not None:
|
||||
endpoint = f'channels/{channel_id}/messages'
|
||||
|
||||
elif (webhook := getenv('DISCORD__DEFAULT_WEBHOOK', required=False)) is not None:
|
||||
endpoint = f'webhooks/{webhook}'
|
||||
|
||||
elif (channel_id := getenv('DISCORD__DEFAULT_CHANNEL_ID', required=False)) is not None:
|
||||
endpoint = f'channels/{channel_id}/messages'
|
||||
|
||||
else:
|
||||
raise ValueError('must provide target channel_id or webhook')
|
||||
|
||||
if (header := getenv('DISCORD__CONTENT_HEADER', required=False)) is not None:
|
||||
content = f'{header}{content}'
|
||||
|
||||
if (footer := getenv('DISCORD__CONTENT_FOOTER', required=False)) is not None:
|
||||
content = f'{content}{footer}'
|
||||
|
||||
|
||||
return request(
|
||||
method = 'POST',
|
||||
@ -25,7 +39,7 @@ def send_message(content, channel_id=None, webhook=None, avatar_url=None, **kwar
|
||||
key: value
|
||||
for key, value in {
|
||||
'content': content,
|
||||
'username': 'wrobot',
|
||||
'username': username,
|
||||
'avatar_url': avatar_url,
|
||||
**kwargs,
|
||||
}.items()
|
||||
|
15
run
15
run
@ -217,6 +217,11 @@ __RUN() {
|
||||
export ENV_NAME
|
||||
}
|
||||
|
||||
for f in $(eval 'echo $SCWRYPTS_STATIC_CONFIG__'$SCWRYPT_GROUP)
|
||||
do
|
||||
source "$f" || FAIL 5 "invalid static config '$f'"
|
||||
done
|
||||
|
||||
##########################################
|
||||
|
||||
[ ! $SUBSCWRYPT ] \
|
||||
@ -230,7 +235,7 @@ __RUN() {
|
||||
|
||||
##########################################
|
||||
|
||||
local LOGFILE=$(__GET_LOGFILE $SCRIPT)
|
||||
local LOGFILE=$(__GET_LOGFILE)
|
||||
|
||||
local HEADER=$(
|
||||
[ $SUBSCWRYPT ] && return 0
|
||||
@ -303,13 +308,13 @@ __VALIDATE_UPSTREAM_TIMELINE() {
|
||||
}
|
||||
|
||||
__GET_LOGFILE() {
|
||||
local SCRIPT="$1"
|
||||
|
||||
[ $SUBSCWRYPT ] \
|
||||
|| [[ $SCRIPT =~ scwrypts/logs ]] \
|
||||
|| [[ $SCRIPT =~ interactive ]] \
|
||||
|| [[ $SCWRYPT_NAME =~ scwrypts/logs ]] \
|
||||
|| [[ $SCWRYPT_NAME =~ interactive ]] \
|
||||
&& return 0
|
||||
|
||||
echo 'gets a logfile' >&2
|
||||
|
||||
echo "$SCWRYPTS_LOG_PATH/$(echo $GROUP/$TYPE/$NAME | sed 's/^\.\///; s/\//\%/g').log"
|
||||
}
|
||||
|
||||
|
@ -116,5 +116,5 @@ SCWRYPTS__GET_RUNSTRING__py() {
|
||||
SCWRYPTS__GET_RUNSTRING__zx() {
|
||||
__CHECK_DEPENDENCY zx || return 1
|
||||
|
||||
echo "FORCE_COLOR=3; cd $GROUP_PATH; ./$TYPE/$NAME.js"
|
||||
echo "export FORCE_COLOR=3; cd $GROUP_PATH; ./$TYPE/$NAME.js"
|
||||
}
|
||||
|
@ -49,7 +49,7 @@ UPDATE_VIRTUALENV() {
|
||||
cd $SCWRYPTS_ROOT
|
||||
local UPDATE_CODE=0
|
||||
case $TYPE in
|
||||
py ) cd py; pip install -r requirements.txt; UPDATE_CODE=$? ;;
|
||||
py ) cd py; pip install --no-cache-dir -r requirements.txt; UPDATE_CODE=$? ;;
|
||||
zx ) cd zx; npm install ;;
|
||||
esac
|
||||
UPDATE_CODE=$?
|
||||
@ -83,7 +83,11 @@ DELETE_VIRTUALENV() {
|
||||
GET_VIRTUALENV_PATH() {
|
||||
local GROUP="$1"
|
||||
local TYPE="$2"
|
||||
eval echo '$SCWRYPTS_VIRTUALENV_PATH__'$GROUP/$TYPE
|
||||
|
||||
local ENV_PATH="$(eval echo '$SCWRYPTS_VIRTUALENV_PATH__'$GROUP 2>/dev/null)"
|
||||
[ ! $ENV_PATH ] && ENV_PATH="$SCWRYPTS_VIRTUALENV_PATH__scwrypts"
|
||||
|
||||
echo $ENV_PATH/$TYPE
|
||||
}
|
||||
|
||||
#####################################################################
|
||||
|
@ -119,7 +119,7 @@ ADD_LINES() {
|
||||
do
|
||||
VARIABLE=$(echo $LINE | sed 's/=.*$//')
|
||||
echo $CONTENT | grep -qi "^$VARIABLE" || {
|
||||
echo $LINE | grep -qi '__[a-z_]\+=' || {
|
||||
echo $LINE | grep -q '__[a-z_]\+=' || {
|
||||
WARNING "skipping variable $(echo $LINE | sed 's/^export //; s/=.*//')
|
||||
(must be included in a template before it can be added)"
|
||||
continue
|
||||
@ -142,6 +142,7 @@ READ_POPULATED_VARIABLES() {
|
||||
| awk '/^[^=]+$/{printf "%s_____",$0;next}7' \
|
||||
| sed 's/\(_____\)\(export\)/\1\n\2/; s/\(_____\)$/\1\n/' \
|
||||
| sed 's/^.*_____.*$/_____&/' \
|
||||
| sed 's/^_____export/export/' \
|
||||
| sed -z 's/[\n
|
||||
] *_____/_____/g' \
|
||||
| grep -v '^$' \
|
||||
|
Reference in New Issue
Block a user