Skip to content
This repository has been archived by the owner on Mar 5, 2021. It is now read-only.

Commit

Permalink
fix for #123
Browse files Browse the repository at this point in the history
Update RpmBuilder.java

Signed-off-by: yarix <yariv.amar@gmail.com>
  • Loading branch information
yarix authored and ctron committed May 3, 2018
1 parent ab676a7 commit 8b71b04
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 3 deletions.
Expand Up @@ -10,6 +10,7 @@
* Red Hat Inc - fix an issue with no-files RPMs
* - allowing the target name for the customizer
* - allow lead arch/os override
* Yariv Amar - customize RPM final file name
*******************************************************************************/
package org.eclipse.packagedrone.utils.rpm.build;

Expand Down Expand Up @@ -509,6 +510,38 @@ protected void customizeSymbolicLink ( final FileEntry entry, final FileInformat

private OperatingSystem leadOverrideOperatingSystem;

private RpmFileNameProvider rpmFileNameProvider = LEGACY_FILENAME_PROVIDER;

/**
* this provider is the legacy file name format, using "-" before the "arch.rpm"
* it is here, and set as the default for backwards compatibility
*/
public static final RpmFileNameProvider LEGACY_FILENAME_PROVIDER = new RpmFileNameProvider () {

@Override
public String getRpmFileName ( final RpmBuilder rpmBuilder )
{
final StringBuilder sb = new StringBuilder ( RpmLead.toLeadName ( rpmBuilder.getName (), rpmBuilder.getVersion () ) );
sb.append ( '-' ).append ( rpmBuilder.getArchitecture () ).append ( ".rpm" );
return sb.toString ();
}
};

/**
* this rpm file name provider follows the standard RPM file name as
* {@code <name>-<version>-<release>.<architecture>.rpm}
*/
public static final RpmFileNameProvider DEFAULT_FILENAME_PROVIDER = new RpmFileNameProvider () {

@Override
public String getRpmFileName ( final RpmBuilder rpmBuilder )
{
final StringBuilder sb = new StringBuilder ( RpmLead.toLeadName ( rpmBuilder.getName (), rpmBuilder.getVersion () ) );
sb.append ( '.' ).append ( rpmBuilder.getArchitecture () ).append ( ".rpm" );
return sb.toString ();
}
};

public RpmBuilder ( final String name, final String version, final String release, final Path target ) throws IOException
{
this ( name, version, release, "noarch", target );
Expand Down Expand Up @@ -754,9 +787,7 @@ private Path makeTargetFile ( final Path target )

private String makeDefaultFileName ()
{
final StringBuilder sb = new StringBuilder ( RpmLead.toLeadName ( this.name, this.version ) );
sb.append ( '-' ).append ( this.architecture ).append ( ".rpm" );
return sb.toString ();
return this.rpmFileNameProvider.getRpmFileName ( this );
}

/**
Expand Down Expand Up @@ -1142,4 +1173,18 @@ private void setScript ( final RpmTag interpreterTag, final RpmTag scriptTag, fi
this.header.putString ( scriptTag, script );
}
}

public void setRpmFileNameProvider ( final RpmFileNameProvider provider )
{
if ( provider == null )
{
throw new IllegalArgumentException ( "RPM file name provider must not be null, " );
}
this.rpmFileNameProvider = provider;
}

public RpmFileNameProvider getRpmFileNameProvider ()
{
return this.rpmFileNameProvider;
}
}
@@ -0,0 +1,18 @@
/*******************************************************************************
* Copyright (c) 2018 Yariv Amar
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Yariv Amar - initial API
*******************************************************************************/
package org.eclipse.packagedrone.utils.rpm.build;

@FunctionalInterface
public interface RpmFileNameProvider
{
public String getRpmFileName ( final RpmBuilder rpmBuilder );

}

0 comments on commit 8b71b04

Please sign in to comment.