Permalink
Browse files

1.2.0.0 - NuGet support

  • Loading branch information...
ferventcoder committed Jan 23, 2011
1 parent 31b6ed9 commit 0459a06756b605d0191ecf8009a2d5ecece89b3e
View
@@ -1,23 +1,24 @@
Project UppercuT - Builds in Seconds, Not Days
=======
![UppercuT](https://github.com/chucknorris/uppercut/raw/master/docs/logo/UppercuT_Logo_Small.jpg "UppercuT - insanely easy. Insanely.")
![UppercuT](https://github.com/chucknorris/uppercut/raw/master/docs/logo/UppercuT_Logo_Small.jpg "UppercuT - insanely easy. Insanely.")
# LICENSE
Apache 2.0 - see docs/legal (just LEGAL in the zip folder)
Apache 2.0 - see docs/legal (just LEGAL in the zip folder)
# IMPORTANT
NOTE: If you are looking at the source - please run build.bat before opening the solution. It creates the SolutionVersion.cs file that is necessary for a successful build.
NOTE: If you are looking at the source - please run build.bat before opening the solution. It creates the SolutionVersion.cs file that is necessary for a successful build.
# INFO
## Overview
UppercuT is automated .NET build framework that is templated NAnt with conventions. UppercuT is the insanely easy to use build framework.
UppercuT is a conventional automated .NET build framework (templated NAnt). UppercuT is the insanely easy to use build framework.
It seeks to solve both maintenance concerns and ease of build to help you concentrate on what you really want to do: write code. Upgrading the build should take seconds, not hours. And that is where UppercuT will beat any other automated build system hands down.
UppercuT uses conventions and has a simple configuration file for you to edit. Getting from zero to build takes literally less than five minutes. If you are still writing your own build scripts, you are working too hard.
UppercuT uses conventions and has a simple configuration file for you to edit. Getting from zero to build takes literally less than five minutes. If you are still writing your own build scripts, you are working too hard.
UppercuT is extremely powerful because it is customizable and extendable. Every step of the build process is customizable with a pre, post and replace hook.
UppercuT is not a build server, but it integrates nicely with CruiseControl.NET, TeamCity, Hudson, etc.
## Join the mailing list
@@ -36,19 +37,18 @@ If you have Ruby 1.8.6+ (and Gems 1.3.7+) installed, you can get the current rel
2. At the top level directory (trunk or branch name) type 'uppercutbuild init' for bringing in uppercut for the first time or 'uppercutbuild upgrade' if you already uppercut and are just wanting to upgrade the build folder.
### Source
This is the best way to get to the bleeding edge of what we are doing.
1. Clone the source down to your machine.
This is the best way to get to the bleeding edge of the code.
1. Clone the source down to your machine.
`git clone git://github.com/chucknorris/uppercut.git`
2. Type `cd uppercut`
3. Type `git config core.autocrlf false` to set line endings to auto convert for this repository
4. Type `git status`. You should not see any files to change.
4. Type `git status`. You should not see any files to change.
5. Run `build.bat`. NOTE: You must have git on the path (open a regular command line and type git).
# REQUIREMENTS
* .NET Framework 3.5
* source control on the command line and in PATH environment variable - svn for Subversion / tf for TFS / git for Git
* Source control on the command line and in PATH environment variable - svn for Subversion / tf for TFS / git for Git
# DONATE
Donations Accepted - If you enjoy using this product or it has saved you time and money in some way, please consider making a donation.
@@ -59,6 +59,9 @@ It helps keep to the product updated, pays for site hosting, etc. https://www.pa
* Adding in support for xUnit.
* Adding in support for StorEvil.
=1.2.0.0=
* NuGet Support. New settings have been added to the uppercut.config: <property name="app.nuget" value="..${path.separator}${folder.references}${path.separator}NuGet${path.separator}NuGet.exe" overwrite="false" /> and a tool that goes under the lib folder: NuGet - see http://code.google.com/p/uppercut/issues/detail?id=20 for details. (377)
=1.1.1.0=
* Including Eazfuscator in the output (375)
* Adding a build.log to the output of the build - see http://code.google.com/p/uppercut/issues/detail?id=22 for details. (373)
@@ -159,4 +162,4 @@ It helps keep to the product updated, pays for site hosting, etc. https://www.pa
* BREAKING CHANGE: For your custom tasks, you may need to make changes.
# CREDITS
see docs/legal/CREDITS (just LEGAL/Credits in the zip folder)
see docs/legal/CREDITS (just LEGAL/Credits in the zip folder)
@@ -1,5 +1,5 @@
<?xml version="1.0" ?>
<uppercut>
<version>1.1.0.0</version>
<version>1.2.0.0</version>
</uppercut>
@@ -120,6 +120,8 @@
<nant buildfile="${dirs.current}${path.separator}ilmerge.build" inheritall="true" if="${run.ilmerge}" />
<nant buildfile="${dirs.current}${path.separator}gemsPrepare.step" inheritall="true" failonerror="false" />
<nant buildfile="${dirs.current}${path.separator}gemsBuild.step" inheritall="true" failonerror="false" />
<nant buildfile="${dirs.current}${path.separator}nugetPrepare.step" inheritall="true" failonerror="false" />
<nant buildfile="${dirs.current}${path.separator}nugetBuild.step" inheritall="true" failonerror="false" />
</target>
<target name="get_revision">
@@ -0,0 +1,116 @@
<?xml version="1.0" encoding="utf-8" ?>
<project name="nugetBuild" default="go">
<!-- Project UppercuT - http://projectuppercut.org -->
<!-- DO NOT EDIT THIS FILE - Add custom tasks in BuildTasks.Custom folder with file by the same name - find out more at http://uppercut.pbwiki.com -->
<property name="build.config.settings" value="__NONE__" overwrite="false" />
<include buildfile="${build.config.settings}" if="${file::exists(build.config.settings)}" />
<property name="path.separator" value="${string::trim(path::combine(' ', ' '))}" />
<property name="file.current.no_extension" value="nugetBuild" />
<property name="dirs.current" value="${directory::get-parent-directory(project::get-buildfile-path())}" />
<property name="path.to.toplevel" value=".." />
<property name="folder.build_scripts" value="build" overwrite="false" />
<property name="folder.build_scripts_custom" value="build.custom" overwrite="false" />
<property name="dirs.build_scripts_custom" value="${dirs.current}${path.separator}${path.to.toplevel}${path.separator}${folder.build_scripts_custom}" />
<property name="folder.code_build" value="build_output" overwrite="false" />
<property name="dirs.build" value="${dirs.current}${path.separator}${path.to.toplevel}${path.separator}${folder.code_build}" />
<property name="folder.code_drop" value="code_drop" overwrite="false" />
<property name="dirs.drop" value="${dirs.current}${path.separator}${path.to.toplevel}${path.separator}${folder.code_drop}" overwrite="false" />
<property name="folder.build_artifacts" value="build_artifacts" overwrite="false" />
<property name="folder.app.drop" value="${project.name}" overwrite="false" />
<property name="folder.database" value="__DATABASE_FOLDER_NAME__" overwrite="false" />
<property name="folder.reports" value="${project.name}.Reports" overwrite="false" />
<property name="folder.file_server" value="file.server" overwrite="false" />
<property name="folder.environment_files" value="environment.files" overwrite="false" />
<property name="folder.deployment" value="deployment" overwrite="false" />
<property name="folder.settings" value="settings" overwrite="false" />
<property name="folder.documentation" value="docs" overwrite="false" />
<property name="folder.nuget" value="nuget" overwrite="false" />
<property name="dirs.nuget" value="${path.to.toplevel}${path.separator}${folder.nuget}" overwrite="false" />
<property name="dirs.drop.nuget" value="${dirs.drop}${path.separator}${folder.nuget}" overwrite="false" />
<property name="folder.nuget.exists" value="${directory::exists(dirs.nuget)}" />
<property name="version.major" value="1" overwrite="false" />
<property name="version.minor" value="0" overwrite="false" />
<property name="version.build" value="0" overwrite="false" />
<property name="version.revision" value="0" overwrite="false" />
<property name="assembly.version.full" value="${version.major}.${version.minor}.${version.build}.${version.revision}" />
<property name="app.nuget" value="..${path.separator}..${path.separator}${folder.references}${path.separator}NuGet${path.separator}NuGet.exe" overwrite="false" />
<property name="app.nuget" value="${path::get-full-path(app.nuget)}" />
<property name="app.nuget.exists" value="${file::exists(app.nuget)}" />
<property name="file.custom.step.before" value="${dirs.build_scripts_custom}${path.separator}${file.current.no_extension}.pre.step" />
<property name="file.custom.step.after" value="${dirs.build_scripts_custom}${path.separator}${file.current.no_extension}.post.step" />
<property name="file.custom.step.replace" value="${dirs.build_scripts_custom}${path.separator}${file.current.no_extension}.replace.step" />
<property name="is.replaced" value="false" />
<property name="fail.build.on.error" value="false" />
<target name="go" depends="run_tasks" if="${folder.nuget.exists and app.nuget.exists}" />
<target name="run_tasks" if="${folder.nuget.exists}">
<echo message="Running ${project::get-name()} tasks." />
<call target="custom_tasks_before" if="${target::exists('custom_tasks_before')}" />
<call target="custom_tasks_replace" if="${target::exists('custom_tasks_replace')}" />
<call target="run_normal_tasks" if="${not is.replaced}" />
<call target="custom_tasks_after" if="${target::exists('custom_tasks_after')}" />
</target>
<target name="run_normal_tasks"
depends="build_nugget"
description="Building nuget." />
<target name="custom_tasks_before">
<echo message="Running custom tasks if ${file.custom.step.before} exists." />
<nant buildfile="${file.custom.step.before}" inheritall="true" if="${file::exists(file.custom.step.before)}" failonerror="${fail.build.on.error}" />
<exec program="powershell.exe" if="${file::exists(file.custom.step.before + '.ps1')}" failonerror="${fail.build.on.error}">
<arg value="${path::get-full-path(file.custom.step.before + '.ps1')}" />
</exec>
<exec program="ruby.exe" if="${file::exists(file.custom.step.before + '.rb')}" failonerror="${fail.build.on.error}">
<arg value="${path::get-full-path(file.custom.step.before + '.rb')}" />
</exec>
</target>
<target name="custom_tasks_replace">
<echo message="Running custom tasks instead of normal tasks if ${file.custom.step.replace} exists." />
<property name="is.replaced" value="true" if="${file::exists(file.custom.step.replace)}" />
<nant buildfile="${file.custom.step.replace}" inheritall="true" if="${file::exists(file.custom.step.replace)}" failonerror="${fail.build.on.error}" />
<property name="is.replaced" value="true" if="${file::exists(file.custom.step.replace + '.ps1')}" />
<exec program="powershell.exe" if="${file::exists(file.custom.step.replace + '.ps1')}" failonerror="${fail.build.on.error}" >
<arg value="${path::get-full-path(file.custom.step.replace + '.ps1')}" />
</exec>
<property name="is.replaced" value="true" if="${file::exists(file.custom.step.replace + '.rb')}" />
<exec program="ruby.exe" if="${file::exists(file.custom.step.replace + '.rb')}" failonerror="${fail.build.on.error}" >
<arg value="${path::get-full-path(file.custom.step.replace + '.rb')}" />
</exec>
</target>
<target name="build_nugget">
<echo message="Finding and building all nuggets in ${dirs.drop.nuget}."/>
<foreach item="File" property="spec.file">
<in>
<items>
<include name="${dirs.drop.nuget}${path.separator}*.nuspec" />
</items>
</in>
<do>
<echo message="executing '${app.nuget} pack ${spec.file}'" />
<exec
program="cmd"
workingdir="${dirs.drop.nuget}"
failonerror="false">
<arg value="/c ${app.nuget} pack ${spec.file}" />
</exec>
</do>
</foreach>
</target>
<target name="custom_tasks_after">
<echo message="Running custom tasks if ${file.custom.step.after} exists." />
<nant buildfile="${file.custom.step.after}" inheritall="true" if="${file::exists(file.custom.step.after)}" failonerror="${fail.build.on.error}" />
<exec program="powershell.exe" if="${file::exists(file.custom.step.after + '.ps1')}" failonerror="${fail.build.on.error}" >
<arg value="${path::get-full-path(file.custom.step.after + '.ps1')}" />
</exec>
<exec program="ruby.exe" if="${file::exists(file.custom.step.after + '.rb')}" failonerror="${fail.build.on.error}" >
<arg value="${path::get-full-path(file.custom.step.after + '.rb')}" />
</exec>
</target>
</project>
Oops, something went wrong.

0 comments on commit 0459a06

Please sign in to comment.