1
0
mirror of https://github.com/rclone/rclone.git synced 2026-01-04 01:23:24 +00:00

Compare commits

..

16 Commits

Author SHA1 Message Date
Nick Craig-Wood
98d494411f s3: Attempt to fix auth problems #5468
Revert "s3: remove WebIdentityRoleProvider to fix crash on auth #5255"

This reverts commit e618ea83dd.
2021-08-11 11:47:24 +01:00
partev
bb6b44d199 DOC: "OS X" -> "macOS" 2021-08-10 10:12:30 +03:00
vinibali
88b35bc32d Update yandex.md
add mail subscription exception
2021-08-09 23:28:41 +03:00
Nathan Collins
c32d5dd1f3 fs: move with --ignore-existing will not delete skipped files - #5463 2021-08-01 17:46:45 +01:00
Greg Sadetsky
3d9da896d2 drive: fix instructions for auto config #5499 2021-08-01 15:17:07 +01:00
hota
839c20bb35 s3: add Wasabi's AP-Northeast endpoint info
* Wasabi starts to provide AP Northeast (Tokyo) endpoint for all customers, so add it to the list

Signed-off-by: lindwurm <lindwurm.q@gmail.com>
2021-08-01 14:56:52 +01:00
Nick Craig-Wood
7c58148840 Start v1.57.0-DEV development 2021-08-01 13:43:36 +01:00
Nick Craig-Wood
6545755758 sftp: remove spurious error message on --sftp-disable-concurrent-reads 2021-07-31 11:04:45 +01:00
Nick Craig-Wood
c86a55c798 vfs: fix duplicates on rename - fixes #5469
Before this change, if there was an existing file being uploaded when
a file was renamed on top of it, then both would be uploaded. This
causes a duplicate in Google Drive as both files get uploaded at the
same time. This was triggered reliably by LibreOffice saving doc
files.

This fix removes any duplicates in the upload queue on rename.
2021-07-30 19:31:02 +01:00
Nick Craig-Wood
1d280081d4 Add Mariano Absatz (git) to contributors 2021-07-30 19:31:02 +01:00
Nick Craig-Wood
f48cb5985f Add Justin Winokur (Jwink3101) to contributors 2021-07-30 19:31:02 +01:00
Ivan Andreev
55e766f4e8 mountlib: restore daemon mode after #5415 2021-07-29 13:35:04 +03:00
Alex Chen
63a24255f8 onedrive: handle HTTP 400 better in PublicLink() (#5419) 2021-07-27 17:55:57 +08:00
Cnly
bc74f0621e http: fix serve http exits directly after starting 2021-07-25 14:06:43 +01:00
Mariano Absatz (git)
f39a08c9d7 clarification of the process for creating custom client_id 2021-07-24 09:19:48 +03:00
Justin Winokur (Jwink3101)
675548070d fs/operations: add rmdirs -v output - fixes #5464 2021-07-24 09:16:23 +03:00
210 changed files with 255 additions and 830 deletions

View File

@@ -241,14 +241,14 @@ jobs:
fetch-depth: 0
# Upgrade together with NDK version
- name: Set up Go 1.16
- name: Set up Go 1.14
uses: actions/setup-go@v1
with:
go-version: 1.16
go-version: 1.14
# Upgrade together with Go version. Using a GitHub-provided version saves around 2 minutes.
- name: Force NDK version
run: echo "y" | sudo ${ANDROID_HOME}/tools/bin/sdkmanager --install "ndk;22.1.7171670" | grep -v = || true
run: echo "y" | sudo ${ANDROID_HOME}/tools/bin/sdkmanager --install "ndk;21.4.7075529" | grep -v = || true
- name: Go module cache
uses: actions/cache@v2
@@ -279,7 +279,7 @@ jobs:
- name: arm-v7a Set environment variables
shell: bash
run: |
echo "CC=$(echo $ANDROID_HOME/ndk/22.1.7171670/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi16-clang)" >> $GITHUB_ENV
echo "CC=$(echo $ANDROID_HOME/ndk/21.4.7075529/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi16-clang)" >> $GITHUB_ENV
echo "CC_FOR_TARGET=$CC" >> $GITHUB_ENV
echo 'GOOS=android' >> $GITHUB_ENV
echo 'GOARCH=arm' >> $GITHUB_ENV
@@ -292,7 +292,7 @@ jobs:
- name: arm64-v8a Set environment variables
shell: bash
run: |
echo "CC=$(echo $ANDROID_HOME/ndk/22.1.7171670/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang)" >> $GITHUB_ENV
echo "CC=$(echo $ANDROID_HOME/ndk/21.4.7075529/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang)" >> $GITHUB_ENV
echo "CC_FOR_TARGET=$CC" >> $GITHUB_ENV
echo 'GOOS=android' >> $GITHUB_ENV
echo 'GOARCH=arm64' >> $GITHUB_ENV
@@ -305,7 +305,7 @@ jobs:
- name: x86 Set environment variables
shell: bash
run: |
echo "CC=$(echo $ANDROID_HOME/ndk/22.1.7171670/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android16-clang)" >> $GITHUB_ENV
echo "CC=$(echo $ANDROID_HOME/ndk/21.4.7075529/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android16-clang)" >> $GITHUB_ENV
echo "CC_FOR_TARGET=$CC" >> $GITHUB_ENV
echo 'GOOS=android' >> $GITHUB_ENV
echo 'GOARCH=386' >> $GITHUB_ENV
@@ -318,7 +318,7 @@ jobs:
- name: x64 Set environment variables
shell: bash
run: |
echo "CC=$(echo $ANDROID_HOME/ndk/22.1.7171670/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android21-clang)" >> $GITHUB_ENV
echo "CC=$(echo $ANDROID_HOME/ndk/21.4.7075529/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android21-clang)" >> $GITHUB_ENV
echo "CC_FOR_TARGET=$CC" >> $GITHUB_ENV
echo 'GOOS=android' >> $GITHUB_ENV
echo 'GOARCH=amd64' >> $GITHUB_ENV

89
MANUAL.html generated
View File

@@ -17,7 +17,7 @@
<header id="title-block-header">
<h1 class="title">rclone(1) User Manual</h1>
<p class="author">Nick Craig-Wood</p>
<p class="date">Oct 01, 2021</p>
<p class="date">Jul 20, 2021</p>
</header>
<h1 id="rclone-syncs-your-files-to-cloud-storage">Rclone syncs your files to cloud storage</h1>
<p><img width="50%" src="https://rclone.org/img/logo_on_light__horizontal_color.svg" alt="rclone logo" style="float:right; padding: 5px;" ></p>
@@ -7243,7 +7243,7 @@ Showing nodes accounting for 1537.03kB, 100% of 1537.03kB total
--use-json-log Use json log format.
--use-mmap Use mmap allocator (see docs).
--use-server-modtime Use server modified time instead of object metadata
--user-agent string Set the user-agent to a specified string. The default is rclone/ version (default &quot;rclone/v1.56.2&quot;)
--user-agent string Set the user-agent to a specified string. The default is rclone/ version (default &quot;rclone/v1.56.0&quot;)
-v, --verbose count Print lots more stuff (repeat for more)</code></pre>
<h2 id="backend-flags">Backend Flags</h2>
<p>These flags are available for every command. They control the backends and may be set in the config file.</p>
@@ -8500,7 +8500,7 @@ e) Edit this remote
d) Delete this remote
y/e/d&gt; </code></pre>
<h3 id="modified-time">Modified time</h3>
<p>The modified time is stored as metadata on the object as <code>X-Amz-Meta-Mtime</code> as floating point since the epoch, accurate to 1 ns.</p>
<p>The modified time is stored as metadata on the object as <code>X-Amz-Meta-Mtime</code> as floating point since the epoch accurate to 1 ns.</p>
<p>If the modification time needs to be updated rclone will attempt to perform a server side copy to update the modification if the object can be copied in a single part. In the case the object is larger than 5Gb or is in Glacier or Glacier Deep Archive storage the object will be uploaded rather than copied.</p>
<p>Note that reading this from the object takes an additional <code>HEAD</code> request as the metadata isn't returned in object listings.</p>
<h3 id="reducing-costs">Reducing costs</h3>
@@ -9520,10 +9520,6 @@ y/e/d&gt; </code></pre>
<ul>
<li>Wasabi EU Central endpoint</li>
</ul></li>
<li>"s3.ap-northeast-1.wasabisys.com"
<ul>
<li>Wasabi AP Northeast endpoint</li>
</ul></li>
</ul></li>
</ul>
<h4 id="s3-location-constraint">--s3-location-constraint</h4>
@@ -14413,7 +14409,7 @@ client_secret&gt; # Can be left blank
scope&gt; # Select your scope, 1 for example
root_folder_id&gt; # Can be left blank
service_account_file&gt; /home/foo/myJSONfile.json # This is where the JSON file goes!
y/n&gt; # Auto config, n
y/n&gt; # Auto config, y
</code></pre>
<h5 id="verify-that-its-working">4. Verify that it's working</h5>
<ul>
@@ -14426,7 +14422,7 @@ y/n&gt; # Auto config, n
<li><code>gdrive:backup</code> - use the remote called gdrive, work in the folder named backup.</li>
</ul></li>
</ul>
<p>Note: in case you configured a specific root folder on gdrive and rclone is unable to access the contents of that folder when using <code>--drive-impersonate</code>, do this instead: - in the gdrive web interface, share your root folder with the user/email of the new Service Account you created/selected at step #1 - use rclone without specifying the <code>--drive-impersonate</code> option, like this: <code>rclone -v lsf gdrive:backup</code></p>
<p>Note: in case you configured a specific root folder on gdrive and rclone is unable to access the contents of that folder when using <code>--drive-impersonate</code>, do this instead: - in the gdrive web interface, share your root folder with the user/email of the new Service Account you created/selected at step #1 - use rclone without specifying the <code>--drive-impersonate</code> option, like this: <code>rclone -v foo@example.com lsf gdrive:backup</code></p>
<h3 id="shared-drives-team-drives">Shared drives (team drives)</h3>
<p>If you want to configure the remote to point to a Google Shared Drive (previously known as Team Drives) then answer <code>y</code> to the question <code>Configure this as a Shared Drive (Team Drive)?</code>.</p>
<p>This will fetch the list of Shared Drives from google and allow you to configure which one you want to use. You can also type in a Shared Drive ID if you prefer.</p>
@@ -17191,7 +17187,7 @@ y/e/d&gt; y</code></pre>
<ol type="1">
<li>Open https://portal.azure.com/#blade/Microsoft_AAD_RegisteredApps/ApplicationsListBlade and then click <code>New registration</code>.</li>
<li>Enter a name for your app, choose account type <code>Accounts in any organizational directory (Any Azure AD directory - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox)</code>, select <code>Web</code> in <code>Redirect URI</code>, then type (do not copy and paste) <code>http://localhost:53682/</code> and click Register. Copy and keep the <code>Application (client) ID</code> under the app name for later use.</li>
<li>Under <code>manage</code> select <code>Certificates &amp; secrets</code>, click <code>New client secret</code>. Enter a description (can be anything) and set <code>Expires</code> to 24 months. Copy and keep that secret <em>Value</em> for later use (you <em>won't</em> be able to see this value afterwards).</li>
<li>Under <code>manage</code> select <code>Certificates &amp; secrets</code>, click <code>New client secret</code>. Copy and keep that secret for later use.</li>
<li>Under <code>manage</code> select <code>API permissions</code>, click <code>Add a permission</code> and select <code>Microsoft Graph</code> then select <code>delegated permissions</code>.</li>
<li>Search and select the following permissions: <code>Files.Read</code>, <code>Files.ReadWrite</code>, <code>Files.Read.All</code>, <code>Files.ReadWrite.All</code>, <code>offline_access</code>, <code>User.Read</code>. Once selected click <code>Add permissions</code> at the bottom.</li>
</ol>
@@ -17561,8 +17557,6 @@ Description: Using application &#39;rclone&#39; is currently not supported for y
Code: AADSTS50076
Description: Due to a configuration change made by your administrator, or because you moved to a new location, you must use multi-factor authentication to access &#39;...&#39;.</code></pre>
<p>If you see the error above after enabling multi-factor authentication for your account, you can fix it by refreshing your OAuth refresh token. To do that, run <code>rclone config</code>, and choose to edit your OneDrive backend. Then, you don't need to actually make any changes until you reach this question: <code>Already have a token - refresh?</code>. For this question, answer <code>y</code> and go through the process to refresh your token, just like the first time the backend is configured. After this, rclone should work again for this backend.</p>
<h4 id="invalid-request-when-making-public-links">Invalid request when making public links</h4>
<p>On Sharepoint and OneDrive for Business, <code>rclone link</code> may return an "Invalid request" error. A possible cause is that the organisation admin didn't allow public links to be made for the organisation/sharepoint library. To fix the permissions as an admin, take a look at the docs: <a href="https://docs.microsoft.com/en-us/sharepoint/turn-external-sharing-on-or-off">1</a>, <a href="https://support.microsoft.com/en-us/office/set-up-and-manage-access-requests-94b26e0b-2822-49d4-929a-8455698654b3">2</a>.</p>
<h1 id="opendrive">OpenDrive</h1>
<p>Paths are specified as <code>remote:path</code></p>
<p>Paths may be as deep as required, e.g. <code>remote:directory/subdirectory</code>.</p>
@@ -21314,77 +21308,6 @@ $ tree /tmp/b
<li>"error": return an error based on option value</li>
</ul>
<h1 id="changelog">Changelog</h1>
<h2 id="v1.56.2---2021-10-01">v1.56.2 - 2021-10-01</h2>
<p><a href="https://github.com/rclone/rclone/compare/v1.56.1...v1.56.2">See commits</a></p>
<ul>
<li>Bug Fixes
<ul>
<li>serve http: Re-add missing auth to http service (Nolan Woods)</li>
<li>build: Update golang.org/x/sys to fix crash on macOS when compiled with go1.17 (Herby Gillot)</li>
</ul></li>
<li>FTP
<ul>
<li>Fix deadlock after failed update when concurrency=1 (Ivan Andreev)</li>
</ul></li>
</ul>
<h2 id="v1.56.1---2021-09-19">v1.56.1 - 2021-09-19</h2>
<p><a href="https://github.com/rclone/rclone/compare/v1.56.0...v1.56.1">See commits</a></p>
<ul>
<li>Bug Fixes
<ul>
<li>accounting: Fix maximum bwlimit by scaling scale max token bucket size (Nick Craig-Wood)</li>
<li>rc: Fix speed does not update in core/stats (negative0)</li>
<li>selfupdate: Fix --quiet option, not quite quiet (yedamo)</li>
<li>serve http: Fix <code>serve http</code> exiting directly after starting (Cnly)</li>
<li>build
<ul>
<li>Apply gofmt from golang 1.17 (Ivan Andreev)</li>
<li>Update Go to 1.16 and NDK to 22b for android/any (x0b)</li>
</ul></li>
</ul></li>
<li>Mount
<ul>
<li>Fix <code>--daemon</code> mode (Ivan Andreev)</li>
</ul></li>
<li>VFS
<ul>
<li>Fix duplicates on rename (Nick Craig-Wood)</li>
<li>Fix crash when truncating a just uploaded object (Nick Craig-Wood)</li>
<li>Fix issue where empty dirs would build up in cache meta dir (albertony)</li>
</ul></li>
<li>Drive
<ul>
<li>Fix instructions for auto config (Greg Sadetsky)</li>
<li>Fix lsf example without drive-impersonate (Greg Sadetsky)</li>
</ul></li>
<li>Onedrive
<ul>
<li>Handle HTTP 400 better in PublicLink (Alex Chen)</li>
<li>Clarification of the process for creating custom client_id (Mariano Absatz)</li>
</ul></li>
<li>Pcloud
<ul>
<li>Return an early error when Put is called with an unknown size (Nick Craig-Wood)</li>
<li>Try harder to delete a failed upload (Nick Craig-Wood)</li>
</ul></li>
<li>S3
<ul>
<li>Add Wasabi's AP-Northeast endpoint info (hota)</li>
<li>Fix typo in s3 documentation (Greg Sadetsky)</li>
</ul></li>
<li>Seafile
<ul>
<li>Fix 2fa config state machine (Fred)</li>
</ul></li>
<li>SFTP
<ul>
<li>Remove spurious error message on <code>--sftp-disable-concurrent-reads</code> (Nick Craig-Wood)</li>
</ul></li>
<li>Sugarsync
<ul>
<li>Fix initial connection after config re-arrangement (Nick Craig-Wood)</li>
</ul></li>
</ul>
<h2 id="v1.56.0---2021-07-20">v1.56.0 - 2021-07-20</h2>
<p><a href="https://github.com/rclone/rclone/compare/v1.55.0...v1.56.0">See commits</a></p>
<ul>

70
MANUAL.md generated
View File

@@ -1,6 +1,6 @@
% rclone(1) User Manual
% Nick Craig-Wood
% Oct 01, 2021
% Jul 20, 2021
# Rclone syncs your files to cloud storage
@@ -12650,7 +12650,7 @@ These flags are available for every command.
--use-json-log Use json log format.
--use-mmap Use mmap allocator (see docs).
--use-server-modtime Use server modified time instead of object metadata
--user-agent string Set the user-agent to a specified string. The default is rclone/ version (default "rclone/v1.56.2")
--user-agent string Set the user-agent to a specified string. The default is rclone/ version (default "rclone/v1.56.0")
-v, --verbose count Print lots more stuff (repeat for more)
```
@@ -14452,7 +14452,7 @@ y/e/d>
### Modified time ###
The modified time is stored as metadata on the object as
`X-Amz-Meta-Mtime` as floating point since the epoch, accurate to 1 ns.
`X-Amz-Meta-Mtime` as floating point since the epoch accurate to 1 ns.
If the modification time needs to be updated rclone will attempt to perform a server
side copy to update the modification if the object can be copied in a single part.
@@ -15249,8 +15249,6 @@ Required when using an S3 clone.
- Wasabi US West endpoint
- "s3.eu-central-1.wasabisys.com"
- Wasabi EU Central endpoint
- "s3.ap-northeast-1.wasabisys.com"
- Wasabi AP Northeast endpoint
#### --s3-location-constraint
@@ -21791,7 +21789,7 @@ client_secret> # Can be left blank
scope> # Select your scope, 1 for example
root_folder_id> # Can be left blank
service_account_file> /home/foo/myJSONfile.json # This is where the JSON file goes!
y/n> # Auto config, n
y/n> # Auto config, y
```
@@ -21808,7 +21806,7 @@ the folder named backup.
Note: in case you configured a specific root folder on gdrive and rclone is unable to access the contents of that folder when using `--drive-impersonate`, do this instead:
- in the gdrive web interface, share your root folder with the user/email of the new Service Account you created/selected at step #1
- use rclone without specifying the `--drive-impersonate` option, like this:
`rclone -v lsf gdrive:backup`
`rclone -v foo@example.com lsf gdrive:backup`
### Shared drives (team drives) ###
@@ -25527,7 +25525,7 @@ Client ID and Key by following the steps below:
1. Open https://portal.azure.com/#blade/Microsoft_AAD_RegisteredApps/ApplicationsListBlade and then click `New registration`.
2. Enter a name for your app, choose account type `Accounts in any organizational directory (Any Azure AD directory - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox)`, select `Web` in `Redirect URI`, then type (do not copy and paste) `http://localhost:53682/` and click Register. Copy and keep the `Application (client) ID` under the app name for later use.
3. Under `manage` select `Certificates & secrets`, click `New client secret`. Enter a description (can be anything) and set `Expires` to 24 months. Copy and keep that secret _Value_ for later use (you _won't_ be able to see this value afterwards).
3. Under `manage` select `Certificates & secrets`, click `New client secret`. Copy and keep that secret for later use.
4. Under `manage` select `API permissions`, click `Add a permission` and select `Microsoft Graph` then select `delegated permissions`.
5. Search and select the following permissions: `Files.Read`, `Files.ReadWrite`, `Files.Read.All`, `Files.ReadWrite.All`, `offline_access`, `User.Read`. Once selected click `Add permissions` at the bottom.
@@ -25982,15 +25980,6 @@ Description: Due to a configuration change made by your administrator, or becaus
If you see the error above after enabling multi-factor authentication for your account, you can fix it by refreshing your OAuth refresh token. To do that, run `rclone config`, and choose to edit your OneDrive backend. Then, you don't need to actually make any changes until you reach this question: `Already have a token - refresh?`. For this question, answer `y` and go through the process to refresh your token, just like the first time the backend is configured. After this, rclone should work again for this backend.
#### Invalid request when making public links ####
On Sharepoint and OneDrive for Business, `rclone link` may return an "Invalid
request" error. A possible cause is that the organisation admin didn't allow
public links to be made for the organisation/sharepoint library. To fix the
permissions as an admin, take a look at the docs:
[1](https://docs.microsoft.com/en-us/sharepoint/turn-external-sharing-on-or-off),
[2](https://support.microsoft.com/en-us/office/set-up-and-manage-access-requests-94b26e0b-2822-49d4-929a-8455698654b3).
# OpenDrive
Paths are specified as `remote:path`
@@ -30711,53 +30700,6 @@ Options:
# Changelog
## v1.56.2 - 2021-10-01
[See commits](https://github.com/rclone/rclone/compare/v1.56.1...v1.56.2)
* Bug Fixes
* serve http: Re-add missing auth to http service (Nolan Woods)
* build: Update golang.org/x/sys to fix crash on macOS when compiled with go1.17 (Herby Gillot)
* FTP
* Fix deadlock after failed update when concurrency=1 (Ivan Andreev)
## v1.56.1 - 2021-09-19
[See commits](https://github.com/rclone/rclone/compare/v1.56.0...v1.56.1)
* Bug Fixes
* accounting: Fix maximum bwlimit by scaling scale max token bucket size (Nick Craig-Wood)
* rc: Fix speed does not update in core/stats (negative0)
* selfupdate: Fix --quiet option, not quite quiet (yedamo)
* serve http: Fix `serve http` exiting directly after starting (Cnly)
* build
* Apply gofmt from golang 1.17 (Ivan Andreev)
* Update Go to 1.16 and NDK to 22b for android/any (x0b)
* Mount
* Fix `--daemon` mode (Ivan Andreev)
* VFS
* Fix duplicates on rename (Nick Craig-Wood)
* Fix crash when truncating a just uploaded object (Nick Craig-Wood)
* Fix issue where empty dirs would build up in cache meta dir (albertony)
* Drive
* Fix instructions for auto config (Greg Sadetsky)
* Fix lsf example without drive-impersonate (Greg Sadetsky)
* Onedrive
* Handle HTTP 400 better in PublicLink (Alex Chen)
* Clarification of the process for creating custom client_id (Mariano Absatz)
* Pcloud
* Return an early error when Put is called with an unknown size (Nick Craig-Wood)
* Try harder to delete a failed upload (Nick Craig-Wood)
* S3
* Add Wasabi's AP-Northeast endpoint info (hota)
* Fix typo in s3 documentation (Greg Sadetsky)
* Seafile
* Fix 2fa config state machine (Fred)
* SFTP
* Remove spurious error message on `--sftp-disable-concurrent-reads` (Nick Craig-Wood)
* Sugarsync
* Fix initial connection after config re-arrangement (Nick Craig-Wood)
## v1.56.0 - 2021-07-20
[See commits](https://github.com/rclone/rclone/compare/v1.55.0...v1.56.0)

84
MANUAL.txt generated
View File

@@ -1,6 +1,6 @@
rclone(1) User Manual
Nick Craig-Wood
Oct 01, 2021
Jul 20, 2021
@@ -12805,7 +12805,7 @@ These flags are available for every command.
--use-json-log Use json log format.
--use-mmap Use mmap allocator (see docs).
--use-server-modtime Use server modified time instead of object metadata
--user-agent string Set the user-agent to a specified string. The default is rclone/ version (default "rclone/v1.56.2")
--user-agent string Set the user-agent to a specified string. The default is rclone/ version (default "rclone/v1.56.0")
-v, --verbose count Print lots more stuff (repeat for more)
@@ -14561,7 +14561,7 @@ This will guide you through an interactive setup process.
Modified time
The modified time is stored as metadata on the object as
X-Amz-Meta-Mtime as floating point since the epoch, accurate to 1 ns.
X-Amz-Meta-Mtime as floating point since the epoch accurate to 1 ns.
If the modification time needs to be updated rclone will attempt to
perform a server side copy to update the modification if the object can
@@ -15362,8 +15362,6 @@ Endpoint for S3 API. Required when using an S3 clone.
- Wasabi US West endpoint
- "s3.eu-central-1.wasabisys.com"
- Wasabi EU Central endpoint
- "s3.ap-northeast-1.wasabisys.com"
- Wasabi AP Northeast endpoint
--s3-location-constraint
@@ -21844,7 +21842,7 @@ There's a few steps we need to go through to accomplish this:
scope> # Select your scope, 1 for example
root_folder_id> # Can be left blank
service_account_file> /home/foo/myJSONfile.json # This is where the JSON file goes!
y/n> # Auto config, n
y/n> # Auto config, y
4. Verify that it's working
@@ -21862,7 +21860,8 @@ is unable to access the contents of that folder when using
--drive-impersonate, do this instead: - in the gdrive web interface,
share your root folder with the user/email of the new Service Account
you created/selected at step #1 - use rclone without specifying the
--drive-impersonate option, like this: rclone -v lsf gdrive:backup
--drive-impersonate option, like this:
rclone -v foo@example.com lsf gdrive:backup
Shared drives (team drives)
@@ -25624,9 +25623,7 @@ you can get your own Client ID and Key by following the steps below:
http://localhost:53682/ and click Register. Copy and keep the
Application (client) ID under the app name for later use.
3. Under manage select Certificates & secrets, click New client secret.
Enter a description (can be anything) and set Expires to 24 months.
Copy and keep that secret _Value_ for later use (you _won't_ be able
to see this value afterwards).
Copy and keep that secret for later use.
4. Under manage select API permissions, click Add a permission and
select Microsoft Graph then select delegated permissions.
5. Search and select the following permissions: Files.Read,
@@ -26102,14 +26099,6 @@ and go through the process to refresh your token, just like the first
time the backend is configured. After this, rclone should work again for
this backend.
Invalid request when making public links
On Sharepoint and OneDrive for Business, rclone link may return an
"Invalid request" error. A possible cause is that the organisation admin
didn't allow public links to be made for the organisation/sharepoint
library. To fix the permissions as an admin, take a look at the docs: 1,
2.
OPENDRIVE
@@ -30855,65 +30844,6 @@ Options:
CHANGELOG
v1.56.2 - 2021-10-01
See commits
- Bug Fixes
- serve http: Re-add missing auth to http service (Nolan Woods)
- build: Update golang.org/x/sys to fix crash on macOS when
compiled with go1.17 (Herby Gillot)
- FTP
- Fix deadlock after failed update when concurrency=1 (Ivan
Andreev)
v1.56.1 - 2021-09-19
See commits
- Bug Fixes
- accounting: Fix maximum bwlimit by scaling scale max token
bucket size (Nick Craig-Wood)
- rc: Fix speed does not update in core/stats (negative0)
- selfupdate: Fix --quiet option, not quite quiet (yedamo)
- serve http: Fix serve http exiting directly after starting
(Cnly)
- build
- Apply gofmt from golang 1.17 (Ivan Andreev)
- Update Go to 1.16 and NDK to 22b for android/any (x0b)
- Mount
- Fix --daemon mode (Ivan Andreev)
- VFS
- Fix duplicates on rename (Nick Craig-Wood)
- Fix crash when truncating a just uploaded object (Nick
Craig-Wood)
- Fix issue where empty dirs would build up in cache meta dir
(albertony)
- Drive
- Fix instructions for auto config (Greg Sadetsky)
- Fix lsf example without drive-impersonate (Greg Sadetsky)
- Onedrive
- Handle HTTP 400 better in PublicLink (Alex Chen)
- Clarification of the process for creating custom client_id
(Mariano Absatz)
- Pcloud
- Return an early error when Put is called with an unknown size
(Nick Craig-Wood)
- Try harder to delete a failed upload (Nick Craig-Wood)
- S3
- Add Wasabi's AP-Northeast endpoint info (hota)
- Fix typo in s3 documentation (Greg Sadetsky)
- Seafile
- Fix 2fa config state machine (Fred)
- SFTP
- Remove spurious error message on --sftp-disable-concurrent-reads
(Nick Craig-Wood)
- Sugarsync
- Fix initial connection after config re-arrangement (Nick
Craig-Wood)
v1.56.0 - 2021-07-20
See commits

View File

@@ -1 +1 @@
v1.56.2
v1.57.0

View File

@@ -1,6 +1,5 @@
// Test AmazonCloudDrive filesystem interface
//go:build acd
// +build acd
package amazonclouddrive_test

View File

@@ -1,6 +1,5 @@
// Package azureblob provides an interface to the Microsoft Azure blob object storage system
//go:build !plan9 && !solaris && !js && go1.14
// +build !plan9,!solaris,!js,go1.14
package azureblob

View File

@@ -1,4 +1,3 @@
//go:build !plan9 && !solaris && !js && go1.14
// +build !plan9,!solaris,!js,go1.14
package azureblob

View File

@@ -1,6 +1,5 @@
// Test AzureBlob filesystem interface
//go:build !plan9 && !solaris && !js && go1.14
// +build !plan9,!solaris,!js,go1.14
package azureblob

View File

@@ -1,7 +1,6 @@
// Build for azureblob for unsupported platforms to stop go complaining
// about "no buildable Go source files "
//go:build plan9 || solaris || js || !go1.14
// +build plan9 solaris js !go1.14
package azureblob

View File

@@ -1,4 +1,3 @@
//go:build !plan9 && !solaris && !js && go1.14
// +build !plan9,!solaris,!js,go1.14
package azureblob

View File

@@ -1,4 +1,3 @@
//go:build !plan9 && !solaris && !js && go1.14
// +build !plan9,!solaris,!js,go1.14
package azureblob

View File

@@ -1,4 +1,3 @@
//go:build !plan9 && !js
// +build !plan9,!js
package cache

View File

@@ -1,5 +1,5 @@
//go:build !plan9 && !js && !race
// +build !plan9,!js,!race
// +build !plan9,!js
// +build !race
package cache_test

View File

@@ -1,7 +1,7 @@
// Test Cache filesystem interface
//go:build !plan9 && !js && !race
// +build !plan9,!js,!race
// +build !plan9,!js
// +build !race
package cache_test

View File

@@ -1,7 +1,6 @@
// Build for cache for unsupported platforms to stop go complaining
// about "no buildable Go source files "
//go:build plan9 || js
// +build plan9 js
package cache

View File

@@ -1,5 +1,5 @@
//go:build !plan9 && !js && !race
// +build !plan9,!js,!race
// +build !plan9,!js
// +build !race
package cache_test

View File

@@ -1,4 +1,3 @@
//go:build !plan9 && !js
// +build !plan9,!js
package cache

View File

@@ -1,4 +1,3 @@
//go:build !plan9 && !js
// +build !plan9,!js
package cache

View File

@@ -1,4 +1,3 @@
//go:build !plan9 && !js
// +build !plan9,!js
package cache

View File

@@ -1,4 +1,3 @@
//go:build !plan9 && !js
// +build !plan9,!js
package cache

View File

@@ -1,4 +1,3 @@
//go:build !plan9 && !js
// +build !plan9,!js
package cache

View File

@@ -1,4 +1,3 @@
//go:build !plan9 && !js
// +build !plan9,!js
package cache

View File

@@ -1062,9 +1062,8 @@ func (o *Object) Update(ctx context.Context, in io.Reader, src fs.ObjectInfo, op
}
if err != nil {
_ = c.Quit() // toss this connection to avoid sync errors
// recycle connection in advance to let remove() find free token
o.fs.putFtpConnection(nil, err)
remove()
o.fs.putFtpConnection(nil, err)
return errors.Wrap(err, "update stor")
}
o.fs.putFtpConnection(&c, nil)

View File

@@ -1,4 +1,3 @@
//go:build !plan9
// +build !plan9
package hdfs

View File

@@ -1,4 +1,3 @@
//go:build !plan9
// +build !plan9
package hdfs

View File

@@ -1,6 +1,5 @@
// Test HDFS filesystem interface
//go:build !plan9
// +build !plan9
package hdfs_test

View File

@@ -1,7 +1,6 @@
// Build for hdfs for unsupported platforms to stop go complaining
// about "no buildable Go source files "
//go:build plan9
// +build plan9
package hdfs

View File

@@ -1,4 +1,3 @@
//go:build !plan9
// +build !plan9
package hdfs

View File

@@ -1,4 +1,3 @@
//go:build darwin || dragonfly || freebsd || linux
// +build darwin dragonfly freebsd linux
package local

View File

@@ -1,4 +1,3 @@
//go:build windows
// +build windows
package local

View File

@@ -1,5 +1,4 @@
//go:build darwin
// +build darwin
//+build darwin
package local

View File

@@ -1,5 +1,4 @@
//go:build !windows && !darwin
// +build !windows,!darwin
//+build !windows,!darwin
package local

View File

@@ -1,5 +1,4 @@
//go:build windows
// +build windows
//+build windows
package local

View File

@@ -1,5 +1,4 @@
//go:build !linux
// +build !linux
//+build !linux
package local

View File

@@ -1,5 +1,4 @@
//go:build linux
// +build linux
//+build linux
package local

View File

@@ -1,4 +1,3 @@
//go:build windows || plan9 || js
// +build windows plan9 js
package local

View File

@@ -1,4 +1,3 @@
//go:build !windows && !plan9 && !js
// +build !windows,!plan9,!js
package local

View File

@@ -1,6 +1,5 @@
// Device reading functions
//go:build !darwin && !dragonfly && !freebsd && !linux && !netbsd && !openbsd && !solaris
// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris
package local

View File

@@ -1,6 +1,5 @@
// Device reading functions
//go:build darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris
// +build darwin dragonfly freebsd linux netbsd openbsd solaris
package local

View File

@@ -1,5 +1,4 @@
//go:build !windows
// +build !windows
//+build !windows
package local

View File

@@ -1,5 +1,4 @@
//go:build windows
// +build windows
//+build windows
package local

View File

@@ -1,4 +1,3 @@
//go:build !windows && !plan9 && !js
// +build !windows,!plan9,!js
package local

View File

@@ -1,4 +1,3 @@
//go:build windows || plan9 || js
// +build windows plan9 js
package local

View File

@@ -1092,10 +1092,6 @@ func (o *Object) Update(ctx context.Context, in io.Reader, src fs.ObjectInfo, op
modTime := src.ModTime(ctx)
remote := o.Remote()
if size < 0 {
return errors.New("can't upload unknown sizes objects")
}
// Create the directory for the object if it doesn't exist
leaf, directoryID, err := o.fs.dirCache.FindPath(ctx, remote, true)
if err != nil {
@@ -1158,14 +1154,10 @@ func (o *Object) Update(ctx context.Context, in io.Reader, src fs.ObjectInfo, op
})
if err != nil {
// sometimes pcloud leaves a half complete file on
// error, so delete it if it exists, trying a few times
for i := 0; i < 5; i++ {
delObj, delErr := o.fs.NewObject(ctx, o.remote)
if delErr == nil && delObj != nil {
_ = delObj.Remove(ctx)
break
}
time.Sleep(time.Second)
// error, so delete it if it exists
delObj, delErr := o.fs.NewObject(ctx, o.remote)
if delErr == nil && delObj != nil {
_ = delObj.Remove(ctx)
}
return err
}

View File

@@ -1,7 +1,6 @@
// Package qingstor provides an interface to QingStor object storage
// Home: https://www.qingcloud.com/
//go:build !plan9 && !js
// +build !plan9,!js
package qingstor

View File

@@ -1,6 +1,5 @@
// Test QingStor filesystem interface
//go:build !plan9 && !js
// +build !plan9,!js
package qingstor

View File

@@ -1,7 +1,6 @@
// Build for unsupported platforms to stop go complaining
// about "no buildable Go source files "
//go:build plan9 || js
// +build plan9 js
package qingstor

View File

@@ -1,6 +1,5 @@
// Upload object to QingStor
//go:build !plan9 && !js
// +build !plan9,!js
package qingstor

View File

@@ -26,6 +26,7 @@ import (
"github.com/aws/aws-sdk-go/aws/corehandlers"
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds"
"github.com/aws/aws-sdk-go/aws/credentials/stscreds"
"github.com/aws/aws-sdk-go/aws/defaults"
"github.com/aws/aws-sdk-go/aws/ec2metadata"
"github.com/aws/aws-sdk-go/aws/endpoints"
@@ -1545,6 +1546,11 @@ func s3Connection(ctx context.Context, opt *Options, client *http.Client) (*s3.S
}),
ExpiryWindow: 3 * time.Minute,
},
// Pick up IAM role if we are in EKS
&stscreds.WebIdentityRoleProvider{
ExpiryWindow: 3 * time.Minute,
},
}
cred := credentials.NewChainCredentials(providers)

View File

@@ -325,20 +325,17 @@ func Config(ctx context.Context, name string, m configmap.Mapper, config fs.Conf
switch config.State {
case "":
// Empty state means it's the first call to the Config function
// Just make sure we do have a password
if password == "" {
return fs.ConfigPassword("password", "config_password", "Two-factor authentication: please enter your password (it won't be saved in the configuration)")
return fs.ConfigPassword("", "config_password", "Two-factor authentication: please enter your password (it won't be saved in the configuration)")
}
// password was successfully loaded from the config
return fs.ConfigGoto("2fa")
return fs.ConfigGoto("password")
case "password":
// password should be coming from the previous state (entered by the user)
password = config.Result
if password == "" {
return fs.ConfigError("", "Password can't be blank")
return fs.ConfigError("password", "Password can't be blank")
}
// save it into the configuration file and keep going
m.Set(configPassword, obscure.MustObscure(password))
m.Set(configPassword, obscure.MustObscure(config.Result))
return fs.ConfigGoto("2fa")
case "2fa":
return fs.ConfigInput("2fa_do", "config_2fa", "Two-factor authentication: please enter your 2FA code")

View File

@@ -1,15 +1,10 @@
package seafile
import (
"context"
"path"
"testing"
"github.com/rclone/rclone/fs"
"github.com/rclone/rclone/fs/config/configmap"
"github.com/rclone/rclone/fs/config/obscure"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
type pathData struct {
@@ -24,77 +19,77 @@ type pathData struct {
// from a mix of configuration data and path command line argument
func TestSplitPath(t *testing.T) {
testData := []pathData{
{
pathData{
configLibrary: "",
configRoot: "",
argumentPath: "",
expectedLibrary: "",
expectedPath: "",
},
{
pathData{
configLibrary: "",
configRoot: "",
argumentPath: "Library",
expectedLibrary: "Library",
expectedPath: "",
},
{
pathData{
configLibrary: "",
configRoot: "",
argumentPath: path.Join("Library", "path", "to", "file"),
expectedLibrary: "Library",
expectedPath: path.Join("path", "to", "file"),
},
{
pathData{
configLibrary: "Library",
configRoot: "",
argumentPath: "",
expectedLibrary: "Library",
expectedPath: "",
},
{
pathData{
configLibrary: "Library",
configRoot: "",
argumentPath: "path",
expectedLibrary: "Library",
expectedPath: "path",
},
{
pathData{
configLibrary: "Library",
configRoot: "",
argumentPath: path.Join("path", "to", "file"),
expectedLibrary: "Library",
expectedPath: path.Join("path", "to", "file"),
},
{
pathData{
configLibrary: "Library",
configRoot: "root",
argumentPath: "",
expectedLibrary: "Library",
expectedPath: "root",
},
{
pathData{
configLibrary: "Library",
configRoot: path.Join("root", "path"),
argumentPath: "",
expectedLibrary: "Library",
expectedPath: path.Join("root", "path"),
},
{
pathData{
configLibrary: "Library",
configRoot: "root",
argumentPath: "path",
expectedLibrary: "Library",
expectedPath: path.Join("root", "path"),
},
{
pathData{
configLibrary: "Library",
configRoot: "root",
argumentPath: path.Join("path", "to", "file"),
expectedLibrary: "Library",
expectedPath: path.Join("root", "path", "to", "file"),
},
{
pathData{
configLibrary: "Library",
configRoot: path.Join("root", "path"),
argumentPath: path.Join("subpath", "to", "file"),
@@ -126,98 +121,3 @@ func TestSplitPathIntoSlice(t *testing.T) {
assert.Equal(t, expected, output)
}
}
func Test2FAStateMachine(t *testing.T) {
fixtures := []struct {
name string
mapper configmap.Mapper
input fs.ConfigIn
expectState string
expectErrorMessage string
expectResult string
expectFail bool
}{
{
name: "no url",
mapper: configmap.Simple{},
input: fs.ConfigIn{State: ""},
expectFail: true,
},
{
name: "2fa not set",
mapper: configmap.Simple{"url": "http://localhost/"},
input: fs.ConfigIn{State: ""},
expectFail: true,
},
{
name: "unknown state",
mapper: configmap.Simple{"url": "http://localhost/", "2fa": "true", "user": "username"},
input: fs.ConfigIn{State: "unknown"},
expectFail: true,
},
{
name: "no password in config",
mapper: configmap.Simple{"url": "http://localhost/", "2fa": "true", "user": "username"},
input: fs.ConfigIn{State: ""},
expectState: "password",
},
{
name: "config ready for 2fa token",
mapper: configmap.Simple{"url": "http://localhost/", "2fa": "true", "user": "username", "pass": obscure.MustObscure("password")},
input: fs.ConfigIn{State: ""},
expectState: "2fa",
},
{
name: "password not entered",
mapper: configmap.Simple{"url": "http://localhost/", "2fa": "true", "user": "username"},
input: fs.ConfigIn{State: "password"},
expectState: "",
expectErrorMessage: "Password can't be blank",
},
{
name: "password entered",
mapper: configmap.Simple{"url": "http://localhost/", "2fa": "true", "user": "username"},
input: fs.ConfigIn{State: "password", Result: "password"},
expectState: "2fa",
},
{
name: "ask for a 2fa code",
mapper: configmap.Simple{"url": "http://localhost/", "2fa": "true", "user": "username"},
input: fs.ConfigIn{State: "2fa"},
expectState: "2fa_do",
},
{
name: "no 2fa code entered",
mapper: configmap.Simple{"url": "http://localhost/", "2fa": "true", "user": "username"},
input: fs.ConfigIn{State: "2fa_do"},
expectState: "2fa", // ask for a code again
expectErrorMessage: "2FA codes can't be blank",
},
{
name: "2fa error and retry",
mapper: configmap.Simple{"url": "http://localhost/", "2fa": "true", "user": "username"},
input: fs.ConfigIn{State: "2fa_error", Result: "true"},
expectState: "2fa", // ask for a code again
},
{
name: "2fa error and fail",
mapper: configmap.Simple{"url": "http://localhost/", "2fa": "true", "user": "username"},
input: fs.ConfigIn{State: "2fa_error"},
expectFail: true,
},
}
for _, fixture := range fixtures {
t.Run(fixture.name, func(t *testing.T) {
output, err := Config(context.Background(), "test", fixture.mapper, fixture.input)
if fixture.expectFail {
require.Error(t, err)
t.Log(err)
return
}
assert.Equal(t, fixture.expectState, output.State)
assert.Equal(t, fixture.expectErrorMessage, output.Error)
assert.Equal(t, fixture.expectResult, output.Result)
})
}
}

View File

@@ -1,6 +1,5 @@
// Package sftp provides a filesystem interface using github.com/pkg/sftp
//go:build !plan9
// +build !plan9
package sftp

View File

@@ -1,4 +1,3 @@
//go:build !plan9
// +build !plan9
package sftp

View File

@@ -1,6 +1,5 @@
// Test Sftp filesystem interface
//go:build !plan9
// +build !plan9
package sftp_test

View File

@@ -1,7 +1,6 @@
// Build for sftp for unsupported platforms to stop go complaining
// about "no buildable Go source files "
//go:build plan9
// +build plan9
package sftp

View File

@@ -1,4 +1,3 @@
//go:build !plan9
// +build !plan9
package sftp

View File

@@ -1,4 +1,3 @@
//go:build !plan9
// +build !plan9
package sftp

View File

@@ -1,4 +1,3 @@
//go:build ignore
// +build ignore
package main

View File

@@ -1,6 +1,5 @@
// Code generated by vfsgen; DO NOT EDIT.
//go:build !dev
// +build !dev
package sharefile

View File

@@ -105,7 +105,7 @@ func init() {
authRequest := api.AppAuthorization{
Username: username,
Password: obscure.MustReveal(password),
Password: password,
Application: withDefault(opt.AppID, appID),
AccessKeyID: withDefault(opt.AccessKeyID, accessKeyID),
PrivateAccessKey: withDefault(opt.PrivateAccessKey, obscure.MustReveal(encryptedPrivateAccessKey)),

View File

@@ -1,4 +1,3 @@
//go:build !plan9
// +build !plan9
// Package tardigrade provides an interface to Tardigrade decentralized object storage.

View File

@@ -1,4 +1,3 @@
//go:build !plan9
// +build !plan9
package tardigrade

View File

@@ -1,4 +1,3 @@
//go:build !plan9
// +build !plan9
// Test Tardigrade filesystem interface

View File

@@ -1,4 +1,3 @@
//go:build plan9
// +build plan9
package tardigrade

View File

@@ -1,4 +1,3 @@
//go:build ignore
// +build ignore
// Attempt to work out if branches have already been merged

View File

@@ -1,4 +1,3 @@
//go:build ignore
// +build ignore
// Cross compile rclone - in go because I hate bash ;-)

View File

@@ -1,4 +1,3 @@
//go:build ignore
// +build ignore
// Get the latest release from a github project

View File

@@ -1,4 +1,3 @@
//go:build ignore
// +build ignore
// Test that the tests in the suite passed in are independent

View File

@@ -1,4 +1,3 @@
//go:build !plan9 && !js
// +build !plan9,!js
package cachestats

View File

@@ -1,7 +1,6 @@
// Build for cache for unsupported platforms to stop go complaining
// about "no buildable Go source files "
//go:build plan9 || js
// +build plan9 js
package cachestats

View File

@@ -1,4 +1,3 @@
//go:build cmount && cgo && (linux || darwin || freebsd || windows)
// +build cmount
// +build cgo
// +build linux darwin freebsd windows

View File

@@ -2,7 +2,6 @@
//
// This uses the cgo based cgofuse library
//go:build cmount && cgo && (linux || darwin || freebsd || windows)
// +build cmount
// +build cgo
// +build linux darwin freebsd windows

View File

@@ -1,8 +1,8 @@
// Build for macos with the brew tag to handle the absence
// of fuse and print an appropriate error message
//go:build brew && darwin
// +build brew,darwin
// +build brew
// +build darwin
package cmount

View File

@@ -1,4 +1,3 @@
//go:build cmount && cgo && (linux || darwin || freebsd || windows) && (!race || !windows)
// +build cmount
// +build cgo
// +build linux darwin freebsd windows

View File

@@ -1,7 +1,6 @@
// Build for cmount for unsupported platforms to stop go complaining
// about "no buildable Go source files "
//go:build (!linux && !darwin && !freebsd && !windows) || !brew || !cgo || !cmount
// +build !linux,!darwin,!freebsd,!windows !brew !cgo !cmount
package cmount

View File

@@ -1,5 +1,6 @@
//go:build cmount && cgo && !windows
// +build cmount,cgo,!windows
// +build cmount
// +build cgo
// +build !windows
package cmount

View File

@@ -1,5 +1,6 @@
//go:build cmount && cgo && windows
// +build cmount,cgo,windows
// +build cmount
// +build cgo
// +build windows
package cmount

View File

@@ -1,4 +1,3 @@
//go:build linux || freebsd
// +build linux freebsd
package mount

View File

@@ -1,4 +1,3 @@
//go:build linux || freebsd
// +build linux freebsd
package mount

View File

@@ -1,6 +1,5 @@
// FUSE main Fs
//go:build linux || freebsd
// +build linux freebsd
package mount

View File

@@ -1,4 +1,3 @@
//go:build linux || freebsd
// +build linux freebsd
package mount

View File

@@ -1,6 +1,5 @@
// Package mount implements a FUSE mounting system for rclone remotes.
//go:build linux || freebsd
// +build linux freebsd
package mount

View File

@@ -1,4 +1,3 @@
//go:build linux || freebsd
// +build linux freebsd
package mount

View File

@@ -3,7 +3,7 @@
// Invert the build constraint: linux freebsd
//go:build !linux && !freebsd
// +build !linux,!freebsd
// +build !linux
// +build !freebsd
package mount

View File

@@ -1,4 +1,3 @@
//go:build linux || (darwin && amd64)
// +build linux darwin,amd64
package mount2

View File

@@ -1,6 +1,5 @@
// FUSE main Fs
//go:build linux || (darwin && amd64)
// +build linux darwin,amd64
package mount2

View File

@@ -1,6 +1,5 @@
// Package mount implements a FUSE mounting system for rclone remotes.
//go:build linux || (darwin && amd64)
// +build linux darwin,amd64
package mount2

View File

@@ -1,4 +1,3 @@
//go:build linux || (darwin && amd64)
// +build linux darwin,amd64
package mount2

View File

@@ -1,7 +1,6 @@
// Build for mount for unsupported platforms to stop go complaining
// about "no buildable Go source files "
//go:build !linux && (!darwin || !amd64)
// +build !linux
// +build !darwin !amd64

View File

@@ -1,4 +1,3 @@
//go:build linux || (darwin && amd64)
// +build linux darwin,amd64
package mount2

View File

@@ -1,6 +1,5 @@
// Daemonization interface for non-Unix variants only
//go:build windows || plan9 || js
// +build windows plan9 js
package mountlib

View File

@@ -1,6 +1,5 @@
// Daemonization interface for Unix variants only
//go:build !windows && !plan9 && !js
// +build !windows,!plan9,!js
package mountlib

View File

@@ -1,4 +1,3 @@
//go:build !plan9 && !js
// +build !plan9,!js
package mountlib

View File

@@ -1,4 +1,3 @@
//go:build plan9 || js
// +build plan9 js
package mountlib

View File

@@ -1,7 +1,6 @@
// Package ncdu implements a text based user interface for exploring a remote
//go:build !plan9 && !solaris && !js
// +build !plan9,!solaris,!js
//+build !plan9,!solaris,!js
package ncdu

View File

@@ -1,7 +1,6 @@
// Build for ncdu for unsupported platforms to stop go complaining
// about "no buildable Go source files "
//go:build plan9 || solaris || js
// +build plan9 solaris js
package ncdu

View File

@@ -1,4 +1,3 @@
//go:build !noselfupdate
// +build !noselfupdate
package selfupdate

View File

@@ -1,4 +1,3 @@
//go:build noselfupdate
// +build noselfupdate
package selfupdate

View File

@@ -1,4 +1,3 @@
//go:build !noselfupdate
// +build !noselfupdate
package selfupdate
@@ -159,7 +158,7 @@ func InstallUpdate(ctx context.Context, opt *Options) error {
oldVersion := fs.Version
if newVersion == oldVersion {
fs.Logf(nil, "rclone is up to date")
fmt.Println("rclone is up to date")
return nil
}
@@ -170,7 +169,7 @@ func InstallUpdate(ctx context.Context, opt *Options) error {
} else {
err := installPackage(ctx, opt.Beta, newVersion, siteURL, opt.Package)
if err == nil {
fs.Logf(nil, "Successfully updated rclone package from version %s to version %s", oldVersion, newVersion)
fmt.Printf("Successfully updated rclone package from version %s to version %s\n", oldVersion, newVersion)
}
return err
}
@@ -222,7 +221,7 @@ func InstallUpdate(ctx context.Context, opt *Options) error {
err = replaceExecutable(targetFile, newFile, savedFile)
if err == nil {
fs.Logf(nil, "Successfully updated rclone from version %s to version %s", oldVersion, newVersion)
fmt.Printf("Successfully updated rclone from version %s to version %s\n", oldVersion, newVersion)
}
return err
}
@@ -298,7 +297,7 @@ func replaceExecutable(targetFile, newFile, savedFile string) error {
}
}
if saveErr == nil {
fs.Infof(nil, "The old executable was saved as %s", savedFile)
fmt.Printf("The old executable was saved as %s\n", savedFile)
err = nil
}
}

Some files were not shown because too many files have changed in this diff Show More