Skip to content
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

Consider distribution via custom Homebrew Tap #32

Open
arturdryomov opened this issue Dec 22, 2016 · 11 comments
Open

Consider distribution via custom Homebrew Tap #32

arturdryomov opened this issue Dec 22, 2016 · 11 comments
Assignees

Comments

@arturdryomov
Copy link
Contributor

No description provided.

@artem-zinnatullin
Copy link
Contributor

TL;TR of our private discussion of this thing: I'm personally kinda not sure about that, we'll have to be very conservative once we release mainframer to something like Homebrew since we'll need to provide a lot of backward compatibility which is not that easy when you write in bash.

Good example of such a problem is git, it has lot's of weird things (though I love it) because of backward compatibility.

@thevery
Copy link

thevery commented Jan 21, 2017

@ming13 you can probably contribute formula into central repo

@artem-zinnatullin
Copy link
Contributor

@thevery hello there lol 😸, surely we can, but it's more a question of "should we"?

I see this very similar to things like gradlew and other kinds of wrappers, how would you keep all team members up-to-date? What if we release v3.x with breaking changes, how would we update it in homebrew/etc without breaking it for old users?

Another point is that team members don't have to install anything to make it work once it in the project repo, while with brew/etc it's an additional step for everyone.

Moreover, once we publish mainframer into homebrew, we'll have to do the same for all Linux distros which is much more complicated…

@ghostbuster91
Copy link
Contributor

I like the idea of having sth like mainframer wrapper which will work analogically to gradlew.

In such aprroach you don't force users to update but still they can do it very easly.

@artem-zinnatullin
Copy link
Contributor

Yup. mainframer.sh itself already works as gradlew so we don't need to change anything for now.

@ghostbuster91
Copy link
Contributor

I was thinking about something else.
The mainframerWrapper could delegate all normal invocations to mainframer.sh, but in addition it could check some mainframerWrapper.properties file (where there version of mainframer would be defiend) and update mainframer.sh if needed.

@artem-zinnatullin
Copy link
Contributor

artem-zinnatullin commented Jan 27, 2017 via email

@AndreasBackx
Copy link

AndreasBackx commented Apr 15, 2017

@artem-zinnatullin I was thinking about writing Mainframer in Go. It's easy to provide binaries for every system that way. Making backwards-compatible changes are also a lot easier because of all the benefits you get when using almost any programming language. There would also only be a single binary.

@artem-zinnatullin
Copy link
Contributor

artem-zinnatullin commented Apr 15, 2017 via email

@AndreasBackx
Copy link

AndreasBackx commented Apr 16, 2017

For a simple port I'd start with simply calling ssh and rsync from it. In the future we could implement these directly using Go libraries and the benefit would then be that no setup is necessary on the client machine and it could be made cross platform. We could have brew install mainframer and it would be ready for use, the same applies for other operating systems. (Linux and MacOS do tend to have ssh and rsync installed, it would be good for Windows users at least.) Using Go would also allow us to extend mainframer more easily, we could then add commands, more easily write tests, etc.

I do think that the size of binary is negligible, it would then be system-wide and not per-project. Could you explain why you would want to create a wrapper for mainframer when using a binary? I don't see a mainframer as an essential part of a project.

@artem-zinnatullin
Copy link
Contributor

Update: we're considering publishing Mainframer to brew and other repos in some near future since tool is so mature and stable now that it's hard to work on projects without it (it's like git/etc).

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

No branches or pull requests

5 participants