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

Winget support #496

Open
louiss0 opened this issue Sep 15, 2024 · 6 comments
Open

Winget support #496

louiss0 opened this issue Sep 15, 2024 · 6 comments
Labels

Comments

@louiss0
Copy link

louiss0 commented Sep 15, 2024

Is your feature request related to a problem? Please describe.

Installing and setting up yadm is a painful process.
It's a tool that must always be installed before using my program.
I can only install it by using a source or a package manager like basher.

Describe the solution you'd like

I think it should be installed by using a package manager like winget, choco or any non-bash related
package manager.

Describe alternatives you've considered

I wanted to create my own package to install yadm.

Additional context

Well I'm asking for the creation of a yadm installer for winget.
The link for doing that is here.
https://learn.microsoft.com/en-us/windows/package-manager/package/

P.S I'm willing to do this but if I do where do I place the package.
Do I send a link to the repo that i created or do I submit a pull request.

@erijo
Copy link
Collaborator

erijo commented Nov 9, 2024

How would the installer look like/work?

@louiss0
Copy link
Author

louiss0 commented Nov 23, 2024

How would the installer look like/work?

The installer would download yadm by using a release URL.

The code would be similar to the done below. This is the brew code.

class Yadm < Formula
  desc "Yet Another Dotfiles Manager"
  homepage "https://yadm.io/"
  url "https://github.com/yadm-dev/yadm/archive/refs/tags/3.3.0.tar.gz"
  sha256 "a977836ee874fece3d69b5a8f7436e6ce4e6bf8d2520f8517c128281cc6b101d"
  license "GPL-3.0-or-later"
  head "https://github.com/yadm-dev/yadm.git", branch: "master"

  bottle do
    sha256 cellar: :any_skip_relocation, all: "d86d417aca8da9b28d8979c52813d33d24073798b27600cad823c47c7dd9cd26"
  end

  def install
    system "make", "install", "PREFIX=#{prefix}"
    bash_completion.install "completion/bash/yadm"
    fish_completion.install "completion/fish/yadm.fish"
    zsh_completion.install "completion/zsh/_yadm"
  end

  test do
    system bin/"yadm", "init"
    assert_predicate testpath/".local/share/yadm/repo.git/config", :exist?, "Failed to init repository."
    assert_match testpath.to_s, shell_output("#{bin}/yadm gitconfig core.worktree")

    # disable auto-alt
    system bin/"yadm", "config", "yadm.auto-alt", "false"
    assert_match "false", shell_output("#{bin}/yadm config yadm.auto-alt")

    (testpath/"testfile").write "test"
    system bin/"yadm", "add", "#{testpath}/testfile"

    system bin/"yadm", "gitconfig", "user.email", "[email protected]"
    system bin/"yadm", "gitconfig", "user.name", "Test User"

    system bin/"yadm", "commit", "-m", "test commit"
    assert_match "test commit", shell_output("#{bin}/yadm log --pretty=oneline 2>&1")
  end
end

@louiss0
Copy link
Author

louiss0 commented Nov 23, 2024

How would the installer look like/work?

What you do is write a manifest file that contains code that looks like this.

PackageIdentifier:  # Publisher.package format.
PackageVersion:     # Version numbering format.
PackageLocale:      # BCP 47 format (e.g. en-US)
Publisher:          # The name of the publisher.
PackageName:        # The name of the application.
License:            # The license of the application.
ShortDescription:   # The description of the application.
Installers: 
 - Architecture:    # Enumeration of supported architectures.
   InstallerType:   # Enumeration of supported installer types (exe, msi, msix, inno, wix, nullsoft, appx).
   InstallerUrl:    # Path to download installation file.
   InstallerSha256: # SHA256 calculated from installer.
ManifestType:       # The manifest file type
ManifestVersion: 1.6.0

@louiss0
Copy link
Author

louiss0 commented Nov 23, 2024

If you click the link to the website it should explain everything.

If you need to video watch this one https://youtu.be/uxr7m8wDeGA?t=592

Start at that exact time

@erijo
Copy link
Collaborator

erijo commented Nov 24, 2024

Yes, I understand the manifest part. But it's the actual installer i.e. the what I assume must be a .exe or .msi or similar file that I'm wondering about. I'm guessing you can write it in ruby like for homebrew?

@louiss0
Copy link
Author

louiss0 commented Nov 24, 2024

Yes, I understand the manifest part. But it's the actual installer i.e. the what I assume must be a .exe or .msi or similar file that I'm wondering about. I'm guessing you can write it in ruby like for homebrew?

No it can be a url!

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

No branches or pull requests

2 participants