FAQ
This is my first post in a mailing list. I don't know if my request could
be possible and if this would be the right place to ask this. Feel free to
give me some guidance.

In the download page of the Go installation binaries I can see that is
implemented with the Google Cloud Storage host. They currently have a great
Go API for dealing with this service. The problem is that when I try to do
like a "service discovery" I receive this output:

GET request from https://storage.googleapis.com/golang/:

<Error>
<Code>AccessDenied</Code>
<Message>Access denied.</Message>
<Details>
Anonymous callers do not have storage.objects.list access to bucket golang.
</Details>
</Error>

I would like to create a version manager tools that discovers during
runtime new official binaries, their platforms and versions. This tool
should be made with the Go language and be cross platform (Win, Linux,
Mac). I just want the client to download a zip file with my tool already
prebuild, unzip it and be ready to download multiple versions of Go.

My idea is to leverage the Google Cloud SDK (an example here
<https://cloud.google.com/storage/docs/json_api/v1/json-api-go-samples>) in
order to create something similar to Python's virtualenv tool.

There are currently two tools that tries to do the same thing and their
shortcomings in my opinion:


    - goenv <https://bitbucket.org/ymotongpoo/goenv> - They use git for
    checking out a version of the go repo and building from source. I want to
    avoid any external tool dependency in order to be cross-platform. Relying
    on git and the make tool gives too many troubles on Windows. Also, building
    the source is error prone and slow for continuous integration. I really
    prefer to download the "official" binary and use the checksum for integrity
    check.


    - gimme <https://github.com/travis-ci/gimme>* - *Nice tool from the Travis
    CI team but they have hardcoded the download links. There is no way of
    dynamically discovering new binary versions without an update or at least
    changing the "known-binary-versions" file. Also, they are using bash shell
    scripts that are not compatible with Windows PowerShell. I really would
    love to avoid regex solutions or asking the user of installing mingw /
    cygwin.


Currently I can only think of two possible solutions:


    1. Do the same thing like "gimme" and play with some regex foo magic for
    binary discovery. This solution feels cheesy but at least with an
    implementation in Go it would work on Windows. This solution will only work
    as long as the Go team continue using their current naming conventions. If
    they suddenly change it, then it could become a nightmare for maintenance.


    1. Do the hosting myself. An instance of AWS S3 isn't an option. I want
    my project to be open source and free for anybody. I could use a free
    hosting like Github for storing a copy of the official binaries and their
    checksums. There is no reliable API for Github in Go. Maybe I could use
    Google Drive REST API with their official Go library
    <https://developers.google.com/drive/v2/web/quickstart/go>. Another free
    option could be Dropbox. I don't know how well it would work the "binary
    discovery" on Google Drive and Dropbox. But assuming that this is the way
    to go, I would still need to maintain the continuous copy/pasting myself
    instead of using the official release page.


My question is, there is a way of requesting the download's page
admin/webmaster to allow anonymous calls to the bucket list in Go? Also, it
could be possible of asking that the archived older versions from *code.google.com
<https://code.google.com/p/go/downloads/list?can=1>* be serviced discoverable?
Currently the supported binaries and the legacy ones are separated into two
hosting services.

--
You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Search Discussions

  • Tamás Gulácsi at Dec 31, 2015 at 6:24 am
    See godeb for runtime discovery.

    --
    You received this message because you are subscribed to the Google Groups "golang-nuts" group.
    To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscribe@googlegroups.com.
    For more options, visit https://groups.google.com/d/optout.

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupgolang-nuts @
categoriesgo
postedDec 31, '15 at 6:04a
activeDec 31, '15 at 6:24a
posts2
users2
websitegolang.org

2 users in discussion

Tamás Gulácsi: 1 post Segonz43: 1 post

People

Translate

site design / logo © 2022 Grokbase