diff --git a/.gitignore b/.gitignore index 7b10cef..a67997d 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,8 @@ __pycache__ build/* !build/Makefile !build/download_structure_conversions.sh - +!build/build_and_upload.sh.template +!build/config.json # using kdev4, works fairly nicely! .kdev4 **/*.kdev4 diff --git a/README.md b/README.md index 8ff17f2..ccdc883 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,50 @@ -# Build - -To build, you need transcrypt, you need to do npm install and then you need api key for gitea (`token=$API_KEY`), just find this on gitea.cjvt.si, not that hard. - -After you have all of this, move to build folder, set `API_KEY` environment variable and then build it just using `make` or for release use `make release` - optimized javascript build. - -For me its `API_KEY=(cat ~/.gitea_api_key) make`. +**Getting started** + - Prerequisites: + - Installed git, npm + - Installed Python 3.7 as default python3 version + - Gitea account and access to `generic` organization + + - Download transcrypt version that supports -od parameter: + - `git clone https://github.com/QQuick/Transcrypt.git` + - `cd Transcrypt` + - `git checkout remotes/origin/dev_fall_2019` + - `git switch -c dev_fall_2019` + - `python3 setup.py build` + - `python3 setup.py install --user` + - Sometimes it will be found as `transcrpyt -V` and sometimes as `python3 -m transcrypt -V` + + - Get api token for requests to lexonomy structure_conversions: + - Login to `https://gitea.cjvt.si/` + - Navigate to Profile -> Settings + - Navigate to Applications + - Generate token, then copy token from the blue field **above** Manage Access Tokens card. If you fail to do so, + delete that token and generate new one + - Save it in a plain file + + - Setup lexonomy_custom_editor: + - `git clone https://gitea.cjvt.si/lexonomy/lexonomy_custom_editor.git` + - `cd lexonomy_custom_editor` + - `npm i` + - `cd build` + - `touch conversions.csv` + - Run make with file content as variable: `API_KEY=$(cat location/to/file/name) make` + - If any error occurs with conversions.csv or inside download_structure_conversions.sh, run make clean before starting the above command again + + This concludes setup of local settings. You are ready to delve into it. To test, you can open main.html file inside /build + + +##### Best way to test is probably to deploy your editor version to https://lexonomy.cjvt.si/ + - SSH required + - You need account and access to CJVT machine which admin can provide + - Connect with `ssh accountName -p password`, admin will provide sudo password + - Create plugins directory on your account + - Move inside directory + - Give it 775 permissions (`sudo chmod 775 .`) + +To deploy new test editor version: +- **Note:** This script builds current plugin version, uploads it to VPS and creates a symlink to location where server can pick them up. +- Navigate to /build and create local build_and_upload.sh script (`cp build_and_upload.sh.template build_and_upload.sh`) +- Open build_and_upload.sh file and uncomment and configure the top 4 variables +- Whenever you want to upload new plugin to lexonomy, simply run `./build_and_upload.sh plugin_name` where you specify plugin_name. If specific plugin already exists, things might go bananas +- You will be requested to enter sudo password for the VPS \ No newline at end of file diff --git a/build/build_and_upload.sh.template b/build/build_and_upload.sh.template new file mode 100755 index 0000000..987e470 --- /dev/null +++ b/build/build_and_upload.sh.template @@ -0,0 +1,27 @@ +#!/bin/bash +############################################################################# +# NOTE: Update .template if logical changes are made to the script # +############################################################################# + +# Alter these variables +#USERNAME= vps_sign_in(probably name@lexonomy.cjvt.si +#VPS_PASSWORD= vps password +#VPS_USERNAME= user name inside vps(probably name from @lexonomy) +#API_KEY= $(cat path/to/api/token/file) + +# Exit if no argument is passed on run +if [[ -z "$1" ]]; then + echo "Must provide plugin name in environment" 1>&2 + exit 1 +fi + +PLUGIN_NAME=$1 +# Build the plugin +API_KEY=$API_KEY make + +# zip all the required files and upload them to ssh +tar czf - ./config.json ./bundle.js ./local.js ./main.css ./main.html | ssh $USERNAME -p $VPS_PASSWORD "cd plugins && mkdir $PLUGIN_NAME && cd $PLUGIN_NAME && tar xvzf -" + +# Create a simlink on VPS that will enable specific plugin on https://lexonomy.cjvt.si/ +# Routes must be absolute or it doesn't work. +ssh -t $USERNAME -p $VPS_PASSWORD "sudo ln -s /home/$VPS_USERNAME/plugins/$PLUGIN_NAME /home/ozbolt/plugins/$PLUGIN_NAME" diff --git a/build/config.json b/build/config.json new file mode 100644 index 0000000..3f34b75 --- /dev/null +++ b/build/config.json @@ -0,0 +1,5 @@ +{ + "dependencies": [], "globals": [], + "javascript": "$LOCATION$/bundle.js", + "css": ["$LOCATION$/main.css"] +}