Get only desired files from a repository.

Wgit

Get only desired files from a repository.

made-with-Go MIT license

Introduction

Aren't you done of cloning a whole repository just to get a single file ?
Wgit is the tool made for you.
Be able to retrieve only desired files from a repository.

Features

  • In-memory clone
  • Repository navigation
  • Simple configuration
  • Intuitive interface
  • Multiple authentication methods
  • Easy-to-use
  • Cross-platform

🧠 In-memory clone

Wgit clones the desired repository in memory. This prevents writing to disk unnecessarily. It extends the life of your disk.

Info("Cloning github.com/go-git/go-billy in memory")
storer := memory.NewStorage()
bfs := memfs.New()

r, err := git.Clone(storer, bfs, &git.CloneOptions{
    URL: "https://github.com/go-git/go-billy",
})

🚢 Repository navigation

Wgit allows you to navigate inside a Git repository directly from your terminal.

📄 Simple configuration

Wgit is easily configurable on first launch. It asks you few questions and store it in a file ($HOME/.config/wgit/config.json). The prompt will ask you for the following things :

  • Git username
  • Default repository
  • Prefered authentication method (SSH/HTTP/Access Token)
  • Access token (with at least read rights)

Here is an exemple of configuration file:

{
  "Username": "atsika",
  "Token": "XXXXXXXXXXXXX",
  "SSHkeyPath": "/home/atsika/.ssh/id_rsa",
  "Repository": "https://github.com/atsika/test-wgit",
  "AuthMethod": "Access Token"
}

⌨️ Intuitive interface

Wgit is designed with an intuitive TUI to make it usage simple. It shows messages on file selection/removal. Pressing Ctrl + C will pop an action menu with the following options:

  • Back: go back to file selection
  • List selected files: displays all selected files as a list
  • Get selected files: downloads all selected files to current directory
  • Exit: quit the program

🔑 Multiple authentication methods

Wgit allows you to authenticate to your Git server using following methods:

  • SSH (will require you to set SSH private key path)
  • Access Token (will require you to set an access token)
  • HTTP (uses username and prompt you for password)

🔰 Easy-to-use

With few clicks, Wgit allows to rapidly and easily perform some basic tasks like grabbing some juicy code from Github that would take your more actions than if it were done by the tool.
Wgit embeds a search filter so you could find your files faster.

💡 When setting up configuration, auto-completion is enabled for SSH private key full path.

🤝 Cross-platform

Since Wgit is made in Go and is using full cross-platform packages, it should run on any platform.

⚠️ Currently only tested on:

  • Linux Fedora 34

Feel free to test it on other platform and submit a merge request with updated README.md.

Installation

Clone the repo and build wgit using Go. Move it somewhere in PATH so you can call it from anywhere.

git clone https://github.com/Atsika/wgit.git
cd wgit
go build
chmod +x wgit
sudo cp wgit /usr/local/bin

Usage

Simply call the wgit binary and follow the instructions. On first launch you will be prompted for some informations. Next times, you will be asked if you want to use the configuration file or not.

wgit

TODO

  • Waiting you to tell me :)
  • File content preview

Credits

Those amazing packages:

License

MIT License (see LICENSE).

Author

Made with ❤️ by Atsika (@_atsika)

Similar Resources

Microservice on IPv4: 3000 port without database. Upon request, returns the source JSON in the desired format

Microservice on IPv4: 3000 port without database. Upon request, returns the source JSON in the desired format

📜 Этапы V1.0 Микросервис на IPv4:3000 порту без базы данных. По запросу возвращ

Dec 22, 2021

Tiny structured logging abstraction or facade for various logging libraries, allowing the end user to plug in the desired logging library in main.go

Tiny structured logging abstraction or facade for various logging libraries, allowing the end user to plug in the desired logging library in main.go

Tiny structured logging abstraction or facade for various logging libraries, allowing the end user to plug in the desired logging library in main.go.

Dec 7, 2022

tinygo-used-files is a CLI tool that lists only the files to be built as specified by buildtag.

tinygo-used-files is a CLI tool that lists only the files to be built as specified by buildtag.

Feb 6, 2022

Split multiple Kubernetes files into smaller files with ease. Split multi-YAML files into individual files.

Split multiple Kubernetes files into smaller files with ease. Split multi-YAML files into individual files.

Dec 29, 2022

Split multiple Kubernetes files into smaller files with ease. Split multi-YAML files into individual files.

kubectl-slice: split Kubernetes YAMLs into files kubectl-slice is a neat tool that allows you to split a single multi-YAML Kubernetes manifest into mu

Jan 3, 2023

Database Abstraction Layer (dbal) for Go. Support SQL builder and get result easily (now only support mysql)

godbal Database Abstraction Layer (dbal) for go (now only support mysql) Motivation I wanted a DBAL that No ORM、No Reflect、Concurrency Save, support S

Nov 17, 2022

only for creates task and get all tasks from the db.

Todo Rest API This API only creates a task and get all tasks. Table of Contents: Getting Started Requirements Building with Docker API Endpoints and D

Dec 27, 2021

lls is lightweight ls. Using lls, you can get a list of files in a directory that contains a large number of files.

lls lls is lightweight ls. Using lls, you can get a list of files in a directory that contains a large number of files. How? You allocate a buffer for

Dec 29, 2022

OCI transport plugin for apt-get (i.e., apt-get over ghcr.io)

apt-transport-oci: OCI transport plugin for apt-get (i.e., apt-get over ghcr.io) apt-transport-oci is an apt-get plugin to support distributing *.deb

Nov 1, 2022

A library for the MIGP (Might I Get Pwned) protocolA library for the MIGP (Might I Get Pwned) protocol

MIGP library This contains a library for the MIGP (Might I Get Pwned) protocol. MIGP can be used to build privacy-preserving compromised credential ch

Dec 3, 2022

It is a clone of the CRUD operations on Instagram which can create, get, create posts and get the post along with pagination

It is a clone of the CRUD operations on Instagram which can create, get, create posts and get the post along with pagination

Instagram-API-Clone It is a basic version of a RESTful API based on Instagram where we can create user, get the users, create post and get post and ge

Jan 25, 2022

this allows you to get the real link of without get tracked bit.ly

this allows you to get the real link of without get tracked bit.ly

check the real url from a url shortener (bit.ly) Also you can use it as an API example with deno const rawResponse = await fetch("https://anti-url-s

Feb 19, 2022

Redis-benchmark - Simple get, mget and pipelined get benchmark.

redis-benchmark Simple get, mget and pipelined get benchmark. Usage git clone https://github.com/Ali-A-A/redis-benchmark.git cd ./redis-benchmark dock

Dec 31, 2021

This is repository for Simple HTTP GET golang app that counts standard deviation from random.org integers

Simple Get Deviation App This is repository for Simple HTTP GET golang app that counts standard deviation from random.org integers IMPORTANT: Because

Jan 10, 2022

Upgit - Upgit helps you simply upload any file to your Github repository and then get a raw URL for it

Upgit - Upgit helps you simply upload any file to your Github repository and then get a raw URL for it

Upgit - Upgit helps you simply upload any file to your Github repository and then get a raw URL for it

Dec 27, 2022

Image - This repository holds supplementary Go image librariesThis repository holds supplementary Go image libraries

Go Images This repository holds supplementary Go image libraries. Download/Insta

Jan 5, 2022

This is the repository I made while learning Go Programming Language & You can follow this repository to learn it

This is the repository I made while learning Go Programming Language & You can follow this repository to learn it

Golang Arena 🚀 Hey Folks! Welcome to Golang Arena . This is the repository I made while learning Go Programming Language & You can follow this reposi

Jan 31, 2022

Cdn - CDN microservice to upload files to zachlatta.com that only accepts traffic from Tailscale IPs

cdn CDN microservice to upload files to zachlatta.com that only accepts traffic from Tailscale IPs. source code available at https://github.com/zachla

Jun 26, 2022

A quick and easy password protected web server for your files. httpfolder makes downloading/uploading files from your current working directory easy, even for fairly large files.

httpfolder A quick and easy password protected web server for your files. httpfolder makes downloading/uploading files from your current working direc

Sep 12, 2022
Related tags
A single Git repository that holds two microservices (Python and GO)

A single Git repository that holds two microservices (Python and GO)

Nov 19, 2021
Sync tags in your git repository and a changelog in Keep a Changelog format with releases of your GitLab project.

Automatic GitLab releases Sync tags in your git repository and a changelog in Keep a Changelog format with releases of your GitLab project. Features:

Nov 12, 2022
A simple download file manager that sorts your files into your desired folders, This was meant to be a small project and nothing big.

GoDFM Simply go to the tags and download the .exe file (or compile it yourself by running go build). Add it to your environment paths by going to sett

Aug 9, 2022
Get-latest - Get the latest repository version
Get-latest - Get the latest repository version

get-latest Get the latest repository version Usage routes for public repos -> /:

Nov 30, 2022
A youtube library for retrieving metadata, and obtaining direct links to video-only/audio-only/mixed versions of videos on YouTube in Go.

A youtube library for retrieving metadata, and obtaining direct links to video-only/audio-only/mixed versions of videos on YouTube in Go. Install go g

Dec 10, 2022
log4jScanner: provides you with the ability to scan internal (only) subnets for vulnerable log4j web servicelog4jScanner: provides you with the ability to scan internal (only) subnets for vulnerable log4j web service
log4jScanner: provides you with the ability to scan internal (only) subnets for vulnerable log4j web servicelog4jScanner: provides you with the ability to scan internal (only) subnets for vulnerable log4j web service

log4jScanner Goals This tool provides you with the ability to scan internal (only) subnets for vulnerable log4j web services. It will attempt to send

Jan 5, 2023
A simple CLI tool that identifies duplicate JARS in a directory. It can remove them also if desired.

Mendix Userlib Cleaner This little utility can be used to identify and clean duplicate JARs. It was created mainly for Mendix apps due to lack of form

Nov 15, 2022
Download items from the Steam Workshop into the desired folder. (w/GUI)
Download items from the Steam Workshop into the desired folder. (w/GUI)

WorkshopDownloader Download How does it work? When you input a URL

Nov 22, 2022
RoutePlanner suggests circular walks or runs based on start location and desired distance.
RoutePlanner suggests circular walks or runs based on start location and desired distance.

RoutePlanner Backend This repository contains code that powers the routeplanner app. The app suggests circular walks or runs based on start location a

Nov 5, 2021
A very simple utility that allows you to run the desired command or script as soon as a certain process with a known PID completes correctly or with an error.

go-monkill A very simple utility that allows you to run the desired command or script as soon as a certain process with a known PID completes correctl

Dec 17, 2022