Author: fmui
Date: Fri May 13 17:00:41 2016
New Revision: 1743705
URL: http://svn.apache.org/viewvc?rev=1743705&view=rev
Log:
PortCMIS: release preparation
Modified:
chemistry/portcmis/trunk/NOTICE
chemistry/portcmis/trunk/PortCMIS/build.bat
chemistry/portcmis/trunk/PortCMIS/client/ClientImpl.cs
chemistry/portcmis/trunk/PortCMIS/client/ClientIntf.cs
chemistry/portcmis/trunk/PortCMIS/client/ClientObjectFactory.cs
chemistry/portcmis/trunk/PortCMIS/client/ClientObjects.cs
chemistry/portcmis/trunk/PortCMIS/client/ClientUtils.cs
chemistry/portcmis/trunk/PortCMISWin/build.bat
chemistry/portcmis/trunk/README
chemistry/portcmis/trunk/release.bat
Modified: chemistry/portcmis/trunk/NOTICE
URL:
http://svn.apache.org/viewvc/chemistry/portcmis/trunk/NOTICE?rev=1743705&r1=1743704&r2=1743705&view=diff
==============================================================================
--- chemistry/portcmis/trunk/NOTICE (original)
+++ chemistry/portcmis/trunk/NOTICE Fri May 13 17:00:41 2016
@@ -1,2 +1,2 @@
Apache Chemistry PortCMIS
-Copyright 2015 The Apache Software Foundation
\ No newline at end of file
+Copyright 2016 The Apache Software Foundation
\ No newline at end of file
Modified: chemistry/portcmis/trunk/PortCMIS/build.bat
URL:
http://svn.apache.org/viewvc/chemistry/portcmis/trunk/PortCMIS/build.bat?rev=1743705&r1=1743704&r2=1743705&view=diff
==============================================================================
--- chemistry/portcmis/trunk/PortCMIS/build.bat (original)
+++ chemistry/portcmis/trunk/PortCMIS/build.bat Fri May 13 17:00:41 2016
@@ -21,6 +21,7 @@ rem under the License.
echo Removing old DLLs
rmdir /Q /S bin
rmdir /Q /S obj
+rmdir /Q /S nupkg
echo Building Debug DLL...
msbuild PortCMIS.csproj /ToolsVersion:4.0 /p:Configuration=Debug
@@ -28,7 +29,8 @@ msbuild PortCMIS.csproj /ToolsVersion:4.
echo Building Release DLL...
msbuild PortCMIS.csproj /ToolsVersion:4.0 /p:Configuration=Release
-nuget pack
+mkdir nupkg
+nuget pack -o nupkg
rem echo Building documentation...
rem msbuild PortCMIS.shfbproj /ToolsVersion:4.0 /p:Configuration=Release
\ No newline at end of file
Modified: chemistry/portcmis/trunk/PortCMIS/client/ClientImpl.cs
URL:
http://svn.apache.org/viewvc/chemistry/portcmis/trunk/PortCMIS/client/ClientImpl.cs?rev=1743705&r1=1743704&r2=1743705&view=diff
==============================================================================
--- chemistry/portcmis/trunk/PortCMIS/client/ClientImpl.cs (original)
+++ chemistry/portcmis/trunk/PortCMIS/client/ClientImpl.cs Fri May 13 17:00:41
2016
@@ -509,6 +509,33 @@ namespace PortCMIS.Client.Impl
return result;
}
+ /// <inheritdoc/>
+ public IObjectType CreateType(ITypeDefinition type)
+ {
+ CheckCmisVersion();
+
+ ITypeDefinition newType =
Binding.GetRepositoryService().CreateType(RepositoryId, type, null);
+ return ObjectFactory.ConvertTypeDefinition(newType);
+ }
+
+ /// <inheritdoc/>
+ public IObjectType UpdateType(ITypeDefinition type)
+ {
+ CheckCmisVersion();
+
+ ITypeDefinition updatedType =
Binding.GetRepositoryService().UpdateType(RepositoryId, type, null);
+ return ObjectFactory.ConvertTypeDefinition(updatedType);
+ }
+
+ /// <inheritdoc/>
+ public void DeleteType(string typeId)
+ {
+ CheckCmisVersion();
+
+ Binding.GetRepositoryService().DeleteType(RepositoryId, typeId,
null);
+ }
+
+
// navigation
/// <inheritdoc/>
@@ -1083,10 +1110,7 @@ namespace PortCMIS.Client.Impl
public IObjectId CreateDocument(IDictionary<string, object>
properties, IObjectId folderId, IContentStream contentStream,
VersioningState? versioningState, IList<IPolicy> policies,
IList<IAce> addAces, IList<IAce> removeAces)
{
- if (properties == null || properties.Count == 0)
- {
- throw new ArgumentException("Properties must not be empty!");
- }
+ CheckProperties(properties);
string newId =
Binding.GetObjectService().CreateDocument(RepositoryId,
ObjectFactory.ConvertProperties(properties, null, null,
(versioningState == VersioningState.CheckedOut ?
CreateAndCheckoutUpdatability : CreateUpdatability)),
@@ -1157,10 +1181,7 @@ namespace PortCMIS.Client.Impl
{
throw new ArgumentException("Folder ID must be set!");
}
- if (properties == null || properties.Count == 0)
- {
- throw new ArgumentException("Properties must not be empty!");
- }
+ CheckProperties(properties);
string newId =
Binding.GetObjectService().CreateFolder(RepositoryId,
ObjectFactory.ConvertProperties(properties, null, null, CreateUpdatability),
(folderId == null ? null : folderId.Id),
ObjectFactory.ConvertPolicies(policies), ObjectFactory.ConvertAces(addAces),
@@ -1179,10 +1200,7 @@ namespace PortCMIS.Client.Impl
public IObjectId CreatePolicy(IDictionary<string, object> properties,
IObjectId folderId, IList<IPolicy> policies,
IList<IAce> addAces, IList<IAce> removeAces)
{
- if (properties == null || properties.Count == 0)
- {
- throw new ArgumentException("Properties must not be empty!");
- }
+ CheckProperties(properties);
string newId =
Binding.GetObjectService().CreatePolicy(RepositoryId,
ObjectFactory.ConvertProperties(properties, null, null, CreateUpdatability),
(folderId == null ? null : folderId.Id),
ObjectFactory.ConvertPolicies(policies), ObjectFactory.ConvertAces(addAces),
@@ -1201,10 +1219,7 @@ namespace PortCMIS.Client.Impl
public IObjectId CreateItem(IDictionary<string, object> properties,
IObjectId folderId, IList<IPolicy> policies, IList<IAce> addAces,
IList<IAce> removeAces)
{
- if (properties == null || properties.Count == 0)
- {
- throw new ArgumentException("Properties must not be empty!");
- }
+ CheckProperties(properties);
string newId = Binding.GetObjectService().CreateItem(RepositoryId,
ObjectFactory.ConvertProperties(properties, null, null, CreateUpdatability),
(folderId == null ? null : folderId.Id),
ObjectFactory.ConvertPolicies(policies), ObjectFactory.ConvertAces(addAces),
@@ -1223,10 +1238,7 @@ namespace PortCMIS.Client.Impl
public IObjectId CreateRelationship(IDictionary<string, object>
properties, IList<IPolicy> policies, IList<IAce> addAces,
IList<IAce> removeAces)
{
- if (properties == null || properties.Count == 0)
- {
- throw new ArgumentException("Properties must not be empty!");
- }
+ CheckProperties(properties);
string newId =
Binding.GetObjectService().CreateRelationship(RepositoryId,
ObjectFactory.ConvertProperties(properties, null, null, CreateUpdatability),
ObjectFactory.ConvertPolicies(policies),
ObjectFactory.ConvertAces(addAces), ObjectFactory.ConvertAces(removeAces),
null);
@@ -1282,6 +1294,66 @@ namespace PortCMIS.Client.Impl
return new CollectionEnumerable<IRelationship>(new
PageFetcher<IRelationship>(DefaultContext.MaxItemsPerPage, fetchPageDelegate));
}
+ /// <inheritdoc/>
+ public IList<IBulkUpdateObjectIdAndChangeToken>
BulkUpdateProperties(IList<ICmisObject> objects,
+ IDictionary<string, object> properties, IList<string>
addSecondaryTypeIds, IList<string> removeSecondaryTypeIds)
+ {
+ CheckCmisVersion();
+ CheckProperties(properties);
+
+ IObjectType objectType = null;
+ IDictionary<string, ISecondaryType> secondaryTypes = new
Dictionary<string, ISecondaryType>();
+
+ // gather secondary types
+ if (addSecondaryTypeIds != null)
+ {
+ foreach (string stid in addSecondaryTypeIds)
+ {
+ IObjectType secondaryType = GetTypeDefinition(stid);
+
+ if (!(secondaryType is ISecondaryType))
+ {
+ throw new ArgumentException("Secondary types contains
a type that is not a secondary type: "
+ + secondaryType.Id, "addSecondaryTypeIds");
+ }
+
+ secondaryTypes[secondaryType.Id] =
(ISecondaryType)secondaryType;
+ }
+ }
+
+ // gather IDs and change tokens
+ IList<IBulkUpdateObjectIdAndChangeToken> objectIdsAndChangeTokens
= new List<IBulkUpdateObjectIdAndChangeToken>();
+ foreach (ICmisObject obj in objects)
+ {
+ if (obj == null)
+ {
+ continue;
+ }
+
+ objectIdsAndChangeTokens.Add(new
BulkUpdateObjectIdAndChangeToken() { Id = obj.Id, ChangeToken = obj.ChangeToken
});
+
+ if (objectType == null)
+ {
+ objectType = obj.ObjectType;
+ }
+
+ if (obj.SecondaryTypes != null)
+ {
+ foreach (ISecondaryType secondaryType in
obj.SecondaryTypes)
+ {
+ secondaryTypes[secondaryType.Id] = secondaryType;
+ }
+ }
+ }
+
+ ISet<Updatability> updatebility = new HashSet<Updatability>();
+ updatebility.Add(Updatability.ReadWrite);
+
+ return
Binding.GetObjectService().BulkUpdateProperties(RepositoryId,
objectIdsAndChangeTokens,
+ ObjectFactory.ConvertProperties(properties, objectType,
secondaryTypes.Values, updatebility),
+ addSecondaryTypeIds, removeSecondaryTypeIds, null);
+ }
+
// delete
/// <inheritdoc/>
@@ -1448,6 +1520,28 @@ namespace PortCMIS.Client.Impl
throw new ArgumentException("Path must start with a '/'!");
}
}
+
+ /// <summary>
+ /// Checks if the CMIS version of this repository is 1.1.
+ /// </summary>
+ protected void CheckCmisVersion()
+ {
+ if (RepositoryInfo.CmisVersion == CmisVersion.Cmis_1_0)
+ {
+ throw new CmisNotSupportedException("This method is not
supported for CMIS 1.0 repositories.");
+ }
+ }
+
+ /// <summary>
+ /// Checks if properties are set.
+ /// </summary>
+ protected void CheckProperties(IDictionary<string, object> properties)
+ {
+ if (properties == null || properties.Count == 0)
+ {
+ throw new ArgumentException("Properties must not be empty!");
+ }
+ }
}
internal class QueryStatement : IQueryStatement
Modified: chemistry/portcmis/trunk/PortCMIS/client/ClientIntf.cs
URL:
http://svn.apache.org/viewvc/chemistry/portcmis/trunk/PortCMIS/client/ClientIntf.cs?rev=1743705&r1=1743704&r2=1743705&view=diff
==============================================================================
--- chemistry/portcmis/trunk/PortCMIS/client/ClientIntf.cs (original)
+++ chemistry/portcmis/trunk/PortCMIS/client/ClientIntf.cs Fri May 13 17:00:41
2016
@@ -203,6 +203,26 @@ namespace PortCMIS.Client
/// <returns>the tree of types</returns>
IList<ITree<IObjectType>> GetTypeDescendants(string typeId, int depth,
bool includePropertyDefinitions);
+ /// <summary>
+ /// Creates a new object type.
+ /// </summary>
+ /// <param name="type">the type definition</param>
+ /// <returns>the newly created type</returns>
+ IObjectType CreateType(ITypeDefinition type);
+
+ /// <summary>
+ /// Updates an object type.
+ /// </summary>
+ /// <param name="type">the updated type definition</param>
+ /// <returns>the updated type</returns>
+ IObjectType UpdateType(ITypeDefinition type);
+
+ /// <summary>
+ /// Deletes a type.
+ /// </summary>
+ /// <param name="typeId">the type ID</param>
+ void DeleteType(string typeId);
+
// navigation
/// <summary>
@@ -618,6 +638,17 @@ namespace PortCMIS.Client
RelationshipDirection? relationshipDirection, IObjectType
type, IOperationContext context);
/// <summary>
+ /// Updates multiple objects in one request.
+ /// </summary>
+ /// <param name="objects">the objects</param>
+ /// <param name="properties">updated property values</param>
+ /// <param name="addSecondaryTypeIds">secondary types to add</param>
+ /// <param name="removeSecondaryTypeIds">secondary types to
remove</param>
+ /// <returns></returns>
+ IList<IBulkUpdateObjectIdAndChangeToken>
BulkUpdateProperties(IList<ICmisObject> objects,
+ IDictionary<string, object> properties, IList<string>
addSecondaryTypeIds, IList<string> removeSecondaryTypeIds);
+
+ /// <summary>
/// Deletes an object and, if it is a document, all versions in the
version series.
/// </summary>
/// <param name="objectId">the ID of the object</param>
@@ -775,12 +806,12 @@ namespace PortCMIS.Client
/// <summary>
/// Converts properties.
/// </summary>
- IDictionary<string, IProperty> ConvertProperties(IObjectType
objectType, IList<ISecondaryType> secondaryTypes, IProperties properties);
+ IDictionary<string, IProperty> ConvertProperties(IObjectType
objectType, ICollection<ISecondaryType> secondaryTypes, IProperties properties);
/// <summary>
/// Converts properties.
/// </summary>
- IProperties ConvertProperties(IDictionary<string, object> properties,
IObjectType type, IList<ISecondaryType> secondaryTypes, HashSet<Updatability>
updatabilityFilter);
+ IProperties ConvertProperties(IDictionary<string, object> properties,
IObjectType type, ICollection<ISecondaryType> secondaryTypes,
ISet<Updatability> updatabilityFilter);
/// <summary>
/// Converts properties from a query result.
Modified: chemistry/portcmis/trunk/PortCMIS/client/ClientObjectFactory.cs
URL:
http://svn.apache.org/viewvc/chemistry/portcmis/trunk/PortCMIS/client/ClientObjectFactory.cs?rev=1743705&r1=1743704&r2=1743705&view=diff
==============================================================================
--- chemistry/portcmis/trunk/PortCMIS/client/ClientObjectFactory.cs (original)
+++ chemistry/portcmis/trunk/PortCMIS/client/ClientObjectFactory.cs Fri May 13
17:00:41 2016
@@ -183,7 +183,7 @@ namespace PortCMIS.Client.Impl
}
/// <inheritdoc/>
- protected virtual IProperty ConvertProperty(IObjectType objectType,
IList<ISecondaryType> secondaryTypes, IPropertyData pd)
+ protected virtual IProperty ConvertProperty(IObjectType objectType,
ICollection<ISecondaryType> secondaryTypes, IPropertyData pd)
{
IPropertyDefinition definition = objectType[pd.Id];
if (definition == null)
@@ -215,7 +215,7 @@ namespace PortCMIS.Client.Impl
}
/// <inheritdoc/>
- public virtual IDictionary<string, IProperty>
ConvertProperties(IObjectType objectType, IList<ISecondaryType> secondaryTypes,
IProperties properties)
+ public virtual IDictionary<string, IProperty>
ConvertProperties(IObjectType objectType, ICollection<ISecondaryType>
secondaryTypes, IProperties properties)
{
if (objectType == null)
{
@@ -245,7 +245,7 @@ namespace PortCMIS.Client.Impl
}
/// <inheritdoc/>
- public virtual IProperties ConvertProperties(IDictionary<string,
object> properties, IObjectType type, IList<ISecondaryType> secondaryTypes,
HashSet<Updatability> updatabilityFilter)
+ public virtual IProperties ConvertProperties(IDictionary<string,
object> properties, IObjectType type, ICollection<ISecondaryType>
secondaryTypes, ISet<Updatability> updatabilityFilter)
{
// check input
if (properties == null)
@@ -272,7 +272,7 @@ namespace PortCMIS.Client.Impl
}
// get secondary types
- IList<ISecondaryType> allSecondaryTypes = null;
+ ICollection<ISecondaryType> allSecondaryTypes = null;
object secondaryTypeIds;
properties.TryGetValue(PropertyIds.SecondaryObjectTypeIds, out
secondaryTypeIds);
if (secondaryTypeIds is IList<string>)
Modified: chemistry/portcmis/trunk/PortCMIS/client/ClientObjects.cs
URL:
http://svn.apache.org/viewvc/chemistry/portcmis/trunk/PortCMIS/client/ClientObjects.cs?rev=1743705&r1=1743704&r2=1743705&view=diff
==============================================================================
--- chemistry/portcmis/trunk/PortCMIS/client/ClientObjects.cs (original)
+++ chemistry/portcmis/trunk/PortCMIS/client/ClientObjects.cs Fri May 13
17:00:41 2016
@@ -962,7 +962,7 @@ namespace PortCMIS.Client.Impl
{
newId = Session.CreateDocumentFromSource(this, properties,
targetFolderId, versioningState, policies, addAces, removeAces);
}
- catch (CmisNotSupportedException nse)
+ catch (CmisNotSupportedException)
{
newId = CopyViaClient(targetFolderId, properties,
versioningState, policies, addAces, removeAces);
}
Modified: chemistry/portcmis/trunk/PortCMIS/client/ClientUtils.cs
URL:
http://svn.apache.org/viewvc/chemistry/portcmis/trunk/PortCMIS/client/ClientUtils.cs?rev=1743705&r1=1743704&r2=1743705&view=diff
==============================================================================
--- chemistry/portcmis/trunk/PortCMIS/client/ClientUtils.cs (original)
+++ chemistry/portcmis/trunk/PortCMIS/client/ClientUtils.cs Fri May 13 17:00:41
2016
@@ -591,6 +591,7 @@ namespace PortCMIS.Client
return this.Equals(obj as ObjectId);
}
+ /// <inheritdoc/>
public bool Equals(ObjectId oid)
{
if (Object.ReferenceEquals(oid, null))
@@ -611,6 +612,7 @@ namespace PortCMIS.Client
return Id == oid.Id;
}
+ /// <inheritdoc/>
public static bool operator ==(ObjectId id1, ObjectId id2)
{
if (object.ReferenceEquals(id1, null))
@@ -621,6 +623,7 @@ namespace PortCMIS.Client
return id1.Id == id2.Id;
}
+ /// <inheritdoc/>
public static bool operator !=(ObjectId id1, ObjectId id2)
{
return !(id1 == id2);
Modified: chemistry/portcmis/trunk/PortCMISWin/build.bat
URL:
http://svn.apache.org/viewvc/chemistry/portcmis/trunk/PortCMISWin/build.bat?rev=1743705&r1=1743704&r2=1743705&view=diff
==============================================================================
--- chemistry/portcmis/trunk/PortCMISWin/build.bat (original)
+++ chemistry/portcmis/trunk/PortCMISWin/build.bat Fri May 13 17:00:41 2016
@@ -21,6 +21,7 @@ rem under the License.
echo Removing old DLLs
rmdir /Q /S bin
rmdir /Q /S obj
+rmdir /Q /S nupkg
echo Building Debug DLL...
msbuild PortCMISWin.csproj /ToolsVersion:4.0 /p:Configuration=Debug
@@ -28,7 +29,8 @@ msbuild PortCMISWin.csproj /ToolsVersion
echo Building Release DLL...
msbuild PortCMISWin.csproj /ToolsVersion:4.0 /p:Configuration=Release
-nuget pack
+mkdir nupkg
+nuget pack -o nupkg
rem echo Building documentation...
rem msbuild PortCMISWin.shfbproj /ToolsVersion:4.0 /p:Configuration=Release
\ No newline at end of file
Modified: chemistry/portcmis/trunk/README
URL:
http://svn.apache.org/viewvc/chemistry/portcmis/trunk/README?rev=1743705&r1=1743704&r2=1743705&view=diff
==============================================================================
--- chemistry/portcmis/trunk/README (original)
+++ chemistry/portcmis/trunk/README Fri May 13 17:00:41 2016
@@ -6,10 +6,54 @@ client library for the .NET framework 4.
See http://chemistry.apache.org/dotnet/portcmis.html for more information.
-This release is a bug fix release.
+This release is the initial release.
If you find a problem, please let us know:
https://issues.apache.org/jira/browse/CMIS
+Libraries
+---------
+
+PortCMIS consists of two libraries: PortCMIS and PortCMISWin.
+
+The PortCMIS library is a Portable Class Library and contains the main code.
+The PortCMISWin library adds support for Windows Runtime APIs, especially the
+Windows.Web.Http.HttpClient. Use it only if you need a specific feature that is
+not available with the System.Net.Http.HttpClient.
+
+
+Use this code to create a session with PortCMIS:
+
+ IDictionary<string, string> parameters = new Dictionary<string, string>() {
+ {SessionParameter.BindingType , BindingType.Browser},
+ {SessionParameter.BrowserUrl ,
"http://localhost:8080/inmemory/browser"},
+ {SessionParameter.RepositoryId , "A1"},
+ {SessionParameter.User , "user"},
+ {SessionParameter.Password , "password"}
+ };
+
+ ISessionFactory factory = SessionFactory.NewInstance();
+ ISession session = factory.CreateSession(parameters);
+
+
+Use this code to create a session with PortCMISWin:
+
+ IDictionary<string, string> parameters = new Dictionary<string,
string>() {
+ {SessionParameter.BindingType , BindingType.Browser},
+ {SessionParameter.BrowserUrl ,
"http://localhost:8080/inmemory/browser"},
+ {SessionParameter.RepositoryId , "A1"},
+ {SessionParameter.User , "user"},
+ {SessionParameter.Password , "password"}
+ };
+
+ ISessionFactory factory = WindowsSessionFactory.NewInstance();
+ ISession session = factory.CreateSession(parameters);
+
+
+Please note that the authentication provider interfaces are different for
+PortCMIS and PortCMISWin. Custom authentication provider implementations have
+to developed for either PortCMIS or PortCMISWin.
+
+
Change log
----------
Modified: chemistry/portcmis/trunk/release.bat
URL:
http://svn.apache.org/viewvc/chemistry/portcmis/trunk/release.bat?rev=1743705&r1=1743704&r2=1743705&view=diff
==============================================================================
--- chemistry/portcmis/trunk/release.bat (original)
+++ chemistry/portcmis/trunk/release.bat Fri May 13 17:00:41 2016
@@ -25,6 +25,7 @@ rem It requires Cygwin.
set PORTCMISVERSION=0.1
set PORTCMISZIPSRC=chemistry-portcmis-%PORTCMISVERSION%-src.zip
set PORTCMISZIPBIN=chemistry-portcmis-%PORTCMISVERSION%-bin.zip
+set PORTCMISZIPNUPKG=chemistry-portcmis-%PORTCMISVERSION%-nupkg.zip
set PORTCMISRC=RC1
set CYGWIN=ntea
@@ -33,34 +34,61 @@ echo Building...
cd PortCMIS
call build.bat
cd ..
+cd PortCMISWin
+call build.bat
+cd ..
echo Creating release directories...
rmdir /S /Q release-src
mkdir release-src
rmdir /S /Q release-bin
mkdir release-bin
+rmdir /S /Q release-nupkg
+mkdir release-nupkg
echo Copying readme, etc...
copy LICENSE release-src
copy LICENSE release-bin
+copy LICENSE release-nupkg
copy NOTICE release-src
copy NOTICE release-bin
+copy NOTICE release-nupkg
copy DEPENDENCIES release-src
copy DEPENDENCIES release-bin
+copy DEPENDENCIES release-nupkg
copy README release-src
copy README release-bin
+copy README release-nupkg
echo Copying binaries ...
copy PortCMIS\bin\Release\PortCMIS.dll release-bin
copy PortCMIS\doc\PortCMIS.chm release-bin
+copy PortCMISWin\bin\Release\PortCMISWin.dll release-bin
chmod -R a+rwx release-bin
+echo Copying nupkg ...
+xcopy PortCMIS\nupkg\*.nupkg release-nupkg
+xcopy PortCMIS\doc\PortCMIS.chm release-nupkg
+xcopy PortCMISWin\nupkg\*.nupkg release-nupkg
+chmod -R a+rwx release-nupkg
+
echo Copying source...
mkdir release-src\src
-xcopy PortCMIS release-src\src /E
-rmdir /S /Q release-src\src\bin
-rmdir /S /Q release-src\src\obj
-rmdir /S /Q release-src\src\doc
+
+mkdir release-src\src\PortCMIS
+xcopy PortCMIS release-src\src\PortCMIS /E
+rmdir /S /Q release-src\src\PortCMIS\bin
+rmdir /S /Q release-src\src\PortCMIS\obj
+rmdir /S /Q release-src\src\PortCMIS\doc
+rmdir /S /Q release-src\src\PortCMIS\nupkg
+
+mkdir release-src\src\PortCMISWin
+xcopy PortCMISWin release-src\src\PortCMISWin /E
+rmdir /S /Q release-src\src\PortCMISWin\bin
+rmdir /S /Q release-src\src\PortCMISWin\obj
+rmdir /S /Q release-src\src\PortCMISWin\doc
+rmdir /S /Q release-src\src\PortCMISWin\nupkg
+
chmod -R a+rwx release-src
echo Creating release file...
@@ -75,6 +103,10 @@ cd release-bin
zip -r ../artifacts/%PORTCMISZIPBIN% *
cd ..
+cd release-nupkg
+zip -r ../artifacts/%PORTCMISZIPNUPKG% *
+cd ..
+
echo Signing release file...
cd artifacts
@@ -86,6 +118,10 @@ gpg --armor --output %PORTCMISZIPBIN%.as
gpg --print-md MD5 %PORTCMISZIPBIN% > %PORTCMISZIPBIN%.md5
gpg --print-md SHA512 %PORTCMISZIPBIN% > %PORTCMISZIPBIN%.sha
+gpg --armor --output %PORTCMISZIPNUPKG%.asc --detach-sig %PORTCMISZIPNUPKG%
+gpg --print-md MD5 %PORTCMISZIPNUPKG% > %PORTCMISZIPNUPKG%.md5
+gpg --print-md SHA512 %PORTCMISZIPNUPKG% > %PORTCMISZIPNUPKG%.sha
+
cd ..
echo Creating RC tag