パッケージビルド手順の変更・パッケージの追加
This commit is contained in:
168
package.sh
Executable file
168
package.sh
Executable file
@@ -0,0 +1,168 @@
|
||||
apk add curl git git-lfs icu-data-full jq npm uuidgen > /dev/null
|
||||
git config --global http.sslVerify false
|
||||
git config --global advice.detachedHead false
|
||||
|
||||
Repo_Process() {
|
||||
# Prepare Variables
|
||||
local UUID=$(uuidgen)
|
||||
local WORK_ROOT=$1
|
||||
local ITEM=$2
|
||||
local ADDRBASE=$(echo $ITEM | jq -r '.addr')
|
||||
local DIR=$(echo $ITEM | jq -r '.dir')
|
||||
local NAME=$(echo $ITEM | jq -r '.name')
|
||||
local AUTH=$(echo $ITEM | jq -r '.author')
|
||||
local DISP=$(echo $ITEM | jq -r '.displayName')
|
||||
local DESC=$(echo $ITEM | jq -r '.description')
|
||||
local TAG_REGEX=$(echo $ITEM | jq -r '.tagRegex')
|
||||
local WORK_DIR=$(basename $ADDRBASE | sed 's/\.[^\.]*$//')
|
||||
local GITLABX="oauth2:glpat-$GITLABTOKEN"
|
||||
local ADDR=${ADDRBASE/GITLAB/$GITLABX}
|
||||
|
||||
local PACKAGE_ROOT="$WORK_ROOT/$WORK_DIR-$UUID"
|
||||
local PACKAGE_DIR="$WORK_ROOT/$WORK_DIR-$UUID/$DIR"
|
||||
local PACKAGE_PATH="$PACKAGE_DIR/package.json"
|
||||
|
||||
if [[ "$TAG_REGEX" == null ]]; then
|
||||
local TAG_REGEX="^[0-9]+\.[0-9]+\.[0-9]+$"
|
||||
fi
|
||||
|
||||
if [[ "$DIR" == null ]]; then
|
||||
local DIR="."
|
||||
fi
|
||||
|
||||
# Download latest version
|
||||
cd $WORK_ROOT
|
||||
echo $ADDR
|
||||
git clone $ADDR $WORK_DIR-$UUID
|
||||
cd $PACKAGE_ROOT
|
||||
|
||||
local TAGS=$(git tag -l --sort authordate)
|
||||
|
||||
# Tag Process
|
||||
for TAG in $TAGS; do
|
||||
|
||||
# Check if tag is valid
|
||||
if [[ $TAG =~ $TAG_REGEX ]]; then
|
||||
echo "$TAG is valid tag."
|
||||
else
|
||||
echo "$TAG is not valid tag."
|
||||
continue
|
||||
fi
|
||||
|
||||
cd $WORK_ROOT
|
||||
rm -r $PACKAGE_ROOT
|
||||
git clone -b $TAG $ADDR $WORK_DIR-$UUID
|
||||
cd $PACKAGE_ROOT
|
||||
git submodule update --init --recursive
|
||||
git lfs pull
|
||||
|
||||
# Check if package.json is exists
|
||||
if [ ! -e $PACKAGE_PATH ]; then
|
||||
echo "$PACKAGE_PATH does not exist."
|
||||
continue
|
||||
fi
|
||||
|
||||
cd $PACKAGE_DIR
|
||||
|
||||
# Load Package.json
|
||||
local PACKAGE=$(cat package.json)
|
||||
|
||||
# Change Name
|
||||
if [[ "$NAME" != null ]]; then
|
||||
local PROCESS_NAME='.name|="'$NAME'"'
|
||||
local PACKAGE=$(echo $PACKAGE | jq "$PROCESS_NAME" | jq -c .)
|
||||
fi
|
||||
|
||||
# Change Author
|
||||
if [[ "$AUTH" != null ]]; then
|
||||
local PROCESS_AUTH='.author|="'$AUTH'"'
|
||||
local PACKAGE=$(echo $PACKAGE | jq "$PROCESS_AUTH" | jq -c .)
|
||||
fi
|
||||
|
||||
# Change DisplayName
|
||||
if [[ "$DISP" != null ]]; then
|
||||
local PROCESS_DISP='.displayName|="'$DISP'"'
|
||||
local PACKAGE=$(echo $PACKAGE | jq "$PROCESS_DISP" | jq -c .)
|
||||
fi
|
||||
|
||||
# Change Description
|
||||
if [[ "$DESC" != null ]]; then
|
||||
local PROCESS_DESC='.description|="'$DESC'"'
|
||||
local PACKAGE=$(echo $PACKAGE | jq "$PROCESS_DESC" | jq -c .)
|
||||
fi
|
||||
|
||||
# Update package.json
|
||||
rm package.json
|
||||
echo $PACKAGE >package.json
|
||||
|
||||
local PACKAGE_NAME=$(cat $PACKAGE_PATH | jq -r .name)
|
||||
local PACKAGE_VERSION=$(cat $PACKAGE_PATH | jq -r .version)
|
||||
local PACKAGE_AUTHOR=$(cat $PACKAGE_PATH | jq -r .author)
|
||||
|
||||
if [[ "$PACKAGE_AUTHOR" == null ]]; then
|
||||
echo "Package $PACKAGE_NAME@$PACKAGE_VERSION has invalie author."
|
||||
continue
|
||||
fi
|
||||
|
||||
# Check Readme
|
||||
if [ ! -e "$PACKAGE_DIR/README.md" ]; then
|
||||
if [ -e "$PACKAGE_ROOT/README.md" ]; then
|
||||
cp "$PACKAGE_ROOT/README.md" "$PACKAGE_DIR/README.md"
|
||||
META="
|
||||
fileFormatVersion: 2
|
||||
guid: ${UUID//-/}
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
"
|
||||
echo "$META" > "$PACKAGE_DIR/README.md.meta"
|
||||
echo "README.md at root was copied."
|
||||
fi
|
||||
fi
|
||||
|
||||
# Get Server tag
|
||||
local SVR_STAT=$(curl -sL https://$NPM_REGISTRY/$PACKAGE_NAME -o /dev/null -w '%{http_code}\n')
|
||||
local SVR_VERS=""
|
||||
if [[ "$SVR_STAT" == "200" ]]; then
|
||||
local SVR_DATA=$(curl -sL https://$NPM_REGISTRY/$PACKAGE_NAME)
|
||||
local SVR_VERS=$(echo $SVR_DATA | jq .versions | jq -s -r '[ .[] | keys ] | flatten | unique | .[]')
|
||||
fi
|
||||
|
||||
# Check server version
|
||||
local EXIST_ON_SVR="false"
|
||||
for SVR_VER in $SVR_VERS; do
|
||||
if [[ "$SVR_VER" == "$PACKAGE_VERSION" ]]; then
|
||||
local EXIST_ON_SVR="true"
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [[ "$EXIST_ON_SVR" == "true" ]]; then
|
||||
echo "Package $PACKAGE_NAME@$PACKAGE_VERSION is already exist."
|
||||
continue
|
||||
fi
|
||||
echo "Package $PACKAGE_NAME@$PACKAGE_VERSION will be published."
|
||||
|
||||
# Publish Package
|
||||
local DATA='{"name":"'"$NPM_USER"'", "password":"'"$NPM_PASS"'"}'
|
||||
local USER="$NPM_USER":"$NPM_PASS"
|
||||
local RETURN=$(curl -sL -H "Accept:application/json" -H "Content-Type:application/json" -X PUT --data "$DATA" --user "$USER" https://$NPM_REGISTRY/-/user/org.couchdb.user:$NPM_USER)
|
||||
local TOKEN=$(echo $RETURN | jq '.token')
|
||||
npm set //$NPM_REGISTRY/:_authToken $TOKEN
|
||||
npm publish --registry https://$NPM_REGISTRY/
|
||||
|
||||
done
|
||||
|
||||
cd $WORK_ROOT
|
||||
rm -r $PACKAGE_ROOT
|
||||
}
|
||||
|
||||
JSON_FILES=$(find ./repos -name "*.json")
|
||||
for JSON_FILE in $JSON_FILES; do
|
||||
ROOT=$(pwd)
|
||||
OBJ=$(cat $JSON_FILE | jq -c .)
|
||||
Repo_Process "$ROOT" "$OBJ" &
|
||||
done
|
||||
|
||||
wait
|
||||
Reference in New Issue
Block a user