@pie-api/mru
TypeScript icon, indicating that this package has built-in type declarations

1.4.0 • Public • Published

mru

mono repo utils - has strong opinions!

You have a cloud funtion here: functions/my-fn, then mru my-fn will:

  1. bundles functions/my-fn/lib/index.ts
  2. creates zip file
  3. pushes zip to gcloud storage
  4. gcloud deploys w/ env vars + flags

mru my-container will:

  1. bundle containers/my-container/lib/index.ts
  2. docker builds w/ tag
  3. docker push tag
  4. gcloud deploys w/ env vars

mru.config.js

mru will read mru.config.js from the cwd. It can overrides the following properties. mru will also read in command line flags, these will take highest priority.

From the above we build a Config that has the following form:

export type Config = {

  envDir: string; // required 
  projectId: string; // required 
  region: string; // required 
  bucketPath: (projectId: string, region: string) => string;  // required
  dockerRegistry: string; // 'grc.io'
  containers: string; //'containers'
  functions: string; //'functions'
  dryRun: boolean; // false
  /**
   * All true by default set --no-bundle to disable bundle. 
   * same for the others
   */
  steps: {
    bundle: boolean;
    docker: boolean;
    deploy: boolean;
  };
  /** 
   * This is generated by mru - don't need to set it
   */
  git?: {
    hash: string;
  };
}

cloud config

mru will generate the deployment arguments for a container/function using 2 sources:

  1. the loaded env file loaded from $envDir/$projectId.yaml.
  2. the cloud map in the package's package.json

Example

{
  "name": "my-fn",
  "cloud": {
    "deployFlags": {
      "foo":  "$ENV_VAR"
    },
    "environment":{
      "ENV_VAR": "$ENV_VAR"
    }
  }
}

env:

ENV_VAR: bar

in the above:

  1. deployFlags.foo will be converted to --foo bar and passed to the appropriate gcloud command.
  2. the env vars will be set to --set-env-vars ENV_VAR=bar

By doing this, we can put all our env vars in 1 place, and each pkg will only pull what it needs.

Readme

Keywords

none

Package Sidebar

Install

npm i @pie-api/mru

Weekly Downloads

12

Version

1.4.0

License

MIT

Unpacked Size

84.7 kB

Total Files

37

Last publish

Collaborators

  • andreeapescar
  • chillenious
  • iacoshoria
  • ed.eustace