Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix Code Generation with GYB #205

Merged
merged 14 commits into from
Dec 10, 2024
Merged

Fix Code Generation with GYB #205

merged 14 commits into from
Dec 10, 2024

Conversation

arthurpalves
Copy link
Member

@arthurpalves arthurpalves commented Dec 14, 2022

What does this PR do

  • When capturing the output of a Bash command, select either stdout or stderr to be captured.
  • Require python2.7 to run gyb and default to a fatalError if not available. This prints an appropriate message to the user.
  • It defaults to a fatalError when generating Variants.Secrets if environment variable used by a custom config doesn't exist.

How can it be tested

  • Run variants switch or variants setup without python2.7 installed or in your executables path.
  • Run variants switch or variants setup with at least one custom config whose env: true but value points to a non-existing environment variable.

Task

Resolves #204
Resolves #240

Checklist:

  • I ran make validation locally with success
  • I have not introduced new bugs
  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented on my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new errors

@arthurpalves arthurpalves requested review from GMinucci and a user December 14, 2022 17:10
@arthurpalves arthurpalves requested a review from a user December 21, 2022 11:51
@GMinucci
Copy link
Collaborator

@arthurpalves Can we update GYB to latest so we use python3 instead of python2? Since Mac doesn't include python2 by default anymore users need to manually install in the end, so it's better if we install the later version already.
It seems GYB already have support to python3: https://github.com/apple/swift/blob/main/utils/gyb.py

@ghost
Copy link

ghost commented Jan 18, 2023

@arthurpalves Can we update GYB to latest so we use python3 instead of python2? Since Mac doesn't include python2 by default anymore users need to manually install in the end, so it's better if we install the later version already. It seems GYB already have support to python3: https://github.com/apple/swift/blob/main/utils/gyb.py

this is a very valid point. Using python2 require extra configuration and probably will cause issues for CI. can we move on with this PR @arthurpalves ?

@arthurpalves
Copy link
Member Author

@GMinucci @obackbase can one of you try using gyb with python3 support?
I've tried it before changing this PR but it fails every time:

Traceback (most recent call last):
  File "/usr/local/lib/variants/utils/gyb", line 3, in <module>
    gyb.main()
  File "/usr/local/lib/variants/utils/gyb.py", line 1254, in main
    f.write(execute_template(ast, args.line_directive, **bindings))
  File "/usr/local/lib/variants/utils/gyb.py", line 1124, in execute_template
    ast.execute(execution_context)
  File "/usr/local/lib/variants/utils/gyb.py", line 626, in execute
    x.execute(context)
  File "/usr/local/lib/variants/utils/gyb.py", line 712, in execute
    result = eval(self.code, context.local_bindings)
  File "/Users/arthura/Projects/PERSONAL/variants/samples/ios/Proj/Proj/Variants/Variants.swift.gyb", line 38, in <module>
    %{ salt = [ord(byte) for byte in os.urandom(64)] }%
  File "/Users/arthura/Projects/PERSONAL/variants/samples/ios/Proj/Proj/Variants/Variants.swift.gyb", line 38, in <listcomp>
    %{ salt = [ord(byte) for byte in os.urandom(64)] }%
TypeError: ord() expected string of length 1, but int found

@arthurpalves
Copy link
Member Author

@GMinucci had the chance to check this?

@GMinucci
Copy link
Collaborator

This PR also fixes #240

@GMinucci GMinucci force-pushed the fix/gyb-code-generation branch from 75600fd to 82bd008 Compare December 10, 2024 11:58
@Backbase Backbase deleted a comment from github-actions bot Dec 10, 2024
Copy link

github-actions bot commented Dec 10, 2024

Fails
🚫

danger-swift failed.

Log

�[31mERROR: Failed to parse JSON: valueNotFound(Swift.Dictionary<Swift.String, Foundation.JSONValue>, Swift.DecodingError.Context(codingPath: [CodingKeys(stringValue: "danger", intValue: nil), CodingKeys(stringValue: "github", intValue: nil), CodingKeys(stringValue: "reviews", intValue: nil), _JSONKey(stringValue: "Index 0", intValue: 0), CodingKeys(stringValue: "user", intValue: nil)], debugDescription: "Cannot get keyed decoding container -- found null value instead", underlyingError: nil))
�[0;0m�[31mERROR: Dangerfile eval failed at Dangerfile.swift
�[0;0m�[31mERROR: Could not get the results JSON file at /tmp/danger/6EE1AE74-A513-4C32-AB71-9D569D881742/danger-response.json
�[0;0m

Generated by 🚫 dangerJS against 1f939e8

@GMinucci GMinucci merged commit e6063f3 into develop Dec 10, 2024
3 of 6 checks passed
@GMinucci GMinucci deleted the fix/gyb-code-generation branch December 10, 2024 16:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[iOS] - False positive when generating Variants.swift env: python2.7: No such file or directory
2 participants