anchor.diff:          printfn ""
   
       let execProcess processName arguments =
  +        printfn "execute: %s %s" processName arguments
  +        
           use proc = new Process()
           proc.StartInfo.UseShellExecute <- false
           proc.StartInfo.FileName <- processName
  
positive.code:     let generatePosts configFileName isForced = 
          printfn "start posts generation"
          let books = getBooksConfig configFileName
          let noPostsToGenerate = not (books <> null && books |> Seq.exists (fun book -> not book.Generated))
          
          if noPostsToGenerate && not isForced
          then 
              cprintfn ConsoleColor.Green "no posts to generate"
              exit 42
  
          createFolderIfNotExists Constants.PostsFolder
          createFolderIfNotExists Constants.ImagesFolder
          let newBooksConfig = books |> Seq.map generatePost
          writeConfig configFileName (new List<BookConfig>(Seq.toArray newBooksConfig))
          printfn "end posts generation"
          noPostsToGenerate
  
      let commitGeneratedPosts =
          execProcess "git" "config --global user.name \"Jérémie Bertrand\""
  
negative.code:         
          let isForced = isBuildForced()
          
          let postsGenerated = generatePosts "books.yml" isForced
          
          if postsGenerated
          then
              commitGeneratedPosts
          
  