Coder Social home page Coder Social logo

Go: `duffle upgrade` about duffle HOT 1 CLOSED

technosophos avatar technosophos commented on May 18, 2024
Go: `duffle upgrade`

from duffle.

Comments (1)

bacongobbler avatar bacongobbler commented on May 18, 2024

question about the syntax here... In Homebrew's model, it's a "rolling update" model in which you can only upgrade to the latest and greatest, so there's no such thing as installing a given tag. You can switch back and forth between prior versions you've installed before, but you can't "pin" to a newer version unless you've installed it before.

Given the idea that we want to reference tags, how do we want to architect the repository hosting the bundles such that we can allow users to point at a particular version of a bundle?

We could go about it a few ways:

  1. Homebrew's model with a flat tree structure (this may conflict with #52 since the filename takes on the name of the bundle itself):
bundles/
    my_bundle.json
    yo_bundle.json
    your_bundle.json
  1. Cargo's model with a segmented tree structure:
bundles/
    my/
        my_bundle.json
    yo/
        yo_bundle.json
        your_bundle.json
  1. Store ALL THE VERSIONS in git as separate files:
bundles/
    my_bundle/
        0.1.0/
            bundle.json
            signature.prov
        0.2.0/
            bundle.json
    your_bundle/
        0.1.0/
            bundle.json
  1. variant of option 3, using a slightly flatter tree structure
bundles/
    my_bundle/
        bundle-0.1.0.json
        signature-0.1.0.prov
        bundle-0.2.0.json
    your_bundle/
        bundle-0.1.0.json
  1. variant of options 2 and 3, using cargo-style segmented indexing:
bundles/
    my/
        my_bundle/
            0.1.0/
                bundle.json
                signature.prov
            0.2.0/
                bundle.json
    yo/
        your_bundle/
            0.1.0/
                bundle.json
  1. variant of option 1 and 2, using cargo-style segmented indexing with a rolling release:
bundles/
    my/
        my_bundle/
            bundle.json
            signature.prov
    yo/
        your_bundle/
            bundle.json

If we're allowing users to specify tags rather than a "rolling release" style of package management, I'm leaning towards option 5 as it gives us a little bit of flexibility. However, if we're leaning towards Homebrew's rolling release update model then options 1 or 6 would be the best choices.

See https://github.com/fishworks/fish-food/issues/1 for why we should consider a cargo-style model.

Scoooooooope?

from duffle.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.