Lezeh

lezeh is a CLI tool to ease day-to-day engineering operations such as: * Merging feature branch (by convention, specific using phabricator task number) into master, this includes cleaning up (delete) the merged feature branch * Merge and run deployment commands

Crates.io Crates.io

Install

Download binaries

Go to latest releases and download the binaries here

| Binary | OS | | ------------------------------------ | ----- | | lezeh-x86_64-unknown-linux-gnu.zip | Linux | | lezeh-x86_64-apple-darwin.zip | macOS |

Building manually

This requires rust bash make install

Setup

First create config file at ~/.lezeh, we're using Hjson format.

```bash { # As of now, you just need to set phab config, # please see https://github.com/sendyhalim/phab for more details phab: { apitoken: ... pkcs12path: ... host: https://yourphabricatorhost.com pkcs12password: ... }, ghub: { # This is your github personal token, # you need to register token with a full repository write access. apitoken: abc123 },

# Deployment command config deployment: { repositories: [ { # This is a unique key that will be used as hashmap key # for the repo. key: "repo-key" path: "repo-local-path" githubpath: "username/reponame" deploymentschemebykey: { stg: { name: "Deploy to stg" defaultpullrequesttitle: "Merge into stg" mergefrombranch: "master" mergeintobranch: "stg" } prod: { name: "Deploy to prod" defaultpullrequesttitle: "Merge into prod" mergefrombranch: "stg" mergeintobranch: "prod" } } } ] } } ```

Usage

Deployment Command

```bash

Below command will iterate all repositories under deployment.repositories config

and do the following operations:

* Make sure your local git data is updated by pulling remote git data from GH.

* For each remote branches that contains the given task numbers:

- Print out phabricator task owner (assigned) for that specific branch.

- Create a PR for the matched branch.

- Merge the branch into master with SQUASH strategy

- Delete the remote branch

lezeh deployment merge-feature-branches <...>

Merge repo (given repo key) based on given deployment scheme config.

#

Example usage (based on above config example):

lezeh deployment deploy repo-key stg

lezeh deployment deploy ```