Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

GXL 帮助(对齐当前实现)

1. 最小可运行示例

mod envs {
  env default {
    ROOT = "./";
  }
}

mod main {
  flow conf {
    gx.echo(value: "hello galaxy flow");
  }
}

2. 常用结构

2.1 模块与继承

mod base {
  flow setup {
    gx.echo(value: "setup");
  }
}

mod main : base {
  flow conf {
    gx.echo(value: "conf");
  }
}

2.2 环境与 gx.vars

mod envs {
  env base {
    gx.vars {
      APP = "galaxy";
      STAGE = "dev";
    };
  }

  env default : base;
}

2.3 flow 编排

mod main {
  flow prepare {
    gx.echo(value: "prepare");
  }

  flow deploy {
    gx.echo(value: "deploy");
  }

  flow @release | prepare | deploy {
    gx.echo(value: "release");
  }
}

2.4 函数与活动

mod sys {
  fn echo_tag(tag = "INFO", *msg) {
    gx.echo(value: "[${tag}] ${msg}");
  }

  activity copy {
    src = "";
    dst = "";
    executer = "copy_act.sh";
  }
}

mod main {
  flow conf {
    sys.echo_tag(msg: "start");
    sys.copy(src: "a.txt", dst: "b.txt");
  }
}

3. 控制流

3.1 if/else if/else

flow conf {
  if defined(${DEPLOY}) && ${DEPLOY} == "true" {
    gx.echo(value: "deploy");
  } else if ${STAGE} == "test" {
    gx.echo(value: "test");
  } else {
    gx.echo(value: "skip");
  }
}

3.2 for

flow conf {
  for ${CUR} in ${DATA} {
    gx.echo(value: "item=${CUR}");
  }
}

4. 内置能力写法

当前实现统一是函数调用形式:

gx.cmd(cmd: "echo hi");
gx.shell(shell: "./demo.sh", out_var: "OUT");
gx.read_file(file: "./var.yml", name: "DATA");
gx.tpl(tpl: "./tpls", dst: "./out", file: "./vars.json");

不要使用旧文档中的 gx.xxx { ... } 形式。

5. gx.patch_file 快速示例

gx.patch_file(
  file: "./Cargo.toml",
  action: "set",
  marker: "version",
  value: "0.12.3"
);

对应 marker 行:

version = "0.12.2"   # @gxl:set(version)

更多参数见:docs/gxl/inner/patch_file.md