在appveyor.yml回显行中添加引号

时间:2018-10-27 21:13:00

标签: bash yaml appveyor

我有这行代码,将一些版本信息添加到我的版本中:

const names = [
    "Oliver Hansen",
    "Van Henry",
    "April Tucker",
    "Ralph Hubbard",
    "Omar Alexander",
    "Carlos Abbott",
    "Miriam Wagner",
    "Bradley Wilkerson",
    "Virginia Andrews",
    "Kelly Snyder"
];
const ITEM_HEIGHT = 48;
const ITEM_PADDING_TOP = 8;
const MenuProps = {
    PaperProps: {
        style: {
            maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP,
            width: 250
        }
    }
};

class SomeComponent extends Component<{}, {name: string[]}> {
    constructor(props: {}) {
        super(props);
        this.state = {name: []};
    }
    render(): ReactNode {
        return (
            <FormControl fullWidth={true}>
                <InputLabel htmlFor="select-multiple">Name of some random person</InputLabel>
                <Select
                    name="name"
                    multiple={true}
                    value={this.state.name}
                    onChange={this.handleMultiSelect}
                    input={<Input id="select-multiple" />}
                    fullWidth={true}
                    MenuProps={MenuProps}
                >
                    {names.map(name => (
                        <MenuItem key={name} value={name}>{name}</MenuItem>
                    ))}
                </Select>
            </FormControl>
        );
    }

    private handleMultiSelect = (event: any): void => {
        const newValue: string[] = event.target.value;
        this.setState({ name: newValue });
    }
}

显然这不是有效的JS,因为缺少引号。有人可以帮助我,这样我就可以将此字符串写入我的install: - 'echo "export const VERSION = Git Hash: %APPVEYOR_REPO_COMMIT%" > version.js' 文件中了:

version.js

我确实尝试了一些转义和转义引号,但是构建时间有些痛苦。

1 个答案:

答案 0 :(得分:1)

通过引用该序列元素,您正在浪费单引号的使用。您不能有一个普通的标量(由于中间句子冒号+空格),但是使用文字块样式标量通常会更好。以下等同于您的YAML:

install:
  - |-
    echo "export const VERSION = Git Hash: %APPVEYOR_REPO_COMMIT%" > version.js

因此,您可以对echo参数使用单引号,但在其中仍使用双引号:

install:
  - |-
    echo 'export const VERSION = "Git Hash: %APPVEYOR_REPO_COMMIT%"' > version.js

-之后的|要删除最后的换行符

或者,假设Appveyor使用相对标准的回显,则可以使用其-e选项:

    -e     enable interpretation of backslash escapes

在这种情况下,您不需要使用文字块样式标量来获取不太可读的内容:

install:
  - 'echo -e "export const VERSION = \"Git Hash: %APPVEYOR_REPO_COMMIT%"" > version.js'

请注意,根据官方的YAML常见问题解答,YAML文件的正确扩展名应为 .yaml 。您可以使用.yml告诉Appveyor不要默认使用Custom configuration .yml [sic!] file name扩展名。对于我的YAML解析器,我还将其设置为隐藏文件:.appveyor.yaml