homebysix / recipe-robot

A kick ass tool for creating AutoPkg recipes.
Apache License 2.0
300 stars 28 forks source link

.tgz download from Sparklefeed #134

Closed mikaellofgren closed 5 years ago

mikaellofgren commented 6 years ago

Hi Try to use Recipe-Robot to build a recipe for Fontagent. http://cdn.insidersoftware.com/_downloads/FontAgent8.dmg

The sparklefeed tries to download .tgz, it works if I build a manually recipe.

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Description</key>
    <string>Downloads the latest version of Fontagent 8.</string>
    <key>Identifier</key>
    <string>com.github.mikaellofgren.download.Fontagent8</string>
    <key>Input</key>
    <dict>
        <key>NAME</key>
        <string>Fontagent</string>
        <key>SPARKLE_FEED_URL</key>
        <string>https://updates.insidersoftware.com/software/fontagent8/release/notes.xml</string>
    </dict>
    <key>MinimumVersion</key>
    <string>0.6.1</string>
    <key>Process</key>
    <array>
        <dict>
            <key>Arguments</key>
            <dict>
                <key>appcast_url</key>
                <string>%SPARKLE_FEED_URL%</string>
            </dict>
            <key>Processor</key>
            <string>SparkleUpdateInfoProvider</string>
        </dict>
        <dict>
            <key>Arguments</key>
            <dict>
                <key>filename</key>
                <string>%NAME%_%version%.tgz</string>
            </dict>
            <key>Processor</key>
            <string>URLDownloader</string>
        </dict>
        <dict>
            <key>Processor</key>
            <string>EndOfCheckPhase</string>
        </dict>
        <dict>
            <key>Arguments</key>
            <dict>
                <key>archive_path</key>
                <string>%pathname%</string>
                <key>destination_path</key>
                <string>%RECIPE_CACHE_DIR%/%NAME%/%NAME%_%version%.pkg</string>
                <key>purge_destination</key>
                <true/>
            </dict>
            <key>Processor</key>
            <string>Unarchiver</string>
        </dict>
        <dict>
        <key>Processor</key>
            <string>CodeSignatureVerifier</string>
            <key>Arguments</key>
            <dict>
                <key>input_path</key>
                <string>%RECIPE_CACHE_DIR%/%NAME%/FontAgent*.*pkg</string>
                <key>expected_authority_names</key>
            <array>
            <string>Developer ID Installer: Insider Software Inc. (936VDEB3YQ)</string>
            <string>Developer ID Certification Authority</string>
            <string>Apple Root CA</string>
            </array>
            </dict>
</dict>
</array>
</dict>
</plist>
homebysix commented 5 years ago

Hi @mikaellofgren - This is a really interesting case, thanks for finding it! The issue led me to a bug that caused Recipe Robot to fail to expand .tgz files properly, which led it to fall back on the initial .dmg format you provided it.

I've made some changes to the master branch that should resolve this issue. Could you try again now?

mikaellofgren commented 5 years ago

Hi Thanks for a great app! I just downloaded latest Recipe Robot 1.1.1 (909), and tried the URL, but got this error:

[Processing http://cdn.insidersoftware.com/_downloads/FontAgent8.dmg ... Input path looks like a download URL. Download URL is: http://cdn.insidersoftware.com/_downloads/FontAgent8.dmg [WARNING] Careful, this might be a version-specific URL. Better to give me a "latest" URL or a Sparkle feed. Checking for HTTPS URL... Domain does not have a valid SSL certificate. Downloading file for further inspection... [WARNING] This download URL is not using HTTPS. I recommend contacting the developer and politely suggesting that they secure their download URL. (Example: https://twitter.com/homebysix/status/714508127228403712) 9.97% 19.95% 29.92% 39.90% 49.87% 59.85% 69.82% 79.79% 89.77% 99.74% Downloaded to /Users/mikael/Library/Caches/Recipe Robot/2019-02-21_17-55-40_000507/FontAgent8.dmg Determining download format... File extension is dmg Opening downloaded file... Successfully mounted disk image Checking whether package is signed... Package is signed Getting developer from pkg signature... Developer is: Insider Software Inc. Getting package signature authority names... 3 authority names recorded Expanding package to look for clues... Package expanded to: /Users/mikael/Library/Caches/Recipe Robot/2019-02-21_17-55-40_000507/expanded Trying to get bundle identifier from PackageInfo file... Bundle identifier (tentative): com.insidersoftware.fontagent8.pkg Added blocking application: Uninstaller.app Added blocking application: FontAgent.app Added blocking application: FontAgent Activator.app Added blocking application: FontAgent Pro.app [WARNING] Multiple apps found in payload. I'll do my best to figure out which one to use. Using app: FontAgent.app In container package: fontagentinstall.pkg Validating app... App seems valid Getting app name... App name is: FontAgent Getting bundle identifier... Bundle identifier is: com.insidersoftware.v8.fontagent Checking for a Sparkle feed... Sparkle feed is: https://updates.insidersoftware.com/software/fontagent8/release/notes.xml Getting information from Sparkle feed... The Sparkle feed does not provide a version number The latest version is 0 Looking for version key... Version key is: CFBundleShortVersionString (8.3.4) Looking for app icon... App icon is: /Users/mikael/Library/Caches/Recipe Robot/2019-02-21_17-55-40000507/payload0/Applications/FontAgent 8/FontAgent.app/Contents/Resources/AppIcon Getting app description... Description (from MacUpdate): Font management and repair utility. Searching for existing AutoPkg recipes for FontAgent... [ERROR] Recipe Robot exploded with unexpected error: Traceback (most recent call last): File "/Applications/Recipe Robot.app/Contents/Resources/scripts/recipe-robot", line 68, in main time, = recipe_robot_lib.generate_recipes(facts, prefs) # pylint: disable=assignment-from-no-return File "/Applications/Recipe Robot.app/Contents/Resources/scripts/recipe_robot_lib/tools.py", line 117, in run_func result = func(*args, **kwargs) File "/Applications/Recipe Robot.app/Contents/Resources/scripts/recipe_robot_lib/recipe_generator.py", line 54, in generate_recipes create_existing_recipe_list(facts) File "/Applications/Recipe Robot.app/Contents/Resources/scripts/recipe_robot_lib/tools.py", line 387, in create_existing_recipe_list exitcode, out, err = get_exitcode_stdout_stderr(cmd) File "/Applications/Recipe Robot.app/Contents/Resources/scripts/recipe_robot_lib/tools.py", line 265, in get_exitcode_stdout_stderr stderr=PIPE) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 710, in init errread, errwrite) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1335, in _execute_child raise child_exception OSError: [Errno 2] No such file or directory

[ERROR] _

homebysix commented 5 years ago

The fix hasn’t been released yet. You can test it out by cloning the repo or downloading a zip copy, then running ./scripts/recipe-robot from there.

mikaellofgren commented 5 years ago

Ok, just tried cloning and running 1.1.2 but seems to get the same error:

                  -----------------------------------
                 |  Welcome to Recipe Robot v1.1.2.  |
                  -----------------------------------
                            \   _[]_
                             \  [oo]
                               d-||-b
                                 ||
                               _/  \_

Processing http://cdn.insidersoftware.com/_downloads/FontAgent8.dmg ... Input path looks like a download URL. Download URL is: http://cdn.insidersoftware.com/_downloads/FontAgent8.dmg [WARNING] Careful, this might be a version-specific URL. Better to give me a "latest" URL or a Sparkle feed. Checking for HTTPS URL... Domain does not have a valid SSL certificate. [WARNING] This download URL is not using HTTPS. I recommend contacting the developer and politely suggesting that they secure their download URL. (Example: https://twitter.com/homebysix/status/714508127228403712) Downloading file for further inspection... Downloaded to /Users/mikael/Library/Caches/Recipe Robot/2019-02-23_12-10-26_449977/FontAgent8.dmg Determining download format... File extension is dmg Opening downloaded file... Successfully mounted disk image Checking whether package is signed... Package is signed Getting developer from pkg signature... Developer is: Insider Software Inc. Getting package signature authority names... 3 authority names recorded Expanding package to look for clues... Package expanded to: /Users/mikael/Library/Caches/Recipe Robot/2019-02-23_12-10-26_449977/expanded Trying to get bundle identifier from PackageInfo file... Bundle identifier (tentative): com.insidersoftware.fontagent8.pkg Found application: Uninstaller.app Added blocking application: FontAgent.app Added blocking application: FontAgent Activator.app Added blocking application: FontAgent Pro.app [WARNING] Multiple apps found in payload. I'll do my best to figure out which one to use. Using app: FontAgent.app In container package: fontagentinstall.pkg Validating app... App seems valid Getting app name... App name is: FontAgent Getting bundle identifier... Bundle identifier is: com.insidersoftware.v8.fontagent Checking for a Sparkle feed... Sparkle feed is: https://updates.insidersoftware.com/software/fontagent8/release/notes.xml Getting information from Sparkle feed... The Sparkle feed does not provide a version number The latest version is 0 Download URL is: https://updates.insidersoftware.com/software/fontagent8/fontagent_8.3.4.tgz Downloading file for further inspection... Downloaded to /Users/mikael/Library/Caches/Recipe Robot/2019-02-23_12-10-26_449977/fontagent_8.3.4.tgz Determining download format... File extension is tgz Looking for version key... Version key is: CFBundleShortVersionString (8.3.4) Looking for app icon... App icon is: /Users/mikael/Library/Caches/Recipe Robot/2019-02-23_12-10-26449977/payload0/Applications/FontAgent 8/FontAgent.app/Contents/Resources/AppIcon Getting app description... Description (from MacUpdate): Font management and repair utility. Searching for existing AutoPkg recipes for FontAgent... [ERROR] Recipe Robot exploded with unexpected error: Traceback (most recent call last): File "./recipe-robot", line 68, in main time, = recipe_robot_lib.generate_recipes(facts, prefs) # pylint: disable=assignment-from-no-return File "/Users/mikael/Downloads/recipe-robot-master/scripts/recipe_robot_lib/tools.py", line 117, in run_func result = func(*args, **kwargs) File "/Users/mikael/Downloads/recipe-robot-master/scripts/recipe_robot_lib/recipe_generator.py", line 54, in generate_recipes create_existing_recipe_list(facts) File "/Users/mikael/Downloads/recipe-robot-master/scripts/recipe_robot_lib/tools.py", line 387, in create_existing_recipe_list exitcode, out, err = get_exitcode_stdout_stderr(cmd) File "/Users/mikael/Downloads/recipe-robot-master/scripts/recipe_robot_lib/tools.py", line 265, in get_exitcode_stdout_stderr stderr=PIPE) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 710, in init errread, errwrite) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1335, in _execute_child raise child_exception OSError: [Errno 2] No such file or directory

[ERROR]

homebysix commented 5 years ago

That’s a very different error. You have AutoPkg installed, correct?

mikaellofgren commented 5 years ago

yes thats correct.

homebysix commented 5 years ago

What output do you get when you run this command?

/usr/local/bin/autopkg search --path-only FontAgent
mikaellofgren commented 5 years ago

hmm I was somehow missing AutoPkg binary at /usr/local/bin/autopkg, but had the AutoPkg folder in /Users/mikael/Library/AutoPkg with some recipes First I tried to rename /Users/mikael/Library/AutoPkg and run recipe-robot, same problem. Reinstalled AutoPkg, and all worked fine. Thanks!

homebysix commented 5 years ago

Great! I built a check for /usr/local/bin/autopkg into the next release of Recipe Robot, due out soon.