Skip to content

Commit dd70e1a

Browse files
committed
release 1.2.4
1 parent 3efd3cb commit dd70e1a

15 files changed

+1465
-0
lines changed

BaseBuild.js

Lines changed: 191 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,191 @@
1+
Class.Define('BaseBuild', {
2+
Static: {
3+
BUILD_SCRIPTS_DIR: Wsh.Fso.GetAbsolutePathName('.').replace(/\\/g, '/'),
4+
GLOBAL_VERSION_NUMBER_FILENAME: 'GLOBAL_VERSION_NUMBER'
5+
},
6+
mainModuleDirName: '',
7+
subModuleDirsNameBegin: '',
8+
versions: [],
9+
modulesInfo: [],
10+
Constructor: function () {
11+
//
12+
},
13+
loadGlobalVersionNumber: function () {
14+
var fullPath = this.self.BUILD_SCRIPTS_DIR + '/' + this.self.GLOBAL_VERSION_NUMBER_FILENAME;
15+
var textStream = Wsh.Fso.OpenTextFile(fullPath, 1, 0); // for reading, as ASCII
16+
var versionNumStr = textStream.ReadLine().trim();
17+
textStream.Close();
18+
var versionNumStrParts = versionNumStr.split(".");
19+
for (var i = 0, l = versionNumStrParts.length; i < l; i += 1) {
20+
this.versions.push(
21+
parseInt(versionNumStrParts[i], 10)
22+
);
23+
}
24+
},
25+
completeModuleDirectoriesInfo: function () {
26+
var folder = Wsh.Fso.GetFolder("./.."),
27+
foldersEnum = new Enumerator(folder.subFolders),
28+
subFolder = {},
29+
lang = '',
30+
asmInfo = '',
31+
nugetCfgPath = '';
32+
for (; !foldersEnum.atEnd(); foldersEnum.moveNext()) {
33+
subFolder = Wsh.Fso.GetFolder(String(foldersEnum.item()));
34+
lang = '';
35+
asmInfo = '';
36+
if (subFolder.name.indexOf(this.subModuleDirsNameBegin) == 0 || subFolder.name == this.mainModuleDirName) {
37+
if (Wsh.Fso.FileExists(subFolder.path + '/My Project/AssemblyInfo.vb')) {
38+
lang = 'vb';
39+
asmInfo = subFolder.path + '/My Project/AssemblyInfo.vb';
40+
} else if (Wsh.Fso.FileExists(subFolder.path + '/Properties/AssemblyInfo.cs')) {
41+
lang = 'cs';
42+
asmInfo = subFolder.path + '/Properties/AssemblyInfo.cs';
43+
}
44+
if (!lang) continue;
45+
this.modulesInfo.push({
46+
lang: lang,
47+
dirFullPath: subFolder.path,
48+
dirName: subFolder.name,
49+
asmInfo: asmInfo,
50+
nugetCfg: this._tryToFindNugetConfigFile(subFolder.path)
51+
});
52+
}
53+
}
54+
this.modulesInfo.sort().reverse();
55+
},
56+
_tryToFindNugetConfigFile: function (dirFullPath) {
57+
var folder = Wsh.Fso.GetFolder(dirFullPath),
58+
filesEnum = new Enumerator(folder.files),
59+
fileExt = '',
60+
result = '';
61+
for (; !filesEnum.atEnd() ; filesEnum.moveNext()) {
62+
file = Wsh.Fso.GetFile(String(filesEnum.item()));
63+
fileExt = String(Wsh.Fso.GetExtensionName(file.Path)).toLowerCase();
64+
if (fileExt == 'nuspec') {
65+
result = file.Path;
66+
break;
67+
}
68+
}
69+
return result;
70+
},
71+
cleanAllBinDirectoriesForNupkgs: function () {
72+
var dirFullPath = '';
73+
for (var i = 0, l = this.modulesInfo.length; i < l; i += 1) {
74+
dirFullPath = this.modulesInfo[i].dirFullPath;
75+
this.cleanDirectory(dirFullPath + '/bin/Debug');
76+
this.cleanDirectory(dirFullPath + '/bin/Release');
77+
}
78+
},
79+
setUpVersionToAssemblyInfos: function () {
80+
var readStream = null,
81+
writeStream = null,
82+
asmInfoFullPath = '',
83+
asmInfoContent = '';
84+
for (var i = 0, l = this.modulesInfo.length; i < l; i += 1) {
85+
asmInfoFullPath = this.modulesInfo[i].asmInfo;
86+
// open for reading, if file doesn't exists, do not create new
87+
readStream = Wsh.Fso.OpenTextFile(asmInfoFullPath, 1, false);
88+
asmInfoContent = readStream.ReadAll();
89+
readStream.Close();
90+
asmInfoContent = this._setUpVersionToAssemblyInfoContent(asmInfoContent, 'AssemblyVersion');
91+
asmInfoContent = this._setUpVersionToAssemblyInfoContent(asmInfoContent, 'AssemblyFileVersion');
92+
// for overwriting, not as Unicode
93+
writeStream = Wsh.Fso.CreateTextFile(asmInfoFullPath, true, false);
94+
writeStream.Write(asmInfoContent);
95+
writeStream.Close();
96+
}
97+
},
98+
_setUpVersionToAssemblyInfoContent: function (asmInfoContent, attrName) {
99+
var index = 0,
100+
attrBegin = 0,
101+
attrEnd = 0,
102+
version = '';
103+
while (true) {
104+
attrBegin = asmInfoContent.indexOf(attrName + '(', index);
105+
if (attrBegin == -1) break;
106+
attrBegin += attrName.length + 1;
107+
attrEnd = asmInfoContent.indexOf(')', attrBegin);
108+
if (attrEnd == -1) break;
109+
version = asmInfoContent.substring(attrBegin, attrEnd)
110+
.trim('"\' \t\n\r');
111+
if (!/^([0-9\.]*)$/gi.test(version)) {
112+
index = attrEnd;
113+
continue;
114+
}
115+
asmInfoContent = asmInfoContent.substr(0, attrBegin)
116+
+ '"' + this.versions.join('.') + '"'
117+
+ asmInfoContent.substr(attrEnd);
118+
break;
119+
}
120+
return asmInfoContent;
121+
},
122+
setUpVersionToNuspecCfgs: function () {
123+
var readStream = null,
124+
writeStream = null,
125+
nugetCfgFullPath = '',
126+
nugetCfgContent = '';
127+
for (var i = 0, l = this.modulesInfo.length; i < l; i += 1) {
128+
nugetCfgFullPath = this.modulesInfo[i].nugetCfg;
129+
if (!nugetCfgFullPath) continue;
130+
// open for reading, if file doesn't exists, do not create new
131+
readStream = Wsh.Fso.OpenTextFile(nugetCfgFullPath, 1, false);
132+
nugetCfgContent = readStream.ReadAll();
133+
readStream.Close();
134+
nugetCfgContent = this._setUpVersionToNugspecCfgContent(nugetCfgContent);
135+
// for overwriting, not as Unicode
136+
writeStream = Wsh.Fso.CreateTextFile(nugetCfgFullPath, true, false);
137+
writeStream.Write(nugetCfgContent);
138+
writeStream.Close();
139+
}
140+
},
141+
_setUpVersionToNugspecCfgContent: function (nugetCfgContent) {
142+
var index = 0,
143+
openingNode = '<version>',
144+
closingNode = '</version>',
145+
valueBegin = 0,
146+
valueEnd = 0,
147+
versionStr = '';
148+
while (true) {
149+
valueBegin = nugetCfgContent.indexOf(openingNode, index);
150+
if (valueBegin == -1) break;
151+
valueBegin += openingNode.length;
152+
valueEnd = nugetCfgContent.indexOf(closingNode, valueBegin);
153+
if (valueEnd == -1) break;
154+
versionStr = nugetCfgContent.substring(valueBegin, valueEnd)
155+
.trim('"\' \t\n\r');
156+
if (!/^([0-9\.]*)$/gi.test(versionStr)) {
157+
index = valueEnd;
158+
continue;
159+
}
160+
nugetCfgContent = nugetCfgContent.substr(0, valueBegin)
161+
+ this.versions.join('.')
162+
+ nugetCfgContent.substr(valueEnd);
163+
break;
164+
}
165+
return nugetCfgContent;
166+
},
167+
cleanDirectory: function (relativeOrAbsolutePath, allFiles) {
168+
var folder = Wsh.Fso.GetFolder(relativeOrAbsolutePath),
169+
filesEnum = new Enumerator(folder.files),
170+
allFiles = !!allFiles,
171+
fileExt = '';
172+
for (; !filesEnum.atEnd() ; filesEnum.moveNext()) {
173+
file = Wsh.Fso.GetFile(String(filesEnum.item()));
174+
fileExt = String(Wsh.Fso.GetExtensionName(file.Path)).toLowerCase();
175+
if (allFiles || (!allFiles && fileExt == 'nupkg')) {
176+
try {
177+
Wsh.Fso.DeleteFile(file.Path);
178+
} catch (e) { }
179+
}
180+
}
181+
},
182+
incrementGlobalVersionNumberRevision: function () {
183+
this.versions[3] += 1;
184+
},
185+
storeGlobalVersionNumber: function () {
186+
var fullPath = this.self.BUILD_SCRIPTS_DIR + '/' + this.self.GLOBAL_VERSION_NUMBER_FILENAME;
187+
var textStream = Wsh.Fso.CreateTextFile(fullPath, true, false); // for overwriting, not as Unicode
188+
textStream.Write(this.versions.join('.'));
189+
textStream.Close();
190+
}
191+
});

Databasic.BuildCommands.jsproj

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<ItemGroup Label="ProjectConfigurations">
4+
<ProjectConfiguration Include="Debug|AnyCPU">
5+
<Configuration>Debug</Configuration>
6+
<Platform>AnyCPU</Platform>
7+
</ProjectConfiguration>
8+
<ProjectConfiguration Include="Debug|ARM">
9+
<Configuration>Debug</Configuration>
10+
<Platform>ARM</Platform>
11+
</ProjectConfiguration>
12+
<ProjectConfiguration Include="Debug|x64">
13+
<Configuration>Debug</Configuration>
14+
<Platform>x64</Platform>
15+
</ProjectConfiguration>
16+
<ProjectConfiguration Include="Debug|x86">
17+
<Configuration>Debug</Configuration>
18+
<Platform>x86</Platform>
19+
</ProjectConfiguration>
20+
<ProjectConfiguration Include="Release|AnyCPU">
21+
<Configuration>Release</Configuration>
22+
<Platform>AnyCPU</Platform>
23+
</ProjectConfiguration>
24+
<ProjectConfiguration Include="Release|ARM">
25+
<Configuration>Release</Configuration>
26+
<Platform>ARM</Platform>
27+
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
28+
</ProjectConfiguration>
29+
<ProjectConfiguration Include="Release|x64">
30+
<Configuration>Release</Configuration>
31+
<Platform>x64</Platform>
32+
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
33+
</ProjectConfiguration>
34+
<ProjectConfiguration Include="Release|x86">
35+
<Configuration>Release</Configuration>
36+
<Platform>x86</Platform>
37+
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
38+
</ProjectConfiguration>
39+
</ItemGroup>
40+
<ItemGroup>
41+
<Content Include="BaseBuild.js" />
42+
<Content Include="GLOBAL_VERSION_NUMBER" />
43+
<Content Include="PostBuild.bat" />
44+
<Content Include="PostBuild.wsf" />
45+
<Content Include="PreBuild.bat" />
46+
<Content Include="PreBuild.wsf" />
47+
<Content Include="WSH\Class.js" />
48+
<Content Include="WSH\Json2.js" />
49+
<Content Include="WSH\Log.js" />
50+
<Content Include="WSH\Shell.js" />
51+
<Content Include="WSH\String.js" />
52+
<Content Include="WSH\Wsh.js" />
53+
<Content Include="_references.js" />
54+
</ItemGroup>
55+
<ItemGroup>
56+
<AppxManifest Include="package.appxmanifest">
57+
<SubType>Designer</SubType>
58+
</AppxManifest>
59+
</ItemGroup>
60+
<PropertyGroup Label="Globals">
61+
<ProjectGuid>49ea35a8-6b00-4612-85cc-1b8c727daab4</ProjectGuid>
62+
</PropertyGroup>
63+
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
64+
<PropertyGroup Condition="'$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0'">
65+
<VisualStudioVersion>14.0</VisualStudioVersion>
66+
</PropertyGroup>
67+
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\$(WMSJSProjectDirectory)\Microsoft.VisualStudio.$(WMSJSProject).Default.props" />
68+
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\$(WMSJSProjectDirectory)\Microsoft.VisualStudio.$(WMSJSProject).props" />
69+
<PropertyGroup>
70+
<TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>
71+
<TargetPlatformVersion>10.0.14393.0</TargetPlatformVersion>
72+
<TargetPlatformMinVersion>10.0.10586.0</TargetPlatformMinVersion>
73+
<MinimumVisualStudioVersion>$(VersionNumberMajor).$(VersionNumberMinor)</MinimumVisualStudioVersion>
74+
<DefaultLanguage>en-US</DefaultLanguage>
75+
<PackageCertificateKeyFile>App2_TemporaryKey.pfx</PackageCertificateKeyFile>
76+
</PropertyGroup>
77+
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\$(WMSJSProjectDirectory)\Microsoft.VisualStudio.$(WMSJSProject).targets" />
78+
<!-- To modify your build process, add your task inside one of the targets below then uncomment
79+
that target and the DisableFastUpToDateCheck PropertyGroup.
80+
Other similar extension points exist, see Microsoft.Common.targets.
81+
<Target Name="BeforeBuild">
82+
</Target>
83+
<Target Name="AfterBuild">
84+
</Target>
85+
<PropertyGroup>
86+
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
87+
</PropertyGroup>
88+
-->
89+
</Project>

GLOBAL_VERSION_NUMBER

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1.2.4.1

PostBuild.bat

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
@cscript.exe PostBuild.wsf "c:\works\tec\vb\databasic\Databasic.All\bin\Debug\"

PostBuild.wsf

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<job>
2+
<script language="JScript" src="./WSH/Class.js"></script>
3+
<script language="JScript" src="./WSH/String.js"></script>
4+
<script language="JScript" src="./WSH/Log.js"></script>
5+
<script language="JScript" src="./WSH/Wsh.js"></script>
6+
<script language="JScript" src="./WSH/Shell.js"></script>
7+
<script language="JScript" src="./BaseBuild.js"></script>
8+
<script language="JScript">
9+
10+
Class.Define('PostBuild', {
11+
Constructor: function () {
12+
try {
13+
var destinationDir = Wsh.Fso.GetFolder("../Databasic.NuGetPackages")
14+
.path.replace(/\\/g, '/') + '/',
15+
buildPath = WScript.Arguments.Item(0).replace(/\\/gi, '/') + '/',
16+
folder = Wsh.Fso.GetFolder(buildPath),
17+
filesEnum = new Enumerator(folder.files),
18+
fileExt = '',
19+
nupkgFiles = [],
20+
lastNupkgFile = '';
21+
for (; !filesEnum.atEnd() ; filesEnum.moveNext()) {
22+
file = Wsh.Fso.GetFile(String(filesEnum.item()));
23+
fileExt = String(Wsh.Fso.GetExtensionName(file.Path)).toLowerCase();
24+
if (fileExt == 'nupkg') {
25+
nupkgFiles.push(file.Name);
26+
}
27+
}
28+
nupkgFiles.sort().reverse();
29+
lastNupkgFile = nupkgFiles.shift();
30+
Wsh.Fso.CopyFile(
31+
buildPath + lastNupkgFile,
32+
destinationDir + lastNupkgFile,
33+
true // to overwrite existing
34+
);
35+
for (var i = 0, l = nupkgFiles.length; i < l; i += 1) {
36+
try {
37+
Wsh.Fso.DeleteFile(buildPath + nupkgFiles[i]);
38+
} catch (e) { }
39+
}
40+
Wsh.WriteLine("PostBuild.wsf - SUCCESS: New NuGet package copied successfully.");
41+
} catch (e) {
42+
Wsh.Echo("PostBuild.wsf - ERROR: " + e.message + ".");
43+
}
44+
}
45+
});
46+
47+
new PostBuild();
48+
49+
</script>
50+
</job>

PreBuild.bat

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
@cscript.exe PreBuild.wsf

PreBuild.wsf

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<job>
2+
<script language="JScript" src="./WSH/Class.js"></script>
3+
<script language="JScript" src="./WSH/String.js"></script>
4+
<script language="JScript" src="./WSH/Log.js"></script>
5+
<script language="JScript" src="./WSH/Wsh.js"></script>
6+
<script language="JScript" src="./WSH/Shell.js"></script>
7+
<script language="JScript" src="./BaseBuild.js"></script>
8+
<script language="JScript">
9+
10+
Class.Define('PreBuild', {
11+
Extend: BaseBuild,
12+
mainModuleDirName: 'Databasic',
13+
subModuleDirsNameBegin: 'Databasic.',
14+
Constructor: function () {
15+
try {
16+
this.parent();
17+
this.loadGlobalVersionNumber();
18+
this.completeModuleDirectoriesInfo();
19+
this.setUpVersionToAssemblyInfos();
20+
this.setUpVersionToNuspecCfgs();
21+
this.incrementGlobalVersionNumberRevision();
22+
this.storeGlobalVersionNumber();
23+
this.cleanDirectory("../Databasic.NuGetPackages");
24+
Wsh.WriteLine("PreBuild.wsf - SUCCESS: All version numbers before build updated successfully.");
25+
} catch (e) {
26+
Wsh.Echo("PreBuild.wsf - ERROR: " + e.message + ".");
27+
}
28+
}
29+
});
30+
31+
new PreBuild();
32+
33+
</script>
34+
</job>

0 commit comments

Comments
 (0)