tinycm annotate tinycm @ rev 118

Tiny edit
author Paul Issott <paul@slitaz.org>
date Sun Mar 19 23:24:18 2017 +0000 (2017-03-19)
parents 035728efb7ad
children 0893f1ab023c
rev   line source
pankso@67 1 #!/bin/sh
pankso@67 2 #
pankso@67 3 # TinyCM Command line tool. Dont use libtaz since TinyCM can run on any
pankso@67 4 # Linux/BSD distribution providing a web server with CGI SHell support
pankso@67 5 # such as LightTPD.
pankso@67 6 #
pankso@83 7 # Copyright (C) 2014-2017 SliTaz GNU/Linux - BSD License
pankso@67 8 #
pankso@67 9
pankso@67 10 list="tinycm.list"
pankso@67 11 path="${2%/}"
pankso@67 12 hgurl="http://hg.slitaz.org/tinycm"
pankso@67 13 dlurl="$hgurl/archive/tip.tar.bz2"
pankso@67 14
pankso@67 15 #
pankso@67 16 # Functions
pankso@67 17 #
pankso@67 18
pankso@67 19 boldify() {
pankso@67 20 echo -e "\\033[1m$@\\033[0m"
pankso@67 21 }
pankso@67 22
pankso@67 23 error() {
pankso@67 24 echo -e "\\033[1;31m$@\\033[0;39m"
pankso@67 25 }
pankso@67 26
pankso@67 27 usage() {
pankso@67 28 cat << EOT
pankso@67 29
pankso@67 30 $(boldify "Usage:") $(basename $0) [command] [path|list]
pankso@67 31
pankso@67 32 $(boldify "Commands:")
pankso@117 33 -i inst Install TinyCM and set permissions
pankso@117 34 -u up Update one or a list of TinyCM installations
pankso@117 35 -g get Download latest source tarball from repository
paul@118 36 -p plugins List installed/available plugins
pankso@67 37
pankso@67 38 EOT
pankso@67 39 }
pankso@67 40
pankso@67 41 check_source() {
pankso@67 42 if [ ! -f "Makefile" ] || [ ! -f "index.cgi" ]; then
pankso@67 43 error "No source found" && exit 1
pankso@67 44 fi
pankso@67 45 }
pankso@67 46
pankso@67 47 check_path() {
pankso@67 48 if [ ! "$path" ]; then
pankso@67 49 error "Missing path argument" && exit 1
pankso@67 50 fi
pankso@67 51 }
pankso@67 52
pankso@67 53 check_tiny() {
pankso@67 54 if [ ! -f "$path/index.cgi" ] || [ ! -d "$path/lib" ]; then
pankso@67 55 error "Missing TinyCM in: $path"
pankso@67 56 continue
pankso@67 57 fi
pankso@67 58 }
pankso@67 59
paul@105 60 # Rebuild an up-to-date config file, plugins may need new variables
pankso@99 61 update_config() {
pankso@99 62 echo "Updating config file: confi.cgi"
pankso@99 63 . ${path}/config.cgi
pankso@102 64 # Def value for new variables
pankso@99 65 [ ! "$WALL_MODE" ] && WALL_MODE="public"
pankso@99 66 [ ! "$WALL_MESSAGES_LENGTH" ] && WALL_MESSAGES_LENGTH="240"
pankso@102 67 # from 1.4
pankso@102 68 [ ! "$ADMIN_USERS" ] && ADMIN_USERS=$(dirname "$AUTH_FILE")/admin
pankso@99 69 cat > ${path}/config.cgi << EOT
pankso@99 70 #
pankso@99 71 # TinyCM configuration
pankso@99 72 #
pankso@99 73
pankso@99 74 # Administrator email.
pankso@99 75 ADMIN_MAIL="$ADMIN_MAIL"
pankso@99 76
pankso@99 77 # Auth file for user
pankso@99 78 AUTH_FILE="$AUTH_FILE"
pankso@99 79
pankso@102 80 # Admin users file list
pankso@102 81 ADMIN_USERS="/var/lib/slitaz/auth/admin"
pankso@102 82
pankso@99 83 # People config files
pankso@99 84 PEOPLE="$PEOPLE"
pankso@99 85
pankso@99 86 # CM documents languages.
pankso@99 87 LANGUAGES="$LANGUAGES"
pankso@99 88
pankso@99 89 # Online registration for user
pankso@99 90 ONLINE_SIGNUP="$ONLINE_SIGNUP"
pankso@99 91
pankso@99 92 # Use Mercurial repo for content and configure user name
pankso@99 93 HG="$HG"
pankso@99 94
pankso@99 95 #
pankso@99 96 # Plugin configuration: community.cgi
pankso@99 97 #
pankso@99 98
pankso@99 99 # Wall mode: public/private
pankso@99 100 WALL_MODE="$WALL_MODE"
pankso@99 101
pankso@99 102 # Max length for messages on the Wall
pankso@99 103 WALL_MESSAGES_LENGTH="$WALL_MESSAGES_LENGTH"
pankso@99 104
pankso@117 105 # Twitter user name and/or Facebook page URL name
pankso@99 106 TWITTER_USER="$TWITTER_USER"
pankso@99 107 FACEBOOK_PAGE="$FACEBOOK_PAGE"
pankso@99 108 EOT
pankso@99 109 unset TWITTER_USER FACEBOOK_PAGE
pankso@99 110 }
pankso@99 111
pankso@67 112 #
pankso@67 113 # Commands
pankso@67 114 #
pankso@67 115
pankso@67 116 case "$1" in
pankso@117 117
pankso@117 118 -i|inst*)
pankso@67 119 check_source
pankso@67 120 check_path
pankso@117 121
pankso@67 122 echo ""
pankso@117 123 boldify "TinyCM installation"
pankso@117 124 echo "Path: $path"
pankso@117 125 mkdir -p ${path}
pankso@117 126 for file in index.cgi config.cgi style.css images lib plugins
pankso@67 127 do
pankso@117 128 echo " * Installing: $file"
pankso@117 129 cp -a ${file} ${path}
pankso@67 130 done
pankso@117 131
pankso@117 132 # Content with wiki/*/help.txt
pankso@117 133 for lang in en
pankso@117 134 do
pankso@117 135 mkdir -p ${path}/content/wiki/${lang}
pankso@117 136 cp content/wiki/${lang}/help.txt ${path}/content/wiki/${lang}
pankso@117 137 done
pankso@117 138
pankso@117 139 # Set permissions
pankso@117 140 if [ $(id -u) == 0 ]; then
pankso@117 141 chown -R www.www ${path}/content
pankso@117 142 install -d -o www -g www ${path}/cache
pankso@67 143 else
pankso@117 144 chmod 0777 ${path}/content ${path}/content/*
pankso@117 145 install -d -m 0777 ${path}/cache
pankso@67 146 fi
pankso@67 147 echo "" ;;
pankso@117 148
pankso@117 149 -u|up*)
pankso@67 150 check_source
pankso@67 151 if [ ! "$path" ] && [ ! -f "$list" ]; then
pankso@67 152 error "Missing path argument or paths list: $list"
pankso@67 153 exit 1
pankso@67 154 fi
pankso@67 155 echo ""
pankso@99 156 boldify "Updating TinyCM install(s)..."
pankso@99 157 echo ""
pankso@117 158
paul@105 159 # File list of args
pankso@75 160 if [ -f "$path" ]; then
pankso@75 161 paths="$(cat ${list})"
pankso@75 162 else
pankso@67 163 paths="$path"
pankso@67 164 fi
pankso@117 165
pankso@67 166 for path in ${paths}
pankso@67 167 do
pankso@67 168 check_tiny
pankso@99 169 echo "Updating TinyCM: $path"
pankso@67 170 cp -a index.cgi $path
pankso@67 171 cp -a lib/functions.js $path/lib
pankso@67 172 cp -a lib/jseditor.html $path/lib
pankso@114 173 #cp -a images/* $path/images
pankso@99 174 echo "Updating plugins..."
pankso@67 175 for plug in $(ls plugins)
pankso@67 176 do
pankso@67 177 if [ -d "$path/plugins/$plug" ]; then
pankso@77 178 echo "* Updating plugin: $plug"
pankso@67 179 cp -a plugins/$plug $path/plugins
pankso@67 180 fi
pankso@67 181 done
pankso@99 182 update_config
pankso@67 183 done && echo "" ;;
pankso@117 184
pankso@117 185 -p|plug*)
pankso@117 186 echo ""
pankso@117 187 boldify "TinyCM plugins:"
pankso@117 188 ls -1 plugins
pankso@117 189 echo "" ;;
pankso@117 190
pankso@117 191 -g|get)
pankso@117 192 tarball="tinycm-tip.tar.bz2"
pankso@117 193 if [ ! -f "$tarball" ]; then
pankso@117 194 wget ${dlurl} -O ${tarball}
pankso@117 195 fi ;;
pankso@117 196
pankso@117 197 *) usage ;;
pankso@67 198 esac
pankso@67 199
pankso@67 200 exit 0