Skip to content

Commit 842d071

Browse files
committed
update ci configuration
1 parent 036720e commit 842d071

File tree

8 files changed

+235
-204
lines changed

8 files changed

+235
-204
lines changed

.amxxpack.json

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
{
22
"compiler": {
3-
"version": "1.9.0-git5294",
4-
"dev": true,
3+
"version": "1.9",
54
"addons": ["cstrike"]
65
},
76
"include": [
@@ -22,10 +21,10 @@
2221
"assets": "./assets"
2322
},
2423
"output": {
25-
"plugins": "./dist/reapi/addons/amxmodx/plugins",
26-
"scripts": "./dist/reapi/addons/amxmodx/scripting",
27-
"include": "./dist/reapi/addons/amxmodx/scripting/include",
28-
"assets": "./dist/reapi"
24+
"plugins": "./dist/build/addons/amxmodx/plugins",
25+
"scripts": "./dist/build/addons/amxmodx/scripting",
26+
"include": "./dist/build/addons/amxmodx/scripting/include",
27+
"assets": "./dist/build"
2928
},
3029
"rules": {
3130
"flatCompilation": true

.github/workflows/build.yml

Lines changed: 26 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -17,79 +17,51 @@
1717
uses: actions/setup-node@v1
1818
with:
1919
node-version: 12
20-
- name: Setup Build Variables
21-
id: buildvars
22-
uses: actions/github-script@v3
20+
- name: Install Dependencies
21+
run: npm install
22+
- name: Build project
23+
run: npm run build
24+
- name: Pack bundles
25+
run: npm run pack
26+
- name: Setup Release Variables
27+
id: release_vars
28+
uses: actions/github-script@v6
2329
with:
2430
github-token: ${{secrets.GITHUB_TOKEN}}
2531
script: |
2632
try {
2733
const package = require(`${process.env.GITHUB_WORKSPACE}/package.json`);
28-
['name', 'version', 'description', 'author']
29-
.forEach(k => core.setOutput(k, package[k]));
34+
['name', 'version', 'description', 'author'].forEach(k => core.setOutput(k, package[k]));
3035
const tagVersion = package.version.replace(/\./g, '');
3136
core.setOutput('tagversion', tagVersion);
37+
core.setOutput('bundlename', `${package.name}-${tagVersion}`);
3238
core.setOutput('tagname', `${package.name}-${tagVersion}`);
3339
core.setOutput('releasename', `${package.description} Release v${package.version}`);
40+
41+
const bundles_metadata = require(`${process.env.GITHUB_WORKSPACE}/dist/bundles/files.json`);
42+
core.setOutput('srcArchive', bundles_metadata.srcArchive);
43+
core.setOutput('buildArchive', bundles_metadata.buildArchive);
44+
core.setOutput('resourcesArchive', bundles_metadata.resourcesArchive);
45+
core.setOutput('sdkArchive', bundles_metadata.sdkArchive);
46+
3447
} catch (err) {
3548
core.setFailed(err.message);
3649
}
37-
- name: Install Dependencies
38-
run: npm install
39-
- name: Build project
40-
run: npm run build
41-
- name: Pack bundles
42-
run: npm run pack
4350
- name: Create Release
4451
id: create_release
45-
uses: actions/create-release@v1
52+
uses: softprops/action-gh-release@v1
4653
env:
4754
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4855
with:
49-
tag_name: ${{ steps.buildvars.outputs.tagname }}
50-
release_name: ${{ steps.buildvars.outputs.releasename }}
56+
name: ${{ steps.release_vars.outputs.releasename }}
57+
tag_name: ${{ steps.release_vars.outputs.tagname }}
5158
draft: false
5259
prerelease: false
53-
- name: Upload Release Addons Src
54-
id: upload-release-addons-src
55-
uses: actions/upload-release-asset@v1
56-
env:
57-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
58-
with:
59-
upload_url: ${{ steps.create_release.outputs.upload_url }}
60-
asset_path: ./dist/bundles/zombiepanic-${{ steps.buildvars.outputs.tagversion }}-addons-src.zip
61-
asset_name: zombiepanic-${{ steps.buildvars.outputs.tagversion }}-addons-src.zip
62-
asset_content_type: application/zip
63-
- name: Upload Release Build
64-
id: upload-release-addons-reapi
65-
uses: actions/upload-release-asset@v1
66-
env:
67-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
68-
with:
69-
upload_url: ${{ steps.create_release.outputs.upload_url }}
70-
asset_path: ./dist/bundles/zombiepanic-${{ steps.buildvars.outputs.tagversion }}-addons-build.zip
71-
asset_name: zombiepanic-${{ steps.buildvars.outputs.tagversion }}-addons-build.zip
72-
asset_content_type: application/zip
73-
- name: Upload Release Resources
74-
id: upload-release-resources
75-
uses: actions/upload-release-asset@v1
76-
env:
77-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
78-
with:
79-
upload_url: ${{ steps.create_release.outputs.upload_url }}
80-
asset_path: ./dist/bundles/zombiepanic-${{ steps.buildvars.outputs.tagversion }}-resources.zip
81-
asset_name: zombiepanic-${{ steps.buildvars.outputs.tagversion }}-resources.zip
82-
asset_content_type: application/zip
83-
- name: Upload Release SDK
84-
id: upload-release-sdk
85-
uses: actions/upload-release-asset@v1
86-
env:
87-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
88-
with:
89-
upload_url: ${{ steps.create_release.outputs.upload_url }}
90-
asset_path: ./dist/bundles/zombiepanic-${{ steps.buildvars.outputs.tagversion }}-sdk.zip
91-
asset_name: zombiepanic-${{ steps.buildvars.outputs.tagversion }}-sdk.zip
92-
asset_content_type: application/zip
60+
files: |
61+
./dist/bundles/${{ steps.release_vars.outputs.srcArchive }}
62+
./dist/bundles/${{ steps.release_vars.outputs.buildArchive }}
63+
./dist/bundles/${{ steps.release_vars.outputs.resourcesArchive }}
64+
./dist/bundles/${{ steps.release_vars.outputs.sdkArchive }}
9365
- name: Cleanup
9466
run: |
9567
rm -rf ./.compiler

.vscode/extensions.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
{
22
"recommendations": [
3-
"klippy.amxxpawn-language",
4-
"exodiusstudios.comment-anchors"
3+
"klippy.amxxpawn-language"
54
]
65
}

.vscode/settings.json

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
{
22
"editor.tabSize": 4,
33
"editor.insertSpaces": true,
4-
"amxxpawn.compiler.executablePath": "${workspaceRoot}/compiler/amxxpc.exe",
54
"amxxpawn.compiler.includePaths": [
6-
"${workspaceRoot}/compiler/include",
7-
"${workspaceRoot}/src/include",
8-
"${workspaceRoot}/thirdparty/reapi/addons/amxmodx/scripting/include"
5+
"${workspaceRoot}/src/include",
6+
"${workspaceRoot}/.compiler/include",
7+
"${workspaceRoot}/.thirdparty/reapi/addons/amxmodx/scripting/include"
98
]
109
}

gulpfile.js

Lines changed: 106 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -6,53 +6,127 @@ const file = require('gulp-file');
66
const merge2 = require('merge2');
77

88
const package = require('./package.json');
9-
const generateReadme = require('./helpers/bundle-readme.generator');
109

10+
const README_INDENT = ' ';
11+
const README_INSTALLATION_TEXT = 'Extract addons and resources to cstrike folder';
1112
const WORK_DIR = process.cwd();
1213
const DIST_DIR = path.join(WORK_DIR, './dist');
14+
const DIST_BUILD_DIR = path.join(DIST_DIR, 'build');
1315
const BUILD_DIR = path.join(DIST_DIR, 'bundles');
14-
const REAPI_DIST_DIR = path.join(DIST_DIR, 'reapi');
16+
const BUILD_METADATA_FILE = path.join(DIST_DIR, 'bundles', 'files.json');
17+
const SDK_DIR = path.join(WORK_DIR, 'sdk');
18+
const ASSETS_DIR = path.join(WORK_DIR, 'assets');
1519

16-
if (!fs.existsSync(REAPI_DIST_DIR)) {
17-
throw new Error('Build ReAPI project before packing');
20+
if (!fs.existsSync(DIST_BUILD_DIR)) {
21+
throw new Error('Build project before packing');
22+
}
23+
24+
function isDirEmpty(dir) {
25+
if (!fs.existsSync(dir)) {
26+
return true;
27+
}
28+
29+
const files = fs.readdirSync(dir);
30+
31+
return !files.length;
32+
}
33+
34+
function generateReadme(files) {
35+
const filesArr = Object.keys(files).map(key => {
36+
const { name, description } = files[key];
37+
return { key, name, description };
38+
});
39+
40+
const fileMaxLength = Math.max(
41+
...filesArr.map(file => file.name.length)
42+
);
43+
44+
const resolvedFiles = filesArr.map(file => {
45+
const { name, description } = file;
46+
47+
if (!description) {
48+
return;
49+
}
50+
51+
const spacesNum = Math.max(fileMaxLength - name.length, 0);
52+
const spaces = ' '.repeat(spacesNum);
53+
54+
return `${README_INDENT}${name}${spaces} - ${description}`
55+
}).filter(Boolean).join('\n');
56+
57+
return [
58+
'[INSTALLATION]',
59+
`${README_INDENT}${README_INSTALLATION_TEXT}`,
60+
'',
61+
'[FILES]',
62+
resolvedFiles
63+
].join('\n');
1864
}
1965

2066
const resolveArchiveName = (sufix) => `${package.name}-${package.version.replace(/\./g, '')}-${sufix}.zip`;
2167

2268
const FILES = {
23-
bundleArchive: resolveArchiveName('bundle'),
2469
srcArchive: resolveArchiveName('addons-src'),
25-
addonsArchive: resolveArchiveName('addons-build'),
26-
resourcesArchive: resolveArchiveName('resources'),
27-
sdkArchive: resolveArchiveName('sdk'),
28-
readme: 'README.TXT'
70+
buildArchive: resolveArchiveName('addons-build'),
71+
resourcesArchive: !isDirEmpty(ASSETS_DIR) ? resolveArchiveName('resources') : null,
72+
sdkArchive: !isDirEmpty(SDK_DIR) ? resolveArchiveName('sdk') : null,
73+
readme: 'README.TXT',
74+
bundleArchive: resolveArchiveName('bundle')
2975
};
3076

3177
const BUNDLE_FILES = [
32-
{ name: FILES.addonsArchive, description: 'compiled plugins and source code' },
33-
{ name: FILES.resourcesArchive, description: 'mod resources' },
34-
{ name: FILES.sdkArchive, description: 'mod sdk' }
78+
{ name: FILES.buildArchive, description: 'compiled plugins and source code' }
3579
];
3680

81+
if (FILES.resourcesArchive) {
82+
BUNDLE_FILES.push({ name: FILES.resourcesArchive, description: 'mod resources' });
83+
}
84+
85+
if (FILES.sdkArchive) {
86+
BUNDLE_FILES.push({ name: FILES.sdkArchive, description: 'mod sdk' });
87+
}
88+
3789
gulp.task('pack:bundles', () => {
3890
const dirPatterns = {
39-
all: REAPI_DIST_DIR + '/**',
40-
addons: REAPI_DIST_DIR + '/addons{,/**}',
41-
plugins: REAPI_DIST_DIR + '/addons/amxmodx/plugins{,/**}',
42-
modules: REAPI_DIST_DIR + '/addons/amxmodx/modules{,/**}',
43-
sdk: WORK_DIR + '/sdk/**'
91+
all: DIST_BUILD_DIR + '/**',
92+
addons: DIST_BUILD_DIR + '/addons{,/**}',
93+
plugins: DIST_BUILD_DIR + '/addons/amxmodx/plugins{,/**}',
94+
modules: DIST_BUILD_DIR + '/addons/amxmodx/modules{,/**}',
95+
sdk: SDK_DIR + '/**'
4496
};
4597

98+
const zipTasks = [
99+
(
100+
gulp
101+
.src([dirPatterns.addons, '!' + dirPatterns.plugins, '!' + dirPatterns.modules])
102+
.pipe(zip(FILES.srcArchive))
103+
),
104+
(
105+
gulp
106+
.src([dirPatterns.addons])
107+
.pipe(zip(FILES.buildArchive))
108+
)
109+
];
110+
111+
if (FILES.resourcesArchive) {
112+
zipTasks.push(
113+
gulp
114+
.src([dirPatterns.all, '!' + dirPatterns.addons])
115+
.pipe(zip(FILES.resourcesArchive))
116+
);
117+
}
118+
119+
if(FILES.sdkArchive) {
120+
zipTasks.push(
121+
gulp
122+
.src([dirPatterns.sdk])
123+
.pipe(zip(FILES.sdkArchive))
124+
);
125+
}
126+
46127
return merge2([
47-
gulp.src([dirPatterns.addons, '!' + dirPatterns.plugins, '!' + dirPatterns.modules])
48-
.pipe(zip(FILES.srcArchive)),
49-
gulp.src([dirPatterns.addons])
50-
.pipe(zip(FILES.addonsArchive)),
51-
gulp.src([dirPatterns.all, '!' + dirPatterns.addons])
52-
.pipe(zip(FILES.resourcesArchive)),
53-
gulp.src([dirPatterns.sdk])
54-
.pipe(zip(FILES.sdkArchive)),
55-
file(FILES.readme, generateReadme(BUNDLE_FILES), {src: true})
128+
...zipTasks,
129+
file(FILES.readme, generateReadme(BUNDLE_FILES), { src: true })
56130
]).pipe(gulp.dest(BUILD_DIR));
57131
});
58132

@@ -62,6 +136,10 @@ gulp.task('pack:full', () => {
62136
return gulp.src(bundleFiles)
63137
.pipe(zip(FILES.bundleArchive))
64138
.pipe(gulp.dest(BUILD_DIR))
65-
})
139+
});
140+
141+
gulp.task('pack:metadata', cb => {
142+
fs.writeFile(BUILD_METADATA_FILE, JSON.stringify(FILES), cb);
143+
});
66144

67-
gulp.task('default', gulp.series('pack:bundles', 'pack:full'));
145+
gulp.task('default', gulp.series('pack:bundles', 'pack:full', 'pack:metadata'));

helpers/bundle-readme.generator.js

Lines changed: 0 additions & 26 deletions
This file was deleted.

0 commit comments

Comments
 (0)