anchor.diff:  
   let getVersion () = recipe {
       let! verVar = getVar("VER")
  -    let! ver = getEnv("VER")
  -    return verVar |> Option.defaultValue (ver |> Option.defaultValue "0.0.1")
  -}
  +    let! verEnv = getEnv("VER")
  +    let ver = verVar |> Option.defaultValue (verEnv |> Option.defaultValue "0.0.1")
   
  -let makePackageName () = recipe {
  -    let! ver = getVersion()
       let! verSuffix =
           getVar("SUFFIX")
           |> Recipe.map (
               function
  -            | None -> "-alpha"
  +            | None -> "-beta"
               | Some "" -> "" // this is release!
               | Some s -> "-" + s
               )
  +    return ver + verSuffix
  +}
   
  -    return sprintf "Xake.%s%s.nupkg" ver verSuffix
  -}
  +let makePackageName = sprintf "Xake.%s.nupkg"
   
   let dotnet arglist = recipe {
       do! shell {
  
positive.code: 
          // push need pack to be explicitly called in advance
          "push" => recipe {
  
              let! package_name = makePackageName ()
  
              let! nuget_key = getEnv("NUGET_KEY")
              do! dotnet
                    [
                      "nuget"; "push"
                      "out" </> package_name
                      "--source"; "https://www.nuget.org/api/v2/package"
                      "--api-key"; nuget_key |> Option.defaultValue ""
                    ]
          }
      ]
  }
  
  
negative.code:     (* Nuget publishing rules *)
      rules [
          "pack" => recipe {
              let! version = getVersion()
              do! need ["out" </> makePackageName version]
          }
  
          "out/Xake.(ver:*).nupkg" ..> recipe {
  