PowerShell script to build and pacakge Go application for releasePowershell script for manipulating Excel filesPowerShell script to automate the search of DLL filesRunning a script and analyzing the output with PowerShellproduction ready powershell scriptCombine and condense PowerShell arraysPowershell remote script execution patternPowershell Script to remove printers and driversCreate release package from git tag with PowershellPowerShell Script to deploy repository to SalesforcePowershell for syncing Minecraft save files

How could an airship be repaired midflight?

Simplify an interface for flexibly applying rules to periods of time

What is the adequate fee for a reveal operation?

Different outputs for `w`, `who`, `whoami` and `id`

How can we have a quark condensate without a quark potential?

Is a party consisting of only a bard, a cleric, and a warlock functional long-term?

How to deal with taxi scam when on vacation?

Explaining pyrokinesis powers

Meme-controlled people

Bach's Toccata and Fugue in D minor breaks the "no parallel octaves" rule?

Violin - Can double stops be played when the strings are not next to each other?

Why does a Star of David appear at a rally with Francisco Franco?

Examples of transfinite towers

As a new Ubuntu desktop 18.04 LTS user, do I need to use ufw for a firewall or is iptables sufficient?

Is there a place to find the pricing for things not mentioned in the PHB? (non-magical)

Is it true that good novels will automatically sell themselves on Amazon (and so on) and there is no need for one to waste time promoting?

What is a ^ b and (a & b) << 1?

Math equation in non italic font

What is the relationship between relativity and the Doppler effect?

Why did it take so long to abandon sail after steamships were demonstrated?

I got the following comment from a reputed math journal. What does it mean?

Is it good practice to use Linear Least-Squares with SMA?

The German vowel “a” changes to the English “i”

Does .bashrc contain syntax errors?



PowerShell script to build and pacakge Go application for release


Powershell script for manipulating Excel filesPowerShell script to automate the search of DLL filesRunning a script and analyzing the output with PowerShellproduction ready powershell scriptCombine and condense PowerShell arraysPowershell remote script execution patternPowershell Script to remove printers and driversCreate release package from git tag with PowershellPowerShell Script to deploy repository to SalesforcePowershell for syncing Minecraft save files













0












$begingroup$


Background



I decided to write this PowerShell build script as a gentle introduction to PS. It builds this Go application, which is an internal tool I decided to open source, and not the focus of this review.



This script is used primarily for packaging artifacts for release.



My approach



The script below gets, vets and builds a small Go application and then invokes a separate command-line tool to add Windows rsrc metadata such as version strings and icons.



Since the version number is mandatory for the packaging process, I validated it using param() rules rather than if statements. It validates against a regex for semver.



I then execute every packing step, check for its return status, and present a graceful message in addition to the error output by the build step.



The packager relies on having rcedit-x64.exe available in the PATH. I originally allowed specifying a path to the executable as a command-line flag, but it seemed to make the code messier for nothing, so I just removed it. The tool is primarily for myself.



Example



Invocation



powershell.exe -ExecutionPolicy Unrestricted .build.ps1 -version 1.1.0


Output



Packing bittray version 1.1.0
Cleaning old build products.
go get...
go vet...
go build...
Validating artifact...
Applying rsrc metadata...
Compressing archive (bittray-1.1.0.zip)...
SHA1 hash of bittray-1.1.0.zip:
cd283afd10f613919bb4dc694bce3c1f9bd23483
CertUtil: -hashfile command completed successfully.
Done!


Concerns



  1. Does the code follow PS idioms?

  2. Is there a more elegant way to check for the success of commands and bail than repeating if (!$?) all the time?

  3. To wit, is the single trap appropriate?

  4. Is the code adequately defensive? Overly defensive?

  5. I cannot sign my script as I don't have a code signing certificate. Is my invocation correct and safe?

  6. Is there a shorter invocation available without altering the system-side Execution Policy?

  7. Because of the validator on -version, you need to provide a valid version to be able to run just -clean. Any way around that (like providing some order of precedence of param()s, or short-cutting)? I really like those top-level validators, and would prefer to keep them in favor of if statements, if possible.

Code



param(
[string]
[Parameter(Mandatory = $True)]
[ValidateNotNullorEmpty()]
[ValidatePattern('^([0-9]|[1-9][0-9]*).([0-9]|[1-9][0-9]*).([0-9]|[1-9][0-9]*)(?:-([0-9A-Za-z-]+(?:.[0-9A-Za-z-]+)*))?(?:+[0-9A-Za-z-]+)?$')]
$version,

[switch]
$clean
)

function Clean-Artifacts

Write-Host "Cleaning old build products."
Remove-Item * -Include bittray.exe, bittray-*.zip
if (!$?)

Write-Host -BackgroundColor red -ForegroundColor white "Failed to remove existing artifacts; see above."
exit 1



if ($clean -eq $True)

Clean-Artifacts
exit 0


if ((Get-Command "rcedit-x64.exe" -ErrorAction SilentlyContinue) -eq $null)

Write-Host -ForegroundColor red "Unable to find rcedit-x64.exe in your PATH."
exit 1


Write-Host "Packing bittray version $version" -ForegroundColor green

Clean-Artifacts

Write-Host "go get..."
go get

Write-Host "go vet..."
go vet ./...
if (!$?)

Write-Host -BackgroundColor red -ForegroundColor white "'go vet' failed; see above."
exit 1


Write-Host "go build..."
go build -ldflags -H=windowsgui bittray.go
if (!$?)

Write-Host -BackgroundColor red -ForegroundColor white "'go build' failed; see above."
exit 1


Write-Host "Validating artifact..."
if ( [System.IO.File]::Exists("bittray.exe"))

Write-Host "Applying rsrc metadata..."
trap

"Error adding resource metadata: $_"


rcedit-x64.exe --set-icon .bitbucket.ico "bittray.exe"
rcedit-x64.exe "bittray.exe" --set-version-string "ProductName" "Bittray"
rcedit-x64.exe "bittray.exe" --set-version-string "ProductVersion" "$version"

else

Write-Host -BackgroundColor red -ForegroundColor white "'go build' claims to have succeeded, but there is no artifact?"
exit 1


$package = "bittray-$version.zip"
Write-Host "Compressing archive ($package)..."
Compress-Archive -Path .bittray.exe -CompressionLevel Optimal -DestinationPath $package
if (!$?)

Write-Host -BackgroundColor red -ForegroundColor white "Failed to create zip package."
exit 1


certUtil -hashfile "$package" sha1
if (!$?)

Write-Host -BackgroundColor red -ForegroundColor white "Failed to generate SHA1 integrity checksum."
exit 1

else

Write-Host -BackgroundColor green -ForegroundColor white "Done!"









share









$endgroup$
















    0












    $begingroup$


    Background



    I decided to write this PowerShell build script as a gentle introduction to PS. It builds this Go application, which is an internal tool I decided to open source, and not the focus of this review.



    This script is used primarily for packaging artifacts for release.



    My approach



    The script below gets, vets and builds a small Go application and then invokes a separate command-line tool to add Windows rsrc metadata such as version strings and icons.



    Since the version number is mandatory for the packaging process, I validated it using param() rules rather than if statements. It validates against a regex for semver.



    I then execute every packing step, check for its return status, and present a graceful message in addition to the error output by the build step.



    The packager relies on having rcedit-x64.exe available in the PATH. I originally allowed specifying a path to the executable as a command-line flag, but it seemed to make the code messier for nothing, so I just removed it. The tool is primarily for myself.



    Example



    Invocation



    powershell.exe -ExecutionPolicy Unrestricted .build.ps1 -version 1.1.0


    Output



    Packing bittray version 1.1.0
    Cleaning old build products.
    go get...
    go vet...
    go build...
    Validating artifact...
    Applying rsrc metadata...
    Compressing archive (bittray-1.1.0.zip)...
    SHA1 hash of bittray-1.1.0.zip:
    cd283afd10f613919bb4dc694bce3c1f9bd23483
    CertUtil: -hashfile command completed successfully.
    Done!


    Concerns



    1. Does the code follow PS idioms?

    2. Is there a more elegant way to check for the success of commands and bail than repeating if (!$?) all the time?

    3. To wit, is the single trap appropriate?

    4. Is the code adequately defensive? Overly defensive?

    5. I cannot sign my script as I don't have a code signing certificate. Is my invocation correct and safe?

    6. Is there a shorter invocation available without altering the system-side Execution Policy?

    7. Because of the validator on -version, you need to provide a valid version to be able to run just -clean. Any way around that (like providing some order of precedence of param()s, or short-cutting)? I really like those top-level validators, and would prefer to keep them in favor of if statements, if possible.

    Code



    param(
    [string]
    [Parameter(Mandatory = $True)]
    [ValidateNotNullorEmpty()]
    [ValidatePattern('^([0-9]|[1-9][0-9]*).([0-9]|[1-9][0-9]*).([0-9]|[1-9][0-9]*)(?:-([0-9A-Za-z-]+(?:.[0-9A-Za-z-]+)*))?(?:+[0-9A-Za-z-]+)?$')]
    $version,

    [switch]
    $clean
    )

    function Clean-Artifacts

    Write-Host "Cleaning old build products."
    Remove-Item * -Include bittray.exe, bittray-*.zip
    if (!$?)

    Write-Host -BackgroundColor red -ForegroundColor white "Failed to remove existing artifacts; see above."
    exit 1



    if ($clean -eq $True)

    Clean-Artifacts
    exit 0


    if ((Get-Command "rcedit-x64.exe" -ErrorAction SilentlyContinue) -eq $null)

    Write-Host -ForegroundColor red "Unable to find rcedit-x64.exe in your PATH."
    exit 1


    Write-Host "Packing bittray version $version" -ForegroundColor green

    Clean-Artifacts

    Write-Host "go get..."
    go get

    Write-Host "go vet..."
    go vet ./...
    if (!$?)

    Write-Host -BackgroundColor red -ForegroundColor white "'go vet' failed; see above."
    exit 1


    Write-Host "go build..."
    go build -ldflags -H=windowsgui bittray.go
    if (!$?)

    Write-Host -BackgroundColor red -ForegroundColor white "'go build' failed; see above."
    exit 1


    Write-Host "Validating artifact..."
    if ( [System.IO.File]::Exists("bittray.exe"))

    Write-Host "Applying rsrc metadata..."
    trap

    "Error adding resource metadata: $_"


    rcedit-x64.exe --set-icon .bitbucket.ico "bittray.exe"
    rcedit-x64.exe "bittray.exe" --set-version-string "ProductName" "Bittray"
    rcedit-x64.exe "bittray.exe" --set-version-string "ProductVersion" "$version"

    else

    Write-Host -BackgroundColor red -ForegroundColor white "'go build' claims to have succeeded, but there is no artifact?"
    exit 1


    $package = "bittray-$version.zip"
    Write-Host "Compressing archive ($package)..."
    Compress-Archive -Path .bittray.exe -CompressionLevel Optimal -DestinationPath $package
    if (!$?)

    Write-Host -BackgroundColor red -ForegroundColor white "Failed to create zip package."
    exit 1


    certUtil -hashfile "$package" sha1
    if (!$?)

    Write-Host -BackgroundColor red -ForegroundColor white "Failed to generate SHA1 integrity checksum."
    exit 1

    else

    Write-Host -BackgroundColor green -ForegroundColor white "Done!"









    share









    $endgroup$














      0












      0








      0





      $begingroup$


      Background



      I decided to write this PowerShell build script as a gentle introduction to PS. It builds this Go application, which is an internal tool I decided to open source, and not the focus of this review.



      This script is used primarily for packaging artifacts for release.



      My approach



      The script below gets, vets and builds a small Go application and then invokes a separate command-line tool to add Windows rsrc metadata such as version strings and icons.



      Since the version number is mandatory for the packaging process, I validated it using param() rules rather than if statements. It validates against a regex for semver.



      I then execute every packing step, check for its return status, and present a graceful message in addition to the error output by the build step.



      The packager relies on having rcedit-x64.exe available in the PATH. I originally allowed specifying a path to the executable as a command-line flag, but it seemed to make the code messier for nothing, so I just removed it. The tool is primarily for myself.



      Example



      Invocation



      powershell.exe -ExecutionPolicy Unrestricted .build.ps1 -version 1.1.0


      Output



      Packing bittray version 1.1.0
      Cleaning old build products.
      go get...
      go vet...
      go build...
      Validating artifact...
      Applying rsrc metadata...
      Compressing archive (bittray-1.1.0.zip)...
      SHA1 hash of bittray-1.1.0.zip:
      cd283afd10f613919bb4dc694bce3c1f9bd23483
      CertUtil: -hashfile command completed successfully.
      Done!


      Concerns



      1. Does the code follow PS idioms?

      2. Is there a more elegant way to check for the success of commands and bail than repeating if (!$?) all the time?

      3. To wit, is the single trap appropriate?

      4. Is the code adequately defensive? Overly defensive?

      5. I cannot sign my script as I don't have a code signing certificate. Is my invocation correct and safe?

      6. Is there a shorter invocation available without altering the system-side Execution Policy?

      7. Because of the validator on -version, you need to provide a valid version to be able to run just -clean. Any way around that (like providing some order of precedence of param()s, or short-cutting)? I really like those top-level validators, and would prefer to keep them in favor of if statements, if possible.

      Code



      param(
      [string]
      [Parameter(Mandatory = $True)]
      [ValidateNotNullorEmpty()]
      [ValidatePattern('^([0-9]|[1-9][0-9]*).([0-9]|[1-9][0-9]*).([0-9]|[1-9][0-9]*)(?:-([0-9A-Za-z-]+(?:.[0-9A-Za-z-]+)*))?(?:+[0-9A-Za-z-]+)?$')]
      $version,

      [switch]
      $clean
      )

      function Clean-Artifacts

      Write-Host "Cleaning old build products."
      Remove-Item * -Include bittray.exe, bittray-*.zip
      if (!$?)

      Write-Host -BackgroundColor red -ForegroundColor white "Failed to remove existing artifacts; see above."
      exit 1



      if ($clean -eq $True)

      Clean-Artifacts
      exit 0


      if ((Get-Command "rcedit-x64.exe" -ErrorAction SilentlyContinue) -eq $null)

      Write-Host -ForegroundColor red "Unable to find rcedit-x64.exe in your PATH."
      exit 1


      Write-Host "Packing bittray version $version" -ForegroundColor green

      Clean-Artifacts

      Write-Host "go get..."
      go get

      Write-Host "go vet..."
      go vet ./...
      if (!$?)

      Write-Host -BackgroundColor red -ForegroundColor white "'go vet' failed; see above."
      exit 1


      Write-Host "go build..."
      go build -ldflags -H=windowsgui bittray.go
      if (!$?)

      Write-Host -BackgroundColor red -ForegroundColor white "'go build' failed; see above."
      exit 1


      Write-Host "Validating artifact..."
      if ( [System.IO.File]::Exists("bittray.exe"))

      Write-Host "Applying rsrc metadata..."
      trap

      "Error adding resource metadata: $_"


      rcedit-x64.exe --set-icon .bitbucket.ico "bittray.exe"
      rcedit-x64.exe "bittray.exe" --set-version-string "ProductName" "Bittray"
      rcedit-x64.exe "bittray.exe" --set-version-string "ProductVersion" "$version"

      else

      Write-Host -BackgroundColor red -ForegroundColor white "'go build' claims to have succeeded, but there is no artifact?"
      exit 1


      $package = "bittray-$version.zip"
      Write-Host "Compressing archive ($package)..."
      Compress-Archive -Path .bittray.exe -CompressionLevel Optimal -DestinationPath $package
      if (!$?)

      Write-Host -BackgroundColor red -ForegroundColor white "Failed to create zip package."
      exit 1


      certUtil -hashfile "$package" sha1
      if (!$?)

      Write-Host -BackgroundColor red -ForegroundColor white "Failed to generate SHA1 integrity checksum."
      exit 1

      else

      Write-Host -BackgroundColor green -ForegroundColor white "Done!"









      share









      $endgroup$




      Background



      I decided to write this PowerShell build script as a gentle introduction to PS. It builds this Go application, which is an internal tool I decided to open source, and not the focus of this review.



      This script is used primarily for packaging artifacts for release.



      My approach



      The script below gets, vets and builds a small Go application and then invokes a separate command-line tool to add Windows rsrc metadata such as version strings and icons.



      Since the version number is mandatory for the packaging process, I validated it using param() rules rather than if statements. It validates against a regex for semver.



      I then execute every packing step, check for its return status, and present a graceful message in addition to the error output by the build step.



      The packager relies on having rcedit-x64.exe available in the PATH. I originally allowed specifying a path to the executable as a command-line flag, but it seemed to make the code messier for nothing, so I just removed it. The tool is primarily for myself.



      Example



      Invocation



      powershell.exe -ExecutionPolicy Unrestricted .build.ps1 -version 1.1.0


      Output



      Packing bittray version 1.1.0
      Cleaning old build products.
      go get...
      go vet...
      go build...
      Validating artifact...
      Applying rsrc metadata...
      Compressing archive (bittray-1.1.0.zip)...
      SHA1 hash of bittray-1.1.0.zip:
      cd283afd10f613919bb4dc694bce3c1f9bd23483
      CertUtil: -hashfile command completed successfully.
      Done!


      Concerns



      1. Does the code follow PS idioms?

      2. Is there a more elegant way to check for the success of commands and bail than repeating if (!$?) all the time?

      3. To wit, is the single trap appropriate?

      4. Is the code adequately defensive? Overly defensive?

      5. I cannot sign my script as I don't have a code signing certificate. Is my invocation correct and safe?

      6. Is there a shorter invocation available without altering the system-side Execution Policy?

      7. Because of the validator on -version, you need to provide a valid version to be able to run just -clean. Any way around that (like providing some order of precedence of param()s, or short-cutting)? I really like those top-level validators, and would prefer to keep them in favor of if statements, if possible.

      Code



      param(
      [string]
      [Parameter(Mandatory = $True)]
      [ValidateNotNullorEmpty()]
      [ValidatePattern('^([0-9]|[1-9][0-9]*).([0-9]|[1-9][0-9]*).([0-9]|[1-9][0-9]*)(?:-([0-9A-Za-z-]+(?:.[0-9A-Za-z-]+)*))?(?:+[0-9A-Za-z-]+)?$')]
      $version,

      [switch]
      $clean
      )

      function Clean-Artifacts

      Write-Host "Cleaning old build products."
      Remove-Item * -Include bittray.exe, bittray-*.zip
      if (!$?)

      Write-Host -BackgroundColor red -ForegroundColor white "Failed to remove existing artifacts; see above."
      exit 1



      if ($clean -eq $True)

      Clean-Artifacts
      exit 0


      if ((Get-Command "rcedit-x64.exe" -ErrorAction SilentlyContinue) -eq $null)

      Write-Host -ForegroundColor red "Unable to find rcedit-x64.exe in your PATH."
      exit 1


      Write-Host "Packing bittray version $version" -ForegroundColor green

      Clean-Artifacts

      Write-Host "go get..."
      go get

      Write-Host "go vet..."
      go vet ./...
      if (!$?)

      Write-Host -BackgroundColor red -ForegroundColor white "'go vet' failed; see above."
      exit 1


      Write-Host "go build..."
      go build -ldflags -H=windowsgui bittray.go
      if (!$?)

      Write-Host -BackgroundColor red -ForegroundColor white "'go build' failed; see above."
      exit 1


      Write-Host "Validating artifact..."
      if ( [System.IO.File]::Exists("bittray.exe"))

      Write-Host "Applying rsrc metadata..."
      trap

      "Error adding resource metadata: $_"


      rcedit-x64.exe --set-icon .bitbucket.ico "bittray.exe"
      rcedit-x64.exe "bittray.exe" --set-version-string "ProductName" "Bittray"
      rcedit-x64.exe "bittray.exe" --set-version-string "ProductVersion" "$version"

      else

      Write-Host -BackgroundColor red -ForegroundColor white "'go build' claims to have succeeded, but there is no artifact?"
      exit 1


      $package = "bittray-$version.zip"
      Write-Host "Compressing archive ($package)..."
      Compress-Archive -Path .bittray.exe -CompressionLevel Optimal -DestinationPath $package
      if (!$?)

      Write-Host -BackgroundColor red -ForegroundColor white "Failed to create zip package."
      exit 1


      certUtil -hashfile "$package" sha1
      if (!$?)

      Write-Host -BackgroundColor red -ForegroundColor white "Failed to generate SHA1 integrity checksum."
      exit 1

      else

      Write-Host -BackgroundColor green -ForegroundColor white "Done!"







      windows powershell





      share












      share










      share



      share










      asked 6 mins ago









      msanfordmsanford

      2411316




      2411316




















          0






          active

          oldest

          votes











          Your Answer





          StackExchange.ifUsing("editor", function ()
          return StackExchange.using("mathjaxEditing", function ()
          StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
          StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
          );
          );
          , "mathjax-editing");

          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "196"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f215590%2fpowershell-script-to-build-and-pacakge-go-application-for-release%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Code Review Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          Use MathJax to format equations. MathJax reference.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f215590%2fpowershell-script-to-build-and-pacakge-go-application-for-release%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          कुँवर स्रोत दिक्चालन सूची"कुँवर""राणा कुँवरके वंशावली"

          Why is a white electrical wire connected to 2 black wires?How to wire a light fixture with 3 white wires in box?How should I wire a ceiling fan when there's only three wires in the box?Two white, two black, two ground, and red wire in ceiling box connected to switchWhy is there a white wire connected to multiple black wires in my light box?How to wire a light with two white wires and one black wireReplace light switch connected to a power outlet with dimmer - two black wires to one black and redHow to wire a light with multiple black/white/green wires from the ceiling?Ceiling box has 2 black and white wires but fan/ light only has 1 of eachWhy neutral wire connected to load wire?Switch with 2 black, 2 white, 2 ground and 1 red wire connected to ceiling light and a receptacle?

          चैत्य भूमि चित्र दीर्घा सन्दर्भ बाहरी कडियाँ दिक्चालन सूची"Chaitya Bhoomi""Chaitya Bhoomi: Statue of Equality in India""Dadar Chaitya Bhoomi: Statue of Equality in India""Ambedkar memorial: Centre okays transfer of Indu Mill land"चैत्यभमि