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

Replace base64 command with Python utility #131

Merged
merged 3 commits into from
Apr 19, 2024
Merged

Replace base64 command with Python utility #131

merged 3 commits into from
Apr 19, 2024

Conversation

kyanny
Copy link
Collaborator

@kyanny kyanny commented Apr 19, 2024

@gm3dmo

ref: #70 (comment)

Add base64encode.py script as portable, platform agnostic alternative for base64 command.

Replace base64 command invocation in shell scripts with ./base64encode.py.

base64encode.py script accepts file path and standard input. If it is called with argument, it prints a single line base64 encoded string of given file.

❯ ./base64encode.py dotnet.csproj_ 
PFByb2plY3QgU2RrPSJNaWNyb3NvZnQuTkVULlNkay5XZWIiPgogIDxQcm9wZXJ0eUdyb3VwPgogICAgPFRhcmdldEZyYW1ld29yaz5uZXRjb3JlYXBwMy4wPC9UYXJnZXRGcmFtZXdvcms+CiAgPC9Qcm9wZXJ0eUdyb3VwPgogIDxJdGVtR3JvdXA+CiAgICA8UGFja2FnZVJlZmVyZW5jZSBJbmNsdWRlPSJFbGVjdHJvbk5FVC5BUEkiIFZlcnNpb249IjUuMzAuMSIgLz4KICAgIDxQYWNrYWdlUmVmZXJlbmNlIEluY2x1ZGU9Ik1hcnZpbi5TdHJlYW1FeHRlbnNpb25zIiBWZXJzaW9uPSIxLjEuMCIgLz4KICAgIDxQYWNrYWdlUmVmZXJlbmNlIEluY2x1ZGU9Ik1pY3Jvc29mdC5Bc3BOZXRDb3JlLkFwcCIgLz4KICAgIDxQYWNrYWdlUmVmZXJlbmNlIEluY2x1ZGU9Ik1pY3Jvc29mdC5WaXN1YWxTdHVkaW8uV2ViLkNvZGVHZW5lcmF0aW9uLkRlc2lnbiIgVmVyc2lvbj0iMy4xLjAiIC8+CiAgICA8UGFja2FnZVJlZmVyZW5jZSBJbmNsdWRlPSJOZXd0b25zb2Z0Lkpzb24iIFZlcnNpb249IjEyLjAuMyIgLz4KICAgIDxQYWNrYWdlUmVmZXJlbmNlIEluY2x1ZGU9Ik1pY3Jvc29mdC5Bc3BOZXRDb3JlLk12Yy5OZXd0b25zb2Z0SnNvbiIgVmVyc2lvbj0iMy4wLjAiIC8+CiAgICA8UGFja2FnZVJlZmVyZW5jZSBJbmNsdWRlPSJTeXN0ZW0uSU8uUGlwZWxpbmVzIiBWZXJzaW9uPSI0LjUuMCIgLz4KICA8L0l0ZW1Hcm91cD4KICA8SXRlbUdyb3VwPjwvSXRlbUdyb3VwPgogIDxJdGVtR3JvdXA+CiAgICA8Q29udGVudCBVcGRhdGU9ImVsZWN0cm9uLm1hbmlmZXN0Lmpzb24iPgogICAgICA8Q29weVRvT3V0cHV0RGlyZWN0b3J5PlByZXNlcnZlTmV3ZXN0PC9Db3B5VG9PdXRwdXREaXJlY3Rvcnk+CiAgICA8L0NvbnRlbnQ+CiAgPC9JdGVtR3JvdXA+CjwvUHJvamVjdD4K

It contents are given from standard input, it encodes the contents to base64.

❯ cat dotnet.csproj_ | ./base64encode.py 
PFByb2plY3QgU2RrPSJNaWNyb3NvZnQuTkVULlNkay5XZWIiPgogIDxQcm9wZXJ0eUdyb3VwPgogICAgPFRhcmdldEZyYW1ld29yaz5uZXRjb3JlYXBwMy4wPC9UYXJnZXRGcmFtZXdvcms+CiAgPC9Qcm9wZXJ0eUdyb3VwPgogIDxJdGVtR3JvdXA+CiAgICA8UGFja2FnZVJlZmVyZW5jZSBJbmNsdWRlPSJFbGVjdHJvbk5FVC5BUEkiIFZlcnNpb249IjUuMzAuMSIgLz4KICAgIDxQYWNrYWdlUmVmZXJlbmNlIEluY2x1ZGU9Ik1hcnZpbi5TdHJlYW1FeHRlbnNpb25zIiBWZXJzaW9uPSIxLjEuMCIgLz4KICAgIDxQYWNrYWdlUmVmZXJlbmNlIEluY2x1ZGU9Ik1pY3Jvc29mdC5Bc3BOZXRDb3JlLkFwcCIgLz4KICAgIDxQYWNrYWdlUmVmZXJlbmNlIEluY2x1ZGU9Ik1pY3Jvc29mdC5WaXN1YWxTdHVkaW8uV2ViLkNvZGVHZW5lcmF0aW9uLkRlc2lnbiIgVmVyc2lvbj0iMy4xLjAiIC8+CiAgICA8UGFja2FnZVJlZmVyZW5jZSBJbmNsdWRlPSJOZXd0b25zb2Z0Lkpzb24iIFZlcnNpb249IjEyLjAuMyIgLz4KICAgIDxQYWNrYWdlUmVmZXJlbmNlIEluY2x1ZGU9Ik1pY3Jvc29mdC5Bc3BOZXRDb3JlLk12Yy5OZXd0b25zb2Z0SnNvbiIgVmVyc2lvbj0iMy4wLjAiIC8+CiAgICA8UGFja2FnZVJlZmVyZW5jZSBJbmNsdWRlPSJTeXN0ZW0uSU8uUGlwZWxpbmVzIiBWZXJzaW9uPSI0LjUuMCIgLz4KICA8L0l0ZW1Hcm91cD4KICA8SXRlbUdyb3VwPjwvSXRlbUdyb3VwPgogIDxJdGVtR3JvdXA+CiAgICA8Q29udGVudCBVcGRhdGU9ImVsZWN0cm9uLm1hbmlmZXN0Lmpzb24iPgogICAgICA8Q29weVRvT3V0cHV0RGlyZWN0b3J5PlByZXNlcnZlTmV3ZXN0PC9Db3B5VG9PdXRwdXREaXJlY3Rvcnk+CiAgICA8L0NvbnRlbnQ+CiAgPC9JdGVtR3JvdXA+CjwvUHJvamVjdD4K

❯ ./base64encode.py < dotnet.csproj_     
PFByb2plY3QgU2RrPSJNaWNyb3NvZnQuTkVULlNkay5XZWIiPgogIDxQcm9wZXJ0eUdyb3VwPgogICAgPFRhcmdldEZyYW1ld29yaz5uZXRjb3JlYXBwMy4wPC9UYXJnZXRGcmFtZXdvcms+CiAgPC9Qcm9wZXJ0eUdyb3VwPgogIDxJdGVtR3JvdXA+CiAgICA8UGFja2FnZVJlZmVyZW5jZSBJbmNsdWRlPSJFbGVjdHJvbk5FVC5BUEkiIFZlcnNpb249IjUuMzAuMSIgLz4KICAgIDxQYWNrYWdlUmVmZXJlbmNlIEluY2x1ZGU9Ik1hcnZpbi5TdHJlYW1FeHRlbnNpb25zIiBWZXJzaW9uPSIxLjEuMCIgLz4KICAgIDxQYWNrYWdlUmVmZXJlbmNlIEluY2x1ZGU9Ik1pY3Jvc29mdC5Bc3BOZXRDb3JlLkFwcCIgLz4KICAgIDxQYWNrYWdlUmVmZXJlbmNlIEluY2x1ZGU9Ik1pY3Jvc29mdC5WaXN1YWxTdHVkaW8uV2ViLkNvZGVHZW5lcmF0aW9uLkRlc2lnbiIgVmVyc2lvbj0iMy4xLjAiIC8+CiAgICA8UGFja2FnZVJlZmVyZW5jZSBJbmNsdWRlPSJOZXd0b25zb2Z0Lkpzb24iIFZlcnNpb249IjEyLjAuMyIgLz4KICAgIDxQYWNrYWdlUmVmZXJlbmNlIEluY2x1ZGU9Ik1pY3Jvc29mdC5Bc3BOZXRDb3JlLk12Yy5OZXd0b25zb2Z0SnNvbiIgVmVyc2lvbj0iMy4wLjAiIC8+CiAgICA8UGFja2FnZVJlZmVyZW5jZSBJbmNsdWRlPSJTeXN0ZW0uSU8uUGlwZWxpbmVzIiBWZXJzaW9uPSI0LjUuMCIgLz4KICA8L0l0ZW1Hcm91cD4KICA8SXRlbUdyb3VwPjwvSXRlbUdyb3VwPgogIDxJdGVtR3JvdXA+CiAgICA8Q29udGVudCBVcGRhdGU9ImVsZWN0cm9uLm1hbmlmZXN0Lmpzb24iPgogICAgICA8Q29weVRvT3V0cHV0RGlyZWN0b3J5PlByZXNlcnZlTmV3ZXN0PC9Db3B5VG9PdXRwdXREaXJlY3Rvcnk+CiAgICA8L0NvbnRlbnQ+CiAgPC9JdGVtR3JvdXA+CjwvUHJvamVjdD4K

@kyanny
Copy link
Collaborator Author

kyanny commented Apr 19, 2024

Example:

❯ git diff create-commit-csproj.sh 
        1 diff --git a/create-commit-csproj.sh b/create-commit-csproj.sh
        2 index 3a4c27f..01d0862 100755
        3 --- a/create-commit-csproj.sh
        4 +++ b/create-commit-csproj.sh
        5 @@ -10,7 +10,7 @@ if [ -z "$1" ]
        6      repo=$1
        7  fi
        8  
        9 -base64_string=$(base64 dotnet.csproj_)
       10 +base64_string=$(./base64encode.py dotnet.csproj_)
       11  content=${base64_string}
       12  filename_in_repo=dotnet.csproj
       13  comment=".net project file like a pom.xml or requirements.txt. Used to trigger dependabot."

~/ghq/github.com/gm3dmo/the-power kyanny-base64*
❯ bash create-commit-csproj.sh    
{
  "content": {
    "name": "dotnet.csproj",
    "path": "dotnet.csproj",
    "sha": "422a43c059a9146324a3e07875e736516fcc8dc9",
    "size": 885,
    "url": "https://api.github.com/repos/kyanny-corp-enterprise-cloud-testing/testrepo/contents/dotnet.csproj?ref=main",
    "html_url": "https://github.com/kyanny-corp-enterprise-cloud-testing/testrepo/blob/main/dotnet.csproj",
    "git_url": "https://api.github.com/repos/kyanny-corp-enterprise-cloud-testing/testrepo/git/blobs/422a43c059a9146324a3e07875e736516fcc8dc9",
    "download_url": "https://raw.githubusercontent.com/kyanny-corp-enterprise-cloud-testing/testrepo/main/dotnet.csproj?token=AAACSE7EECLG4SEJZWGWYDTGEJLXE",
    "type": "file",
    "_links": {
      "self": "https://api.github.com/repos/kyanny-corp-enterprise-cloud-testing/testrepo/contents/dotnet.csproj?ref=main",
      "git": "https://api.github.com/repos/kyanny-corp-enterprise-cloud-testing/testrepo/git/blobs/422a43c059a9146324a3e07875e736516fcc8dc9",
      "html": "https://github.com/kyanny-corp-enterprise-cloud-testing/testrepo/blob/main/dotnet.csproj"
    }
  },
  "commit": {
    "sha": "a8d9dbd346126355f633310b57a4a628f3be6263",
    "node_id": "C_kwDOF_BMu9oAKGE4ZDlkYmQzNDYxMjYzNTVmNjMzMzEwYjU3YTRhNjI4ZjNiZTYyNjM",
    "url": "https://api.github.com/repos/kyanny-corp-enterprise-cloud-testing/testrepo/git/commits/a8d9dbd346126355f633310b57a4a628f3be6263",
    "html_url": "https://github.com/kyanny-corp-enterprise-cloud-testing/testrepo/commit/a8d9dbd346126355f633310b57a4a628f3be6263",
    "author": {
      "name": "hubot",
      "email": "kyanny+hubot@example.com",
      "date": "2024-04-19T11:36:21Z"
    },
    "committer": {
      "name": "hubot",
      "email": "kyanny+hubot@example.com",
      "date": "2024-04-19T11:36:21Z"
    },
    "tree": {
      "sha": "83801184fd219f62cd27890491ecff2cbb7fcc55",
      "url": "https://api.github.com/repos/kyanny-corp-enterprise-cloud-testing/testrepo/git/trees/83801184fd219f62cd27890491ecff2cbb7fcc55"
    },
    "message": "Adding a dotnet.csproj file for .net project file like a pom.xml or requirements.txt. Used to trigger dependabot.",
    "parents": [
      {
        "sha": "2bd7f98370c9ab13b95af6698eb6173213c531e4",
        "url": "https://api.github.com/repos/kyanny-corp-enterprise-cloud-testing/testrepo/git/commits/2bd7f98370c9ab13b95af6698eb6173213c531e4",
        "html_url": "https://github.com/kyanny-corp-enterprise-cloud-testing/testrepo/commit/2bd7f98370c9ab13b95af6698eb6173213c531e4"
      }
    ],
    "verification": {
      "verified": false,
      "reason": "unsigned",
      "signature": null,
      "payload": null
    }
  }
}

Copy link
Owner

@gm3dmo gm3dmo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. I tested a build-all.sh on ghes. Merging.

@gm3dmo gm3dmo merged commit f49153d into main Apr 19, 2024
4 checks passed
@gm3dmo gm3dmo deleted the kyanny-base64 branch April 19, 2024 16:33
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.

None yet

2 participants