murp

command module
v0.2.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 20, 2026 License: MIT Imports: 5 Imported by: 0

README

murp - ✨🦄🌈😃 (Magical Unicorn Rainbow Pal)

release

Murp is a command-line tool designed to streamline your Git workflow, particularly when working with GitLab and Jira. It helps you create branches, manage merge requests, and maintain a consistent workflow between your issue tracking and version control systems.

Features

  • Branch Management: Create branches with standardized naming conventions based on Jira tickets
  • Merge Request Creation: Generate merge requests with proper titles, descriptions, and labels
  • Jira Integration: Pull ticket information directly from Jira to populate branch names and merge requests
  • GitLab Integration: Interact with GitLab's API to manage merge requests and labels

Installation

Go
# Install directly using go install
go install 0xee.cc/smgt/murp@latest

This requires that you have the Go binary path in your $PATH.

Nix
# Install
nix profile install git+https://0xee.cc/smgt/murp

# Update
nix profile upgrade murp
Using in a Flake

You can use murp in your own Nix flake by adding it to your inputs:

{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    murp.url = "git+ssh://git@0xee.cc/smgt/murp.git";
  };

  outputs = { self, nixpkgs, murp, ... }:
    let
      system = "x86_64-linux";
      pkgs = nixpkgs.legacyPackages.${system};
    in {
      # Available packages:
      # - murp.packages.${system}.murp (default release version)
      # - murp.packages.${system}.murp-snapshot (build from source)  
      # - murp.packages.${system}."murp.X.Y.Z" (specific versions)
      devShells.${system}.default = pkgs.mkShell {
        packages = [
          murp.packages.${system}.default
          # Other packages...
        ];
      };
      
      # Or in a NixOS configuration
      # nixosConfigurations.myhost = nixpkgs.lib.nixosSystem {
      #   inherit system;
      #   modules = [
      #     ({ pkgs, ... }: {
      #       environment.systemPackages = [ murp.packages.${system}.default ];
      #     })
      #   ];
      # };
    };
}
Using with Home Manager

The flake provides a Home Manager module for easy configuration:

{
  imports = [ inputs.murp.homeManagerModules.default ];
  
  programs.murp = {
    enable = true;
    jira.ticketQuery = "project = MYPROJECT AND assignee = currentUser()";
    gitlab.reviewers = [ "alice" "bob" ];
  };
}
Using with Overlays

Apply the overlay to add murp packages to nixpkgs:

{
  nixpkgs.overlays = [ inputs.murp.overlays.default ];
  # Now pkgs.murp and pkgs.murp-snapshot are available
}

Environment Variables

  • GITLAB_TOKEN: Your GitLab personal access token (required)
  • JIRA_API_ENDPOINT: URL to the Jira instance (required)
  • JIRA_API_USER: Username you log in to Jira with (required)
  • JIRA_API_TOKEN: Token for the username (required)

Configuration

Murp requires configuration for GitLab and Jira access:

  1. Set your GitLab and Jira as an environment variable:

    export GITLAB_TOKEN=your_gitlab_token
    export JIRA_API_ENDPOINT=https://example.atlassian.com
    export JIRA_API_USER=user@example.com
    export JIRA_API_TOKEN=your_jira_token
    
  2. Generate default config by runing:

    murp config init
    
  3. Edit the generated config file at ~/.config/murp/config.yml with your preferences.

Usage

Create a Branch
murp git branch

This interactive command will:

  • Ask if the branch is based on a Jira ticket
  • If yes, fetch and display your assigned tickets
  • Create a branch with a standardized name format
Create a Merge Request
murp mr create

This interactive command will:

  • Detect the current branch
  • Check for Jira ticket information in the branch name
  • Suggest a title and description based on the ticket
  • Allow you to select labels
  • Create the merge request in GitLab
View Configuration
murp config show

Version Management (For Maintainers)

Available Versions

List all available versions:

./scripts/list-versions.sh [--remote]
Adding New Versions

After a release is published (supports Linux x86_64/arm64 and Darwin x86_64/arm64):

# Add a new version (fetches hashes for all available platforms)
./scripts/add-version.sh 0.2.2

# Add and make it default
./scripts/release-nix.sh 0.2.2 --make-default
Building Specific Versions
# Default version (automatically selects correct platform)
nix build .#murp

# Build from source
nix build .#murp-snapshot  

# Specific version (supports Linux x86_64/arm64 and Darwin x86_64/arm64)
nix build '.#"murp.0.2.0"'
nix build '.#"murp.0.2.1"'

Release new version

  • Update VERSION with the new release number: echo -n X.Y.Z > VERSION
  • Commit the change, git add VERSION && git commit --msg "release: X.Y.Z"
  • Tag the release git tag X.Y.Z
  • Push to remote git push && git push --tags
  • Run goreleaser

License

This project is licensed under the MIT License - see the LICENSE file for details.

Contributing

[Contribution guidelines]

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
internal
app

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL