installation - How to update WP-CLI on Windows via Composer?

I installed wp-cli back in April on my Windows box using composer.I believe with the following command: composer creat

I installed wp-cli back in April on my Windows box using composer. I believe with the following command: composer create-project wp-cli/wp-cli --no-dev as outlined in the alternate install methods on here.

I have since used "composer update --no-dev" to update but just realized that it is only updating the dependencies and not the wp-cli package itself. If I run a "wp cli version" it reports version WP-CLI 0.18.0, yet v0.20.4 is the latest released version.

I can't seem to find any way to update wp-cli. I suppose I could just install a new copy each time but that seems silly. Regardless, I did test and if I issue a "composer create-project wp-cli/wp-cli --no-dev" in a new directory it downloads the latest version. I also tried "wp cli update" but it reports back "Error: You can only self-update PHARs."

I installed wp-cli back in April on my Windows box using composer. I believe with the following command: composer create-project wp-cli/wp-cli --no-dev as outlined in the alternate install methods on here.

I have since used "composer update --no-dev" to update but just realized that it is only updating the dependencies and not the wp-cli package itself. If I run a "wp cli version" it reports version WP-CLI 0.18.0, yet v0.20.4 is the latest released version.

I can't seem to find any way to update wp-cli. I suppose I could just install a new copy each time but that seems silly. Regardless, I did test and if I issue a "composer create-project wp-cli/wp-cli --no-dev" in a new directory it downloads the latest version. I also tried "wp cli update" but it reports back "Error: You can only self-update PHARs."

Share Improve this question edited Aug 14, 2016 at 3:55 RRikesh 5,6554 gold badges31 silver badges45 bronze badges asked Dec 10, 2015 at 14:04 syntax53syntax53 11 bronze badge
Add a comment  | 

2 Answers 2

Reset to default 0

You need to remove composer.lock before running composer update. composer.lock locks your Composer project to a specific hash.

Apparently this isn't possible using only composer. Seems kind of silly for it to be a recommended way to install WP-CLI with no direct way to update it later. I ended up installing GIT and then doing a fresh install (e.g. git clone https://github/wp-cli/wp-cli.git d:\wp-cli) of wp-cli. Afterwards, issued a composer update --no-dev to install dependencies. Now in the future to update wp-cli I run git pull origin from d:\wp-cli followed by composer update --no-dev.

Let me know if this is wrong! :)

Edit--

So I realized that the above command was updating to the latest commit in the master branch. I couldn't find any automated way to always update to the latest branch so I wrote the following batch file. It queries all the tags from the wp-cli repo, iterates through them to find the latest one (because they are sorted alpha), then either clones or resets (if local repo already exists) to that tag. Then updates the dependencies via composer.

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
SET WPCLI_INSTALL_DRIVE=D:
SET WPCLI_INSTALL_DIR=WP-CLI
SET LATEST_WPCLI_MAJOR=-1
SET LATEST_WPCLI_MINOR=0
SET LATEST_WPCLI_REV=0
echo.
echo COMMIT_ID - TAG_NAME ^=^> VERSION_DETECTION [*] (* ^= Marked as latest)
for /f "tokens=1*" %%A in ('git ls-remote --tags https://github/wp-cli/wp-cli.git') do (
    SET "TAG_LINE=%%A"
    IF NOT "%%B"=="" (
        SET "TAG_LINE=!TAG_LINE! - %%B"
        for /f "tokens=2 delims=v" %%C in ("%%B") do (
            echo "%%C"|find /i ".">nul
            IF NOT ERRORLEVEL 1 (
                for /f "tokens=1-3 delims=." %%D in ("%%C") do (
                    SET "TAG_LINE=!TAG_LINE! ^=^> v%%D.%%E.%%F"
                    SET LATEST_WPCLI_FOUND=0

                    IF /I %%D GTR !LATEST_WPCLI_MAJOR! (
                        SET LATEST_WPCLI_FOUND=1
                    ) ELSE (
                        IF /I %%D GEQ !LATEST_WPCLI_MAJOR! (
                            IF /I %%E GTR !LATEST_WPCLI_MINOR! (
                                SET LATEST_WPCLI_FOUND=1
                            ) ELSE (
                                IF /I %%E GEQ !LATEST_WPCLI_MINOR! (
                                    IF /I %%F GTR !LATEST_WPCLI_REV! (
                                        SET LATEST_WPCLI_FOUND=1
                                    )
                                )
                            )
                        )
                    )

                    IF "!LATEST_WPCLI_FOUND!"=="1" (
                        SET "TAG_LINE=!TAG_LINE! *"
                        SET LATEST_WPCLI_MAJOR=%%D
                        SET LATEST_WPCLI_MINOR=%%E
                        SET LATEST_WPCLI_REV=%%F
                    )
                )
            )
        )
    )
    echo !TAG_LINE!
)

echo.
echo.

IF NOT "%LATEST_WPCLI_MAJOR%"=="-1" (
    echo Latest detected tag: v%LATEST_WPCLI_MAJOR%.%LATEST_WPCLI_MINOR%.%LATEST_WPCLI_REV%
    echo.
    IF EXIST "%WPCLI_INSTALL_DRIVE%\%WPCLI_INSTALL_DIR%\bin\wp.bat" (
        echo Current WP-CLI Version:
        call "%WPCLI_INSTALL_DRIVE%\%WPCLI_INSTALL_DIR%\bin\wp.bat" cli version
    ) ELSE (
        echo Current "%WPCLI_INSTALL_DRIVE%\%WPCLI_INSTALL_DIR%\bin\wp.bat" not found to display current version.
    )
    echo.
    choice /m "Continue installing/updating?"
    IF ERRORLEVEL 2 exit /b 0

    IF EXIST "%WPCLI_INSTALL_DRIVE%\%WPCLI_INSTALL_DIR%\.gitignore" (
        CHDIR /D "%WPCLI_INSTALL_DRIVE%\%WPCLI_INSTALL_DIR%"
        git reset --hard "v%LATEST_WPCLI_MAJOR%.%LATEST_WPCLI_MINOR%.%LATEST_WPCLI_REV%"
    ) ELSE (
        git clone --branch "v%LATEST_WPCLI_MAJOR%.%LATEST_WPCLI_MINOR%.%LATEST_WPCLI_REV%" https://github/wp-cli/wp-cli.git %WPCLI_INSTALL_DRIVE%\%WPCLI_INSTALL_DIR%
        CHDIR /D "%WPCLI_INSTALL_DRIVE%\%WPCLI_INSTALL_DIR%"
    )
    IF EXIST "composer.json" call composer update --no-dev
) ELSE (
    echo Latest version not found.
)
pause

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745250440a4618647.html

相关推荐

  • installation - How to update WP-CLI on Windows via Composer?

    I installed wp-cli back in April on my Windows box using composer.I believe with the following command: composer creat

    3小时前
    20

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信