├── .github
├── CODEOWNERS
└── workflows
│ ├── build_mir.yml
│ ├── build_sf.yml
│ ├── build_artf.yml
│ └── build_gh.yml
├── config_artf.env
├── config_mir.env
├── config_gh.env
├── config_sf.env
├── README.md
└── LICENSE
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | * @XenonTheInertG
2 |
--------------------------------------------------------------------------------
/config_artf.env:
--------------------------------------------------------------------------------
1 | #Config files for artifacts variant
2 |
3 | TOOL_REPO=https://github.com/Xenon-s-Workshop/XenonGSIs
4 | URL=
5 | FIRMWARE_TYPE=
6 | OUTPUT_TYPE=
7 | REPACK_NAME=
8 | EXTRA_ARGS=
9 |
--------------------------------------------------------------------------------
/config_mir.env:
--------------------------------------------------------------------------------
1 | #Config files for mirror variant
2 |
3 | TOOL_REPO=https://github.com/Xenon-s-Workshop/XenonGSIs
4 | URL=
5 | FIRMWARE_TYPE=
6 | OUTPUT_TYPE=
7 | REPACK_NAME=
8 | MIR=
9 | EXTRA_ARGS=
10 |
--------------------------------------------------------------------------------
/config_gh.env:
--------------------------------------------------------------------------------
1 | #Config files for github release variant
2 |
3 | TOOL_REPO=https://github.com/Xenon-s-Workshop/XenonGSIs
4 | URL=
5 | FIRMWARE_TYPE=
6 | OUTPUT_TYPE=
7 | REPACK_NAME=
8 | GH_REPO=
9 | EXTRA_ARGS=
10 |
--------------------------------------------------------------------------------
/config_sf.env:
--------------------------------------------------------------------------------
1 | #Config file for sourceforge variant
2 |
3 | TOOL_REPO=https://github.com/Xenon-s-Workshop/XenonGSIs
4 | URL=
5 | FIRMWARE_TYPE=
6 | OUTPUT_TYPE=
7 | SF_DIR=/home/pfs/project/(your project)/(folder)
8 | CHAT_ID=
9 | SF_URL=
10 | EXTRA_ARGS=
11 |
--------------------------------------------------------------------------------
/.github/workflows/build_mir.yml:
--------------------------------------------------------------------------------
1 | name: GSI-Workshop2
2 |
3 | on:
4 | workflow_dispatch:
5 |
6 | defaults:
7 | run:
8 | shell: bash
9 |
10 | jobs:
11 | build:
12 | runs-on: ubuntu-latest
13 | steps:
14 | - name: Checkout
15 | uses: actions/checkout@v2
16 | - name: Load Configuration
17 | uses: falti/dotenv-action@v0.2.7
18 | id: config
19 | with:
20 | path: config_mir.env
21 | - name: Check Configuration
22 | run: |
23 | function required () { if ! [[ "$1" ]]; then echo "$2 variable can't be null." && exit 1; fi }
24 | required "${{ steps.config.outputs.tool_repo }}" "TOOL_REPO config"
25 | required "${{ steps.config.outputs.url }}" "URL config"
26 | required "${{ steps.config.outputs.firmware_type }}" "FIRMWARE_TYPE config"
27 | required "${{ steps.config.outputs.repack_name }}" "REPACK_NAME config"
28 | required "${{ steps.config.outputs.mir }}" "MIR config"
29 |
30 | - name: Initialization environment
31 | run: |
32 | sudo -E apt-get -qq install git wget
33 |
34 | - name: Setup ErfanGSIs Tools
35 | run: |
36 | git clone --recurse-submodules "${{ steps.config.outputs.tool_repo }}" ErfanGSIs
37 | sudo bash ErfanGSIs/setup.sh
38 | sed -i '$d' ErfanGSIs/url2GSI.sh
39 |
40 | - name: Build AB & AOnly
41 | if: ${{ steps.config.outputs.output_type == 'all' }}
42 | run: |
43 | sudo ./ErfanGSIs/url2GSI.sh "${{ steps.config.outputs.url }}" "${{ steps.config.outputs.firmware_type }}" "${{ steps.config.outputs.extra_args }}"
44 | - name: Build AB
45 | if: ${{ steps.config.outputs.output_type == 'ab' }}
46 | run: |
47 | sudo ./ErfanGSIs/url2GSI.sh "${{ steps.config.outputs.url }}" "${{ steps.config.outputs.firmware_type }}" --ab ${{ steps.config.outputs.extra_args }}
48 | - name: Build AOnly
49 | if: ${{ steps.config.outputs.output_type == 'a' }}
50 | run: |
51 | sudo ./ErfanGSIs/url2GSI.sh "${{ steps.config.outputs.url }}" "${{ steps.config.outputs.firmware_type }}" --aonly ${{ steps.config.outputs.extra_args }}
52 |
53 | - name: Repack AB,AOnly and upload
54 | if: ${{ steps.config.outputs.output_type == 'all' }}
55 | run: |
56 | mkdir final
57 | sudo chmod -R 777 ErfanGSIs/output
58 | zip -r ErfanGSIs/output/"${{ steps.config.outputs.repack_name }}"-GSI-Aonly.7z ErfanGSIs/output/*-Aonly-*.img
59 | zip -r ErfanGSIs/output/"${{ steps.config.outputs.repack_name }}"-GSI-AB.7z ErfanGSIs/output/*-AB-*.img
60 | curl -sL https://git.io/file-transfer | sh
61 | ./transfer "${{ steps.config.outputs.mir }}" ErfanGSIs/output/"${{ steps.config.outputs.repack_name }}"-GSI-Aonly.7z
62 | ./transfer "${{ steps.config.outputs.mir }}" ErfanGSIs/output/"${{ steps.config.outputs.repack_name }}"-GSI-AB.7z
63 |
64 | - name: Repack Aonly and upload
65 | if: ${{ steps.config.outputs.output_type == 'a' }}
66 | run: |
67 | mkdir final
68 | sudo chmod -R 777 ErfanGSIs/output
69 | zip -r ErfanGSIs/output/"${{ steps.config.outputs.repack_name }}"-GSI-Aonly.7z ErfanGSIs/output/*-Aonly-*.img
70 | curl -sL https://git.io/file-transfer | sh
71 | ./transfer "${{ steps.config.outputs.mir }}" ErfanGSIs/output/"${{ steps.config.outputs.repack_name }}"-GSI-Aonly.7z
72 | - name: Repack AB and upload
73 | if: ${{ steps.config.outputs.output_type == 'ab' }}
74 | run: |
75 | zip -r ErfanGSIs/output/"${{ steps.config.outputs.repack_name }}"-GSI-AB.7z ErfanGSIs/output/*-AB-*.img
76 | ./transfer "${{ steps.config.outputs.mir }}" ErfanGSIs/output/"${{ steps.config.outputs.repack_name }}"-GSI-AB.7z
--------------------------------------------------------------------------------
/.github/workflows/build_sf.yml:
--------------------------------------------------------------------------------
1 | name: GSI-Workshop1
2 |
3 | on:
4 | workflow_dispatch:
5 |
6 | defaults:
7 | run:
8 | shell: bash
9 |
10 | jobs:
11 | build:
12 | runs-on: ubuntu-latest
13 | steps:
14 | - name: Checkout
15 | uses: actions/checkout@v2
16 | - name: Load Configuration
17 | uses: falti/dotenv-action@v0.2.7
18 | id: config
19 | with:
20 | path: config_sf.env
21 | - name: Check Configuration
22 | run: |
23 | function required () { if ! [[ "$1" ]]; then echo "$2 variable can't be null." && exit 1; fi }
24 | required "${{ secrets.USERNAME }}" "USERNAME secret"
25 | required "${{ secrets.PASSWORD }}" "PASSWORD secret"
26 |
27 | required "${{ steps.config.outputs.tool_repo }}" "TOOL_REPO config"
28 | required "${{ steps.config.outputs.url }}" "URL config"
29 | required "${{ steps.config.outputs.firmware_type }}" "FIRMWARE_TYPE config"
30 | required "${{ steps.config.outputs.sf_dir }}" "SF_DIR config"
31 | required "${{ steps.config.outputs.output_type }}" "OUTPUT_TYPE config"
32 |
33 | - name: Setup ErfanGSIs Tools
34 | run: |
35 | git clone --recurse-submodules "${{ steps.config.outputs.tool_repo }}" ErfanGSIs
36 | sudo bash ErfanGSIs/setup.sh
37 | sed -i '$d' ErfanGSIs/url2GSI.sh
38 | - name: Build AB,AOnly
39 | if: ${{ steps.config.outputs.output_type == 'all' }}
40 | run: |
41 | sudo ./ErfanGSIs/url2GSI.sh "${{ steps.config.outputs.url }}" "${{ steps.config.outputs.firmware_type }}" "${{ steps.config.outputs.extra_args }}"
42 | - name: Build AB
43 | if: ${{ steps.config.outputs.output_type == 'ab' }}
44 | run: |
45 | sudo ./ErfanGSIs/url2GSI.sh "${{ steps.config.outputs.url }}" "${{ steps.config.outputs.firmware_type }}" --ab ${{ steps.config.outputs.extra_args }}
46 | - name: Build AOnly
47 | if: ${{ steps.config.outputs.output_type == 'a' }}
48 | run: |
49 | sudo ./ErfanGSIs/url2GSI.sh "${{ steps.config.outputs.url }}" "${{ steps.config.outputs.firmware_type }}" --aonly ${{ steps.config.outputs.extra_args }}
50 | - name: Repack files
51 | run: |
52 | mkdir build/
53 | sudo mv ErfanGSIs/output/*.img build/
54 | gzip -r build/
55 | sudo mv ErfanGSIs/output/*.txt build/
56 | - name: Setup SSH
57 | uses: fastai/workflows/ssh@master
58 | with:
59 | ssh_key: ${{ secrets.SSH_KEY }}
60 | key_file: id_ecdsa
61 | - name: Upload to GSIs to Sourceforge
62 | run: |
63 | ssh-keyscan frs.sourceforge.net >> ~/.ssh/known_hosts
64 | sshpass -p "${{ secrets.PASSWORD }}" rsync -arsP -e ssh build/ "${{ secrets.USERNAME }}@frs.sourceforge.net:${{ steps.config.outputs.sf_dir }}"
65 | - name: Telegram Notify
66 | if: ${{ steps.config.outputs.chat_id != 0 }}
67 | run: |
68 | BOT_TOKEN="${{ secrets.TOKEN }}"
69 | CHAT_IDS="${{ steps.config.outputs.chat_id }}"
70 | TG_URL="https://api.telegram.org/bot$BOT_TOKEN/sendMessage"
71 |
72 | chatids=("$CHAT_IDS")
73 |
74 | for chat in "${chatids[@]}"; do
75 | TYPE="${{ steps.config.outputs.firmware_type }}"
76 | OUTPUT="${{ steps.config.outputs.output_type }}"
77 | BASE="${{ steps.config.outputs.url }}"
78 | SOURCEFORGE="${{ steps.config.outputs.sf_url }}"
79 | for file in build/*.txt; do
80 | filename=$(basename -- "$file")
81 | sed -i "1s/^/Name: ${filename%.*}\n/" "$file"
82 | printf "\n\nBase Firmware Link: $BASE" >> "$file"
83 | printf "\n\nDownload Link: $SOURCEFORGE" >> "$file"
84 | curl -s -d "chat_id=$chat" --data-urlencode text@$file "$TG_URL"
85 | done
86 | done
87 |
--------------------------------------------------------------------------------
/.github/workflows/build_artf.yml:
--------------------------------------------------------------------------------
1 | name: GSI-Workshop4
2 |
3 | on:
4 | workflow_dispatch:
5 |
6 | defaults:
7 | run:
8 | shell: bash
9 |
10 | jobs:
11 | build:
12 | runs-on: ubuntu-latest
13 | steps:
14 | - name: Checkout
15 | uses: actions/checkout@v2
16 | - name: Load Configuration
17 | uses: falti/dotenv-action@v0.2.7
18 | id: config
19 | with:
20 | path: config_artf.env
21 | - name: Check Configuration
22 | run: |
23 | function required () { if ! [[ "$1" ]]; then echo "$2 variable can't be null." && exit 1; fi }
24 | required "${{ steps.config.outputs.tool_repo }}" "TOOL_REPO config"
25 | required "${{ steps.config.outputs.url }}" "URL config"
26 | required "${{ steps.config.outputs.firmware_type }}" "FIRMWARE_TYPE config"
27 | required "${{ steps.config.outputs.output_type }}" "OUTPUT_TYPE config"
28 | required "${{ steps.config.outputs.repack_name }}" "REPACK_NAME config"
29 |
30 | - name: Initializing environment
31 | run: |
32 | sudo -E apt-get -qq install git wget
33 |
34 | - name: Setup ErfanGSIs Tools
35 | run: |
36 | git clone --recurse-submodules "${{ steps.config.outputs.tool_repo }}" ErfanGSIs
37 | sudo bash ErfanGSIs/setup.sh
38 | sed -i '$d' ErfanGSIs/url2GSI.sh
39 |
40 | - name: Build AB & AOnly
41 | if: ${{ steps.config.outputs.output_type == 'all' }}
42 | run: |
43 | sudo ./ErfanGSIs/url2GSI.sh "${{ steps.config.outputs.url }}" "${{ steps.config.outputs.firmware_type }}" "${{ steps.config.outputs.extra_args }}"
44 | - name: Build AB
45 | if: ${{ steps.config.outputs.output_type == 'ab' }}
46 | run: |
47 | sudo ./ErfanGSIs/url2GSI.sh "${{ steps.config.outputs.url }}" "${{ steps.config.outputs.firmware_type }}" --ab ${{ steps.config.outputs.extra_args }}
48 | - name: Build AOnly
49 | if: ${{ steps.config.outputs.output_type == 'a' }}
50 | run: |
51 | sudo ./ErfanGSIs/url2GSI.sh "${{ steps.config.outputs.url }}" "${{ steps.config.outputs.firmware_type }}" --aonly ${{ steps.config.outputs.extra_args }}
52 |
53 | - name: Repack AB,Aonly
54 | if: ${{ steps.config.outputs.output_type == 'all' }}
55 | run: |
56 | mkdir final
57 | sudo chmod -R 777 ErfanGSIs/output
58 | zip -r ErfanGSIs/output/"${{ steps.config.outputs.repack_name }}"-GSI-Aonly.7z ErfanGSIs/output/*-Aonly-*.img
59 | zip -r ErfanGSIs/output/"${{ steps.config.outputs.repack_name }}"-GSI-AB.7z ErfanGSIs/output/*-AB-*.img
60 |
61 | - name: Repack Aonly
62 | if: ${{ steps.config.outputs.output_type == 'a' }}
63 | run: |
64 | mkdir final
65 | sudo chmod -R 777 ErfanGSIs/output
66 | zip -r ErfanGSIs/output/"${{ steps.config.outputs.repack_name }}"-GSI-Aonly.7z ErfanGSIs/output/*-Aonly-*.img
67 |
68 | - name: Repack AB
69 | if: ${{ steps.config.outputs.output_type == 'ab' }}
70 | run: |
71 | mkdir final
72 | sudo chmod -R 777 ErfanGSIs/output
73 | zip -r ErfanGSIs/output/"${{ steps.config.outputs.repack_name }}"-GSI-AB.7z ErfanGSIs/output/*-AB-*.img
74 |
75 | - name: Upload AB,Aonly
76 | if: ${{ steps.config.outputs.output_type == 'all' }}
77 | uses: actions/upload-artifact@master
78 | with:
79 | name: "${{ steps.config.outputs.repack_name }}"
80 | path: ${{ github.workspace }}/ErfanGSIs/output/*.7z
81 |
82 | - name: Upload AB
83 | if: ${{ steps.config.outputs.output_type == 'ab' }}
84 | uses: actions/upload-artifact@master
85 | with:
86 | name: "${{ steps.config.outputs.repack_name }}"
87 | path: ${{ github.workspace }}/ErfanGSIs/output/*.7z
88 |
89 | - name: Upload A Only
90 | if: ${{ steps.config.outputs.output_type == 'a' }}
91 | uses: actions/upload-artifact@master
92 | with:
93 | name: "${{ steps.config.outputs.repack_name }}"
94 | path: ${{ github.workspace }}/ErfanGSIs/output/*.7z
--------------------------------------------------------------------------------
/.github/workflows/build_gh.yml:
--------------------------------------------------------------------------------
1 | name: GSI-Workshop3
2 |
3 | on:
4 | workflow_dispatch:
5 |
6 | defaults:
7 | run:
8 | shell: bash
9 |
10 | jobs:
11 | build:
12 | runs-on: ubuntu-latest
13 | steps:
14 | - name: Checkout
15 | uses: actions/checkout@v2
16 | - name: Load Configuration
17 | uses: falti/dotenv-action@v0.2.7
18 | id: config
19 | with:
20 | path: config_gh.env
21 | - name: Check Configuration
22 | run: |
23 | function required () { if ! [[ "$1" ]]; then echo "$2 variable can't be null." && exit 1; fi }
24 | required "${{ steps.config.outputs.tool_repo }}" "TOOL_REPO config"
25 | required "${{ steps.config.outputs.url }}" "URL config"
26 | required "${{ steps.config.outputs.firmware_type }}" "FIRMWARE_TYPE config"
27 | required "${{ steps.config.outputs.output_type }}" "OUTPUT_TYPE config"
28 | required "${{ steps.config.outputs.repack_name }}" "REPACK_NAME config"
29 |
30 | - name: Initializing environment
31 | run: |
32 | sudo -E apt-get -qq install git wget
33 |
34 | - name: Setup ErfanGSIs Tools
35 | run: |
36 | git clone --recurse-submodules "${{ steps.config.outputs.tool_repo }}" ErfanGSIs
37 | sudo bash ErfanGSIs/setup.sh
38 | sed -i '$d' ErfanGSIs/url2GSI.sh
39 |
40 | - name: Build AB & AOnly
41 | if: ${{ steps.config.outputs.output_type == 'all' }}
42 | run: |
43 | sudo ./ErfanGSIs/url2GSI.sh "${{ steps.config.outputs.url }}" "${{ steps.config.outputs.firmware_type }}" "${{ steps.config.outputs.extra_args }}"
44 | - name: Build AB
45 | if: ${{ steps.config.outputs.output_type == 'ab' }}
46 | run: |
47 | sudo ./ErfanGSIs/url2GSI.sh "${{ steps.config.outputs.url }}" "${{ steps.config.outputs.firmware_type }}" --ab ${{ steps.config.outputs.extra_args }}
48 | - name: Build AOnly
49 | if: ${{ steps.config.outputs.output_type == 'a' }}
50 | run: |
51 | sudo ./ErfanGSIs/url2GSI.sh "${{ steps.config.outputs.url }}" "${{ steps.config.outputs.firmware_type }}" --aonly ${{ steps.config.outputs.extra_args }}
52 |
53 | - name: Repack AB,Aonly
54 | if: ${{ steps.config.outputs.output_type == 'all' }}
55 | run: |
56 | mkdir final
57 | sudo chmod -R 777 ErfanGSIs/output
58 | zip -r ErfanGSIs/output/"${{ steps.config.outputs.repack_name }}"-GSI-Aonly.7z ErfanGSIs/output/*-Aonly-*.img
59 | zip -r ErfanGSIs/output/"${{ steps.config.outputs.repack_name }}"-GSI-AB.7z ErfanGSIs/output/*-AB-*.img
60 |
61 | - name: Repack Aonly
62 | if: ${{ steps.config.outputs.output_type == 'a' }}
63 | run: |
64 | mkdir final
65 | sudo chmod -R 777 ErfanGSIs/output
66 | zip -r ErfanGSIs/output/"${{ steps.config.outputs.repack_name }}"-GSI-Aonly.7z ErfanGSIs/output/*-Aonly-*.img
67 |
68 | - name: Repack AB
69 | if: ${{ steps.config.outputs.output_type == 'ab' }}
70 | run: |
71 | mkdir final
72 | sudo chmod -R 777 ErfanGSIs/output
73 | zip -r ErfanGSIs/output/"${{ steps.config.outputs.repack_name }}"-GSI-AB.7z ErfanGSIs/output/*-AB-*.img
74 |
75 | - name: Upload AB,Aonly
76 | if: ${{ steps.config.outputs.output_type == 'all' }}
77 | uses: ncipollo/release-action@v1
78 | with:
79 | artifacts: ${{ github.workspace }}/ErfanGSIs/output/*.7z
80 | token: ${{ secrets.TOKEN }}
81 | tag: "${{ steps.config.outputs.firmware_type }}"
82 |
83 | - name: Upload AB
84 | if: ${{ steps.config.outputs.output_type == 'ab' }}
85 | uses: ncipollo/release-action@v1
86 | with:
87 | artifacts: ${{ github.workspace }}/ErfanGSIs/output/*.7z
88 | token: ${{ secrets.TOKEN }}
89 | tag: "${{ steps.config.outputs.firmware_type }}"
90 |
91 | - name: Upload A Only
92 | if: ${{ steps.config.outputs.output_type == 'a' }}
93 | uses: ncipollo/release-action@v1
94 | with:
95 | artifacts: ${{ github.workspace }}/ErfanGSIs/output/*.7z
96 | token: ${{ secrets.GIT_TOKEN }}
97 | tag: "${{ steps.config.outputs.firmware_type }}"
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | Port OEM ROMs,Custom ROMs to project treble using github actions and [ErfanGSIs](https://github.com/erfanoabdi/ErfanGSIs) then upload to sourceforge,github releases,artifacts,telegram & other file upload websites.
2 |
3 | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
4 | # Features
5 | - Easy to use & understand.
6 | - Modular & fast so you can do whatever you want.
7 | - Customizable. Chose your own custom ErfanGSIs tool, chose build type (A only or AB or both), and many more.
8 | - Deploy ported GSI to sourceforge,github releases,artifacts,telegram & other file upload websites.
9 | - Send notifications on telegram with informations about the latest build.
10 |
11 | # Requirements
12 |
13 | • If you want to port & upload GSI directly to your sourceforge project!
14 |
15 | - A little understanding on how to use ErfanGSIs tool.
16 | - A SourceForge account and project.
17 | - A little understanding on how SourceForge works and how to use it with sftp.
18 |
19 | • If you want to port & upload GSI to file hosting websites
20 | - Scroll download & see website variables
21 |
22 | • If you want to port & Upload GSI to github releases
23 | - PAT(Personal access token)
24 |
25 | # How To Use
26 | - Fork the repo.
27 | - Setup ErfanGSIs configuration in config.env. See [ErfanGSIs Configuration](#ErfanGSIs-Configuration).
28 | - Setup SourceForge credentials in github secrets. See [SourceForge Configuration](#SourceForge-Configuration).
29 | - Go to actions tab, enable workflows.
30 | - Go to Actions tab again, click and run workflow manually.
31 | - It should take around 10-30 miniute to succesfully build and upload your builds to sourceforge.com.
32 |
33 | # How to update
34 | - Change ErfanGSIs configuration in config.env. [ErfanGSIs Configuration](#ErfanGSIs-Configuration).
35 | - Go to actions tab, click and run workflow manually.
36 | - It should take around 10 to succesfully build and upload your builds to sourceforge.com.
37 |
38 | # ErfanGSIs Configuration
39 | > All the settings for Erfan's tool is available by editing the config.env file.
40 |
41 | **Name**|**Description**|**Required**
42 | :-----:|:-----:|:-----:
43 | TOOL\_REPO| Repository from where to clone ErfanGSIs tool. Only change this if you are using a custom one.
44 | URL| Firmware download link or path on the repo.
45 | FIRMWARE\_TYPE| Firmware type (eg: Pixel).
46 | OUTPUT\_TYPE| Build type. Can be: "all" to build AB and AOnly; "ab" to build just AB; "a" to build just AOnly.
47 | SF\_DIR| The directory on sourceforge. See: https://sourceforge.net/p/forge/documentation/SFTP/#for-managing-file-releases
48 | CHAT\_ID| List of telegram chat id separated by space where to send info about the latest builds. Set to 0 to disable telegram notifications.
49 | SF\_URL| Url to the sourceforge directory where the builds are uploaded. Used if telegram notifications are enabled.
50 | EXTRA\_ARGS| Extra arguments to pass to url2GSI.sh script.
51 |
52 | # SourceForge Configuration
53 |
54 | > In order to connect to source forge you need some extra configuration variables in your repo secrets. See [here](https://docs.github.com/en/actions/reference/encrypted-secrets).
55 |
56 | **Name** | **Description**
57 | :-----:|:-----:
58 | USERNAME | SourceForge username.
59 | PASSWORD | SourceForge password.
60 | TG_BOT_TOKEN | Telegram Bot Token to send notification messages to. Used only if telegram notifications are enabled.
61 |
62 | # Mirror
63 | You can change cloud for uploading your options are
64 |
65 | | config | site name | website |
66 | | ---- | ---- | ---- |
67 | | arp | Airportal | https://aitportal.cn/ |
68 | | bit | bitSend | https://bitsend.jp/ |
69 | | cat | CatBox | https://catbox.moe/
70 | | cow | CowTransfer | https://www.cowtransfer.com/ |
71 | | gof | GoFile | https://gofile.io/ |
72 | | tmp | TmpLink | https://tmp.link/ |
73 | | vim | Vim-cn | https://img.vim-cn.com/ |
74 | | wss | WenShuShu | https://www.wenshushu.cn/ |
75 | | wet | WeTransfer | https://wetransfer.com/ |
76 | | flk | FileLink | https://filelink.io/ |
77 | | trs | Transfer.sh | https://transfer.sh/ |
78 | | lzs | Lanzous | https://www.lanzous.com/ |
79 |
80 | # Credits
81 | --------
82 | - [EfanGSIs](github.com/erfanoadbi) for his GSI porting tool
83 |
84 | - Me for creating these workflows & upload system
85 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright [yyyy] [name of copyright owner]
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------