laurilehmijoki/s3_website

Suggestion: add '--env' flag to 's3_website push' command

zulhfreelancer opened this issue · 6 comments

I would like to suggest that we have this inside the s3_website.yml file:

production:
    s3_id: ...
    s3_secret: ...
    s3_bucket: ...

staging:
    s3_id: ...
    s3_secret: ...
    s3_bucket: ...

And, when deploying the site, we can use --env flag like this:

s3_website push --env staging
s3_website push --env production

I know that we can use ERB inside the YAML file and use dotenv to set different S3 credentials. But, having if and else inside the YAML file make it look longer and less elegant.

I know, by having if and else inside the YAML file, we can simply deploy with this style:

ENV=staging s3_website push
ENV=production s3_website push

I still prefer to use --env flag. I can help with this. I just need some guide/reference/tutorial resources. Please share the resources here if you have it.

Hello @zulhfreelancer, at the moment we support alternative configurations with the --config-dir command-line option.

For example, if you would have the files staging/s3_website.yml and production/s3_website.yml, the --config-dir option allows you to say

s3_website push --config-dir=staging
s3_website push --config-dir=production

Now that I look at the README, this feature seems not to be properly documented – we could clearly improve the docs on this matter.

I do agree that there are benefits in having alternative configurations in the same file. For example, it would allow you examine all the alternative configs by looking at the same file.

Thanks. Can we add --env flag too like what I proposed here?

I find the flag redundant, because the config-dir flag can be used in place of it. I think it's better to be unambiguous when it comes to command-line options. Maybe I'm not seeing some important point of view. What others think?

Instead of adding the flag, maybe we can improve the documentation by adding an example of how to use the config-dir option to specify alternative configurations?

I found that creating 2 s3_website.yml files are tedious. It's better to just have 1 s3_website.yml file and put production and staging block inside it.

And, s3_website push --env staging command is shorter than s3_website push --config-dir=staging.

With Jekyll, we have to maintain multiple config files for different environments and this syntax aligns with that usage (--config). I don't mind it as-is.

@zulhfreelancer How do you define the blocks, can you give me a example