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 |

Using cargo

bash cargo install lezeh

Building manually

This requires rust bash make install

Setup

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

```yaml phab: apitoken: test125 pkcs12path: /path/to/pkcs12 host: 'yourphabricatorhost.com' pkcs12_password: abcdefg

ghub: api_token: test124

bitly: api_token: test123

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 {tasknumber} {tasknumber} {task_number} ...

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 {repokey} {schemekey} ```

URL Command

lezeh url shorten {longUrl}