New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Port Octoposh to C# #234

Dalmirog opened this Issue Feb 19, 2017 · 0 comments


None yet
1 participant

Dalmirog commented Feb 19, 2017

Hi Octoposh users!

On the past few weeks I've been working on porting the whole module from Powershell to C# in order to finally release 1.0.0. The last time I updated the module (a long long time ago) , it didn't even had support for Channels or Tenants, which you can expect to be there for 1.0.0.

0.5.1 would be the last version written in Powershell.

0.6.0 onwards It'll be all written in C#.

0.6.0 aka 1.0.0-beta

Since Powershell doesn't allow module versions to have pre-release tags such as beta, I'll be using 0.6.0 as 1.0.0-beta. All beta releases will fall under 0.6.* until I decide its in a good enough shape to move to 1.0.0

Why move to C#?

Main reasons:

  1. The cmdlets were becoming more and more complex as time went by, and they started to become monolithic Powershell scripts which were very clunky to troubleshoot and test. Powershell is definitely a great language to do small quick things, but as soon as things get bigger, it becomes hard to manage. So I had to move to its bigger brother C#.
  2. I started learning C# 1.5 years ago and I wanted to do something with that knowledge. So why not put that knowledge into use by vastly improving this module? also I got sort of bored with Powershell :)

Missing cmdlets in the C# version

Yes not all cmdlets were ported. But don't worry, the important ones are there! The below list shows which cmdlets did not make the cut:

  • Update-OctopusStepTemplate => This will eventually be supported by Octopus so I will use their API once that happens.
  • Block-OctopusRelease => its now Set-OctopusReleaseStatus
  • Unblock-OctopusRelease => its now Set-OctopusReleaseStatus
  • Get-OctopusMaintenanceMode
  • Get-OctopusSMTPConfig
  • Get-OctopusTargetDiscoveryInfo
  • Get-OctopusTask
  • Start-OctopusBackup
  • Start-OctopusCalamariUpdate
  • Start-OctopusHealthCheck
  • Start-OctopusRetentionPolicy
  • Update-OctopusReleaseVariableSet
  • Update-OctopusVariableSet
  • New-OctopusAPIKey
  • New-OctopusProjectCLone

Call for help

Since some cmdlets won't be making it to the first 1.0.0-Beta, I'm gonna need some help from the community to know which ones I'm missing that you definitely need.

- But Dalmiro, what's the best way to reach out to you for this?
- Not a Github issue! . Please drop me a message at the project's Gitter channel: Join the chat at

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment