From 28c0bd4ff3485525c9e0d4ea768944aca181d45a Mon Sep 17 00:00:00 2001 From: Shrijan Date: Wed, 4 Sep 2024 07:05:05 -0400 Subject: [PATCH 1/2] REST-15/env-with-flag: environment is loaded with flag --- bin/main.go | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/bin/main.go b/bin/main.go index 85aac55..e6020e3 100644 --- a/bin/main.go +++ b/bin/main.go @@ -83,8 +83,12 @@ func main() { &cli.StringFlag{ Name: "request", Aliases: []string{"r"}, - Usage: "request to execute", - Value: "", + Usage: "Select request to execute", + }, + &cli.StringFlag{ + Name: "env", + Aliases: []string{"e"}, + Usage: "Select env for request", }, } @@ -160,12 +164,20 @@ const ( ) func restAction(cCtx *cli.Context, actionName ActionName, restlerPath string) error { - var req = cCtx.Args().Get(0) if req == "" { log.Fatal("[Restler Error]: No request provided! Please provide request name as argument. Request name is the name of the folder in requests folder.") } + // update env if env flag is set + envFlag := cCtx.String("env") + if envFlag != "" { + err := loadWithYaml(fmt.Sprintf("%s/env/%s.yaml", restlerPath, envFlag), &env) + if err != nil { + return fmt.Errorf("[Restler Error]: Environment you have selected is not found in %s/env folder \n", restlerPath) + } + } + var reqPath = fmt.Sprintf("%s/requests/%s", restlerPath, req) if _, err := os.Stat(reqPath); os.IsNotExist(err) { log.Fatal("[Restler Error]: Request directory not found, please check the path. Request Directory Path: ", reqPath) From 0e438ecfcdbebb1cbf1da882566b0207c019dab0 Mon Sep 17 00:00:00 2001 From: Shrijan Date: Wed, 4 Sep 2024 07:21:03 -0400 Subject: [PATCH 2/2] REST-15/env-with-flag: updated readme for release --- Readme.md | 45 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/Readme.md b/Readme.md index a0e2735..69d284f 100644 --- a/Readme.md +++ b/Readme.md @@ -31,15 +31,48 @@ curl -s https://raw.githubusercontent.com/shrijan00003/restler/main/install/linu 5. (Optional) Create `config.yaml` file inside the API collection folder for configurations like environment. 6. (Optional) Change folder for API collection in runtime by setting `RESTLER_PATH` environment variable. For example `export RESTLER_PATH=app-prefix-collection` 7. Run `restler ` to run the request. For example `restler psot posts` to run post request and `restler get posts` to run get request. -8. Check the output files in `requests/` folder. For example `requests/posts/.post.res.txt` for post response and `requests/posts/.get.res.txt` for get request response. +8. Check the output files in `requests/` folder. For example `requests/posts/..post.res.md` for post response and `requests/posts/.get.res.txt` for get request response. 9. for other supports please check the [TODO](./todos/Todo.md) file. ## Commands Available -- `restler post ` -- `restler get ` -- `restler patch ` -- `restler put ` -- `restler delete ` +- `restler post ` or `restler p ` +- `restler get ` or `restler g ` +- `restler patch ` or `restler m ` +- `restler put ` or `restler u ` +- `restler delete ` or `restler d ` +- `restler --help` or `restler -h` or or `restler -h` +- `restler --version` or `restler -v` + +## Flag support +Now all our REST method commands supports following flags: + +### --env or -e +`env` flag is compatible for selecting environment from the command line. If we don't pass this option in command `Env` from config.yaml is default. + +### Usage +```bash +restler --env +``` +Fog eg, +```bash +restler p -e dev posts +``` + +### --request or -r +`request` flag is useful for seleting individual request from the request collection if you have multiple requests of same http method. Consider following structure: +```bash +reslter + requests + posts + - posts.post.yaml + - posts-v2.post.yaml + + +``` +For running posts-v2, we can use ` -r ` like following: +```bash +restler p -r posts-v2 posts +``` ## Proxy Usage