Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
342 commits
Select commit Hold shift + click to select a range
f325f2b
modify case
dengwu12 Nov 16, 2016
0d8d779
modify case
dengwu12 Nov 16, 2016
a58152e
modify case
dengwu12 Nov 16, 2016
fb3f167
modify case
dengwu12 Nov 16, 2016
b52be4a
modify case
dengwu12 Nov 16, 2016
c0491e6
modify case
dengwu12 Nov 16, 2016
d879a83
modify case
dengwu12 Nov 16, 2016
0c4e21a
modify case
dengwu12 Nov 16, 2016
a46aeec
modify case
dengwu12 Nov 16, 2016
e77ba08
modify case
dengwu12 Nov 16, 2016
dc84a44
modify case
dengwu12 Nov 16, 2016
efca644
modify case
dengwu12 Nov 16, 2016
b8991c8
modify case
dengwu12 Nov 16, 2016
cc3084e
modify case
dengwu12 Nov 16, 2016
5049054
modify case
dengwu12 Nov 16, 2016
4de4f79
modify case
dengwu12 Nov 16, 2016
b667321
modify case
dengwu12 Nov 16, 2016
45f9346
modify case
dengwu12 Nov 16, 2016
6003b45
modify case
dengwu12 Nov 16, 2016
b4ee479
modify case
dengwu12 Nov 16, 2016
8f09b9d
modify case
dengwu12 Nov 16, 2016
fcf9ff7
modify case
dengwu12 Nov 16, 2016
79be00e
modify case
dengwu12 Nov 17, 2016
d841efe
modify case
dengwu12 Nov 17, 2016
26406be
modify case
dengwu12 Nov 17, 2016
b1b6f09
modify case
dengwu12 Nov 17, 2016
6ffe0fe
modify case
dengwu12 Nov 17, 2016
bb5712f
modify case
dengwu12 Nov 17, 2016
b3eaeeb
modify case
dengwu12 Nov 17, 2016
d98fd4f
Merge branch 'features/travis-ci' of https://github.com/aliyun/ossuti…
dengwu12 Nov 17, 2016
003de27
modify case
dengwu12 Nov 17, 2016
a6adeef
modify case
dengwu12 Nov 17, 2016
efb9bee
modify case
dengwu12 Nov 17, 2016
fb8734d
modify case
dengwu12 Nov 17, 2016
4dd287d
modify case
dengwu12 Nov 17, 2016
62aed8d
modify case
dengwu12 Nov 17, 2016
929afd9
modify case
dengwu12 Nov 17, 2016
9234656
modify case
dengwu12 Nov 17, 2016
e162e87
modify case
dengwu12 Nov 17, 2016
369f13b
modify case
dengwu12 Nov 17, 2016
3f59afd
modify case
dengwu12 Nov 17, 2016
1e9b21a
modify case
dengwu12 Nov 17, 2016
8ceda24
modify case
dengwu12 Nov 17, 2016
ad95f99
modify case
dengwu12 Nov 17, 2016
d9dbaf3
modify case
dengwu12 Nov 18, 2016
676c96a
modify case
dengwu12 Nov 18, 2016
e51f8b1
modify case
dengwu12 Nov 18, 2016
944f3b1
modify case
dengwu12 Nov 18, 2016
afa533d
modify case
dengwu12 Nov 18, 2016
a3027b8
modify case
dengwu12 Nov 18, 2016
a8dcbd0
modify case
dengwu12 Nov 18, 2016
633d36a
modify case
dengwu12 Nov 18, 2016
847a6a5
modify case
dengwu12 Nov 18, 2016
12095eb
modify case
dengwu12 Nov 18, 2016
4c5b9ea
modify case
dengwu12 Nov 18, 2016
b5d3a08
modify case
dengwu12 Nov 18, 2016
a10ade9
modify case
dengwu12 Nov 18, 2016
aee2251
modify case
dengwu12 Nov 18, 2016
c40d1e2
modify case
dengwu12 Nov 18, 2016
3e2e467
modify case
dengwu12 Nov 18, 2016
2f4afe9
modify case
dengwu12 Nov 18, 2016
828ffa7
modify case
dengwu12 Nov 18, 2016
c313769
modify case
dengwu12 Nov 18, 2016
2da8d6e
modify case
dengwu12 Nov 18, 2016
bb2f129
modify case
dengwu12 Nov 18, 2016
49c4f21
modify case
dengwu12 Nov 18, 2016
b92512f
modify case
dengwu12 Nov 19, 2016
4288d66
modify case
dengwu12 Nov 19, 2016
d3d6a46
modify case
dengwu12 Nov 19, 2016
5b62721
modify case
dengwu12 Nov 19, 2016
897e990
modify case
dengwu12 Nov 19, 2016
c952245
modify case
dengwu12 Nov 19, 2016
93db25b
modify case
dengwu12 Nov 19, 2016
104e55f
modify case
dengwu12 Nov 19, 2016
fb96ba0
modify case
dengwu12 Nov 19, 2016
24337c6
modify case
dengwu12 Nov 19, 2016
d70ccb3
modify case
dengwu12 Nov 19, 2016
1e3432f
modify case
dengwu12 Nov 19, 2016
019437d
modify case
dengwu12 Nov 19, 2016
3878c87
modify case
dengwu12 Nov 19, 2016
589164c
modify case
dengwu12 Nov 19, 2016
399fae6
modify case
dengwu12 Nov 19, 2016
9643fe0
modify case
dengwu12 Nov 19, 2016
ced0791
modify case
dengwu12 Nov 20, 2016
92691f4
modify case
dengwu12 Nov 20, 2016
a9f78a8
modify case
dengwu12 Nov 20, 2016
68b5630
modify case
dengwu12 Nov 20, 2016
6db3904
modify case
dengwu12 Nov 20, 2016
f0461fa
modify case
dengwu12 Nov 20, 2016
35429a5
modify case
dengwu12 Nov 20, 2016
632c6ff
modify case
dengwu12 Nov 20, 2016
fe19fc0
modify case
dengwu12 Nov 20, 2016
cc2c6ca
modify case
dengwu12 Nov 20, 2016
228fcc1
modify case
dengwu12 Nov 20, 2016
126de82
modify case
dengwu12 Nov 20, 2016
fd120ee
Merge branch 'features/travis-ci' of https://github.com/aliyun/ossuti…
dengwu12 Nov 20, 2016
e5d9373
modify case
dengwu12 Nov 20, 2016
23d80e1
modify case
dengwu12 Nov 20, 2016
cfa381f
modify case
dengwu12 Nov 20, 2016
d621c38
modify case
dengwu12 Nov 20, 2016
c65c1a8
modify case
dengwu12 Nov 20, 2016
628cd02
modify case
dengwu12 Nov 20, 2016
507665d
modify case
dengwu12 Nov 20, 2016
c37ef55
modify case
dengwu12 Nov 20, 2016
d690f28
modify case
dengwu12 Nov 20, 2016
65e42d8
modify case
dengwu12 Nov 20, 2016
14687df
modify case
dengwu12 Nov 20, 2016
aaf603f
modify case
dengwu12 Nov 20, 2016
5e47fb2
modify case
dengwu12 Nov 21, 2016
d296a0b
modify case
dengwu12 Nov 21, 2016
b97100f
modify case
dengwu12 Nov 21, 2016
f69ca7a
modify case
dengwu12 Nov 21, 2016
6287574
modify case
dengwu12 Nov 21, 2016
b24865e
modify case
dengwu12 Nov 21, 2016
2c6255d
modify case
dengwu12 Nov 21, 2016
352f62d
modify case
dengwu12 Nov 21, 2016
30ef447
modify case
dengwu12 Nov 21, 2016
35aeef3
modify case
dengwu12 Nov 21, 2016
306bd47
modify case
dengwu12 Nov 21, 2016
3e0186a
modify case
dengwu12 Nov 22, 2016
17b9fbd
modify case
dengwu12 Nov 22, 2016
fca0831
modify case
dengwu12 Nov 22, 2016
6bb71d9
modify case
dengwu12 Nov 22, 2016
f31f59f
modify case
dengwu12 Nov 22, 2016
a842c1b
modify case
dengwu12 Nov 22, 2016
f93306b
modify case
dengwu12 Nov 22, 2016
669f39b
modify case
dengwu12 Nov 22, 2016
4ac237e
modify case
dengwu12 Nov 22, 2016
744eec4
modify case
dengwu12 Nov 22, 2016
493c63c
modify case
dengwu12 Nov 22, 2016
9746335
modify case
dengwu12 Nov 22, 2016
a1dfc6e
modify case
dengwu12 Nov 22, 2016
56baed3
modify case
dengwu12 Nov 22, 2016
9fe658a
modify case
dengwu12 Nov 23, 2016
81a5d16
modify case
dengwu12 Nov 24, 2016
233f1d6
modify case
dengwu12 Nov 24, 2016
421886d
modify case
dengwu12 Nov 24, 2016
b9dce2d
modify case
dengwu12 Nov 24, 2016
ee81cd9
modify case
dengwu12 Nov 24, 2016
97c0aab
modify case
dengwu12 Nov 24, 2016
9e526b8
modify case
dengwu12 Nov 24, 2016
4f3ae45
modify case
dengwu12 Nov 24, 2016
7ec46f0
modify case
dengwu12 Nov 24, 2016
5b93078
modify case
dengwu12 Nov 24, 2016
8c526f1
modify case
dengwu12 Nov 24, 2016
1ccac59
modify case
dengwu12 Nov 24, 2016
9fa7dab
modify case
dengwu12 Nov 24, 2016
754a8f5
modify case
dengwu12 Nov 24, 2016
e527b4f
modify case
dengwu12 Nov 24, 2016
aa45097
modify case
dengwu12 Nov 24, 2016
e959748
modify case
dengwu12 Nov 24, 2016
f5f521e
modify case
dengwu12 Nov 24, 2016
1209b51
modify case
dengwu12 Nov 24, 2016
faf7e47
modify case
dengwu12 Nov 25, 2016
159a7b1
modify case
dengwu12 Nov 25, 2016
0052a97
modify case
dengwu12 Nov 25, 2016
4a39920
modify case
dengwu12 Nov 25, 2016
ecffc2a
modify case
dengwu12 Nov 25, 2016
5f598c3
modify case
dengwu12 Nov 25, 2016
7e55cbb
modify case
dengwu12 Nov 25, 2016
a7e641b
modify case
dengwu12 Nov 25, 2016
f98102b
modify case
dengwu12 Nov 25, 2016
065e2ca
modify case
dengwu12 Nov 25, 2016
8a23b27
modify case
dengwu12 Nov 25, 2016
ac5fbb3
modify case
dengwu12 Nov 25, 2016
b2cb7db
modify case
dengwu12 Nov 25, 2016
0285622
modify case
dengwu12 Nov 25, 2016
30a3a78
modify case
dengwu12 Nov 25, 2016
8085206
modify case
dengwu12 Nov 25, 2016
35db8d2
modify case
dengwu12 Nov 25, 2016
14e812f
modify case
dengwu12 Nov 25, 2016
8852653
modify case
dengwu12 Nov 25, 2016
3195238
modify case
dengwu12 Nov 25, 2016
f49eacf
modify case
dengwu12 Nov 25, 2016
2c19550
modify case
dengwu12 Nov 25, 2016
2146c09
modify case
dengwu12 Nov 25, 2016
6d50795
modify case
dengwu12 Nov 25, 2016
5d19c4e
modify case
dengwu12 Nov 25, 2016
fb9ea87
modify case
dengwu12 Nov 25, 2016
f379f9f
modify case
dengwu12 Nov 25, 2016
353ee8a
modify case
dengwu12 Nov 25, 2016
01d0851
modify case
dengwu12 Nov 25, 2016
72f1363
modify case
dengwu12 Nov 26, 2016
86a6dcb
modify case
dengwu12 Nov 26, 2016
da1beff
modify case
dengwu12 Nov 26, 2016
ec5b592
modify case
dengwu12 Nov 26, 2016
bc1af50
modify case
dengwu12 Nov 26, 2016
2a5b0bc
modify case
dengwu12 Nov 26, 2016
41ed3dd
modify case
dengwu12 Nov 26, 2016
e82d14b
modify case
dengwu12 Nov 26, 2016
52bf4ea
modify case
dengwu12 Nov 26, 2016
2814e06
modify case
dengwu12 Nov 26, 2016
2279f47
modify case
dengwu12 Nov 26, 2016
6765711
modify case
dengwu12 Nov 26, 2016
f1a901d
modify case
dengwu12 Nov 26, 2016
0f85ce1
modify case
dengwu12 Nov 26, 2016
15fd171
modify case
dengwu12 Nov 26, 2016
525ead3
modify case
dengwu12 Nov 26, 2016
e228b0c
modify case
dengwu12 Nov 26, 2016
4f6b2e1
modify case
dengwu12 Nov 26, 2016
4f8c7d4
modify case
dengwu12 Nov 26, 2016
ddc7f82
modify case
dengwu12 Nov 26, 2016
0f38abc
modify case
dengwu12 Nov 26, 2016
842f93c
modify case
dengwu12 Nov 26, 2016
1cc59d4
modify case
dengwu12 Nov 26, 2016
05cde96
modify case
dengwu12 Nov 26, 2016
b93901d
modify case
dengwu12 Nov 26, 2016
312b7c0
modify case
dengwu12 Nov 26, 2016
e6d5589
modify case
dengwu12 Nov 26, 2016
5d6ce42
modify case
dengwu12 Nov 26, 2016
b2509dc
modify case
dengwu12 Nov 26, 2016
e9d05bb
modify case
dengwu12 Nov 26, 2016
775d7e7
modify case
dengwu12 Nov 26, 2016
eb1d249
modify case
dengwu12 Nov 26, 2016
5207f1e
modify case
dengwu12 Nov 27, 2016
05965fe
modify case
dengwu12 Nov 27, 2016
9da6e2b
modify case
dengwu12 Nov 27, 2016
597aa62
modify case
dengwu12 Nov 27, 2016
180495f
modify case
dengwu12 Nov 27, 2016
5577bb5
modify case
dengwu12 Nov 27, 2016
73574b2
modify case
dengwu12 Nov 27, 2016
ff9d249
modify case
dengwu12 Nov 27, 2016
de1ccdb
modify case
dengwu12 Nov 27, 2016
befab0f
modify case
dengwu12 Nov 27, 2016
f992597
modify case
dengwu12 Nov 27, 2016
67a9501
modify case
dengwu12 Nov 27, 2016
efb1a5f
modify case
dengwu12 Nov 27, 2016
98a8c8d
modify case
dengwu12 Nov 28, 2016
62515d3
modify case
dengwu12 Nov 28, 2016
d355617
modify case
dengwu12 Nov 28, 2016
488a89b
modify case
dengwu12 Nov 28, 2016
be38d00
modify case
dengwu12 Nov 28, 2016
386e34e
modify case
dengwu12 Nov 28, 2016
0069f10
modify case
dengwu12 Nov 28, 2016
1e0d7b4
modify case
dengwu12 Nov 28, 2016
b70822d
modify case
dengwu12 Nov 28, 2016
fbc0347
modify case
dengwu12 Nov 28, 2016
1261199
modify case
dengwu12 Nov 28, 2016
bf4921e
modify case
dengwu12 Nov 29, 2016
651d89b
modify case
dengwu12 Nov 29, 2016
eb50b5b
modify case
dengwu12 Nov 29, 2016
596abf3
modify case
dengwu12 Nov 29, 2016
e383291
modify y or n
dengwu12 Nov 29, 2016
aec343e
modify y or n
dengwu12 Nov 29, 2016
9d65db7
modify case
dengwu12 Nov 29, 2016
8ab3874
modify case
dengwu12 Nov 30, 2016
cbca59b
modify case
dengwu12 Nov 30, 2016
1abb2ce
modify case
dengwu12 Nov 30, 2016
b67150e
modify y or n
dengwu12 Nov 30, 2016
4ac7928
modify y or n
dengwu12 Nov 30, 2016
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 13 additions & 8 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
language: go
go:
- 1.4
- 1.5
- 1.6
- 1.7
install:
- go get golang.org/x/tools/cmd/cover
- go get github.com/mattn/goveralls
Expand All @@ -13,10 +10,18 @@ install:
- go get github.com/aliyun/aliyun-oss-go-sdk/oss
script:
- cd lib
- go test -v -covermode=count -coverprofile=coverage.out
- "$HOME/gopath/bin/goveralls -coverprofile=coverage.out -service=travis-ci"
- travis_wait 120 go test -v -covermode=count -coverprofile=coverage.out -timeout=120m
- $HOME/gopath/bin/goveralls -coverprofile=coverage.out -service=travis-ci
env:
global:
- secure: JCBVESMD4k4dPYDqZJFjt3adlP7Pu/Ous+SSc1ylZx84L1uQLMWGyNByP7EzNPjEn9bezRB5xdoPWIB2xed4Wu0tHfIYi+TyqrkcTGtds23aBdUXYuIEeQK+ZWiNPTpMMstoJbDA0Edse0RwWSdrSWvjZKBz5rqmTaI8QStBunI75aI2G0wVd13/k/SR4ZzT0vceVrvGcGXzLf3thqiGsRCjDN6lxP2X1i9cj0i5Pyc4/IuSwiIV+BpFFfT88N7ptJEyt1xAouICeX+4brne+C27pTYD4F7M8SYDmqDtm7kYca4PYsztJBNjHZTtgeXWvmqDD75+1SvOgt3ZU4Cuz/zTgcfMN1E/SjCSc/yP04c8Kb9MbTQLxyLA7h9B6kGMlwI85mtFFdbUEpCgW2AoqrQ7iG+EjdqqZAMsAKqZFci3hH2traGkjMLhSiOVu3smAZPxY6CknebqisWwqC2MPLIy7z66dwZn7LtzKcLlH8gaOdaQfOCHxYtMzwnYLQuKCA163GJRyliAMHQLJ8AyKb6AyjETHTnI/RIbHFRRm9YkYVCHqPSYfX0rEHCrz1+aDsWD0qgNUCgxz/VZBiaxm2UytZfivYTaaoS/MezLe1521vGAIddCAKPRMhSgQ1mJ/pTpLr8iogwjXJ615BJ8cVjNhRshnT7t3j+v7pL5MV8=
- secure: rW2uZhxMVho6XnBTMd9HErvxgIygCkSuJycMQWejb0MtQoqCIDYQHDXQ0bnusXD70HsZ2B/hJOltJ82qY6dfpfZ1YBbwUcDGQA2Fj6uoXu8QOie5KiY0OLGI0da3OXJ7mFOL8mYq52tR68iAHPKmnn5vzig+HdrNxQTdNsYieBsuDXZziHkqAYc/im5pbQXnrc+kMBBtxL16WlsIFDjVISgVnvi4+tHOxCFhrNB5WvACq49/AZCNjwJpKD3GFUGjPDTRwCsu1acFknlkBbtByZlc65HJrMRFh2jNYQ79LCyMHHIe1EZL9z7ob8XYpEyTyrcMLjOxdJgoJnMGlpIjSuYYfSKGFygifmVkQB/6viY2TfANCaS088Rr/5E7w0UBQ0996ERpWX2j1Y/2SL44qvzYcK/XU5FpiMQNxHV+q5RiYcT5ZJpXFZTKp6dm5Yt2nyHvgQ5Er7JSMzo/wO/BaYA0Wr2p6a9G3ojO3OdOIghE0HaLkW0D4OwcQlToDbmImsfbVHe/Z5tmSn6z4FUn1bpvEzV08YT7oFpvrEnETWMBAS53ehl9lpWCmbuVQrOPEaE/hzOuR5YAY2G9sr+LGrQyY6J1VmgrG8GZm2XEyRhOkc23BBZWAg0Ue8iQZDm8lrM2Va7XX0aqNyYpYtSg/rzu0FvNrAo28y4dnH1Quqs=
- secure: sFn70NqYVMW5VjwBZLqUvZb/IxcKy/kxPyQzoJZcl9zlDK+CINAgksJt8ni0vsKqPO8ZP3sc2C0Avm2KrsjDXLJCtcMXQYuHLmBCLp/ajacCcCxoiWECIGJftzmvZ6guADvRTwAwurKobOLKc3DxopSvFDwM19khsmPp6un3NzhQdMcvh+Ix8/S76jEuQGRXuFhJhUpQPuegbbDYYF7tZH8lwhaQWxJN2qpLgu0IJoUug1Wy1c71tZXKvCTdApHJCFsmx8jWLodNkqhRRlELGlI9kos805O8axnq5GSEhAuV28TkNh1ZRKBIIRBEBZQPGmz0MARmDphq19yGfAiCG5O1FEhzAKd3gDuueKsQ0wTAbeJGXOqkLPr6zoIEnzMnNWcou5Gk0fFyOXpXvheDvL+UUR8lvwTH7JekXdJ2X0WvWLUoYslvMwmLtkDg7Vp0rVvvephiLcBjNYJ4BI/Lrcw+krfUeG5RW3E0j9GE3A5o4+c1W3pl/axMGJ8ULVo6IY8F0V2lDp1zhlT5cTQGV+HoZ4edL9saJ++0yhcr6ZnXMg0Rpw4kMgWKRIwf04xfRO1nSaAfJ26uICLaOyqOqny86U6Ggs0kf+HTdnhLrMsuQ9qjQ/1SODZHg/OLxFuRGteCgYPwkPoU28Xr3A0kMAeQunrP21IzSmZKqA+VgtM=
- secure: bo97l9WZIcA7zVsyVQtG3L90txvGJpargzr8FnoKg63atRVgWGqQ+UPaQ1kdJiM8W/wtSbYkGd7zeaPJ+1ufhO6kBwnW5A/Nv5PAFlko3PXzOIwg7okB/Cbv+Ho4GVRMST4GC5X/Di5Wo1rVf9hpn9eT82MTj3+vmqoCWhAKL1KZPlcGIYp60JG5SeuiJgtzsRqCNITujpG8u3lN7D9gVZyObO8ULEn7WzpQwK94kZhoGNprNw02nw+yxRBn1TGkQ0dFz7b21piG8fDRYlkKPzbJ+ux0rpfTNNN1FJ78Y5i4u7/+Oir/5Y023n/R60JPze5Y4EKHH8X/eryndEV99Ahgvnou6g57npjIqkTa/tT5vorgO09WoFgg9eVNqc6ceuVmSi1i0xvDd/INDxiZNr6FZ+JKK3y//a9wEj7akNjIIbxxbeMA9LBCIGMd0aLnbVx+sE487ghfC4Hpnqqb7gjpFGZ7mYJfuHTxUYHCMgEhGh0mvvGXLSpg+xmiyULcJo0TRs/DVMtuETF9D5h3Ebzl/JD5SH7iZT8mQQ1YAkqiIaIu4OIJ72u3ROGq9Gz6OLpm8a97rQ2nuDCpSc3XKdhq6KXukb9/ozVxbPtIHeJX3r2KDPhgNoFkHTPoian2a+59x388DOZEK/fWxYPUXXm65P103f5Vp7eMVH1ic7U=
- secure: pT5vMUYI7nwRvGebqCMXb809PuM1cPCRFoPLSJFjysspGHqtF1bW3RBircvJAHHp8jbSKImqsfzc1oyZ0GQRcXM0gKRnnvG1eVMnWqoWpyQ60iYLYPq0AgVsx6fmC+vUQSc9gp9IHYcmXjre1hEiMkOZUTTbR5FPkq/xD4JLoLH3E4pWqH0oOf/rbQyPRw2PyMo/+Vo3puS4PfiFLVHDrvHqGCbzNfsuFclggksq2G6pC3kGLXUhn6rDlMzX06Nrr8hqo74Z565eEB4Yg/4TL7bRzLo8h/yqIyf4gTKmf3mbeKeke0DMOqku1TKg8YaBIhYNwIa4l2EAnK4Bga6eWAhaZazMGAVBmlOFU4bYYiH4wCyBFtfA54jI5SvV8jqqY694vIXUR1HBDxqKcWcUBwgiHsziSR1oE5fL119VpWr7RF/Z3j6/6BFJFrJbt134bYPwWIEBGcDE9yweJIvxtms2pcGG60QdGFb2YMoQxoTfRXracF5L12ceHxKjhpsJ2Y1tpUGKdHTtOeG/kRY8iwuNWiiMpHiaue7Q3uqupXyuui5gy8N1L/bw3zB7XQH916JoIBG58TDONx2dQ2B2WbxZpofHdkkcu9wIBM2JgRyGpk/CvQ/BwQicsA2i9vfdKOhs5mHUFVoaXSJEUQvwTZojGWA1exAKPglnoRMaWgI=
- secure: kN+aUl4umaz+SSlj1HE0FWm4O2FIQneaFo2v6ZAzxOn+v/NKSWJHl3hNuknG74cxZezbx0Da6LEquABQS3QNEqZTRCdWIh3s5UOE6cFRYbgr6FAOBoHajsZaxXdIx78hYjLzfRz+m7VhSyNg1fsEv3Dx1rW+y/xPT/zbeUsDuC1KR0yQA24hCrGsaYMf5R82p1/IEbpteuzO+RRODOnRlA+rQDsmWVXkAbDE3IfsSnSz21z+UOknI+4wp139F677ZxMWQyYIanHxBeEBDW2g6Mlo9RWZKTgVVZO1gIvwN3HAzHNvgeDmrhZkB0DL7gc8A6oLu70q1C9q4PaPBpTPhGAdnM7rihJD46T1rR4xzaL8AGJ/AreZIdu65E+QoPAcjj0rxgxcsTO/qfqpGKJl0zL5fO/q2f+4eACCjXtqbFgyUH2XQaKg7lnnWkAV5s4C+QSJyilcg/VKFSkHylenxLICfElB6pVSqUNabP9OsK8F0pLFfc6N8P6k1Dl7wVFkY97bCvCP2yroTjC7R7tmtJaIXqrawdUuhsB86PKISH8XVQE+PVlmDcW2KWvw2+615sC5aPLIAzazM3LpivmhvyGg910YyyjNCsTIvSHxAxF7Fq6Yd8pt8j4zkf14cUbE7zQgQi0uQ7F9Wo+9ZLW9K2OU/bAHiqFlnJx3JNQoQuQ=
- secure: I2trBxAmO3ZLczHpMB7x5+u8PoPvnWbQkM7Wx5vQdjAF2lUVpgaOnuHDuuM+03/rh/FsPvIB/1NyNnsf87kOaFzfD02EmPW60mJdweLReer3jhTXJ4zRZc3gOQDUUqeBAVrshtMoOesFBQEGbI5hFDEgNrRQYcHHcK4jXUsqvBOnycl8a33E09MkmTEgi8/j98bz4nL3qsHikHbvkBQgpcKLYY4OhJwQNLzk3+0PwBrbQZP1PG1tJkF00lLJkJ5L2QR+hMteOp7Vlr8XOl6VcPvoLuBwCfwuRMFHM8ged98yNZucWyNi5opzCwg9K9eYor7ISqLovhgafPrc3laslPiWWVojCuX1MYuCnf9QAGCionuxrJ2ODfmQejbrRCO5vZR1EL1QZ0ievpD8vGtyVrOG7G8uEQ+P7P0NQ4zowRGUCc6/GPCd2dWhL5kghw+4hv0fBIJknv0AOu2fzr2gauVr63/dZMHx+M3JxeQAc209UA6g6xQBu6oSKi10DDW0D0PAjDo8jaVbIdkqhUeBBdsOdK4tZhnnyJ6L9mggCb6WcrVzt2oJ7hv7r4W4OkkDWws2OYQ7ENiXMoo0HVIbkpsxDFqXPVN1L8mmJXY5cgM+ddyJ37tClD4izE54BcyKoR3FJJcw/m0MrUTPUCsEZRhK9BQsaA2Q/l7hqBVzQdw=
- secure: tkBue+VETrSmGVUcQAD5YUloJth3iM/jMRczi/AlNvi0vGZh6LspiQVvWjiEnbWfRW1au5uPRvrMIh4GcufJL6ZH9koc3ss74YgWS0T9YEJJeidnueQah9qWmfFV3Qtf6vxPG0iqzB8VKpOdncwRgJ5EtNR/tDeUdLoOAQBqWkCUmi11rJH/9+i+o/18rcUSccxgsTWb0rbM99oFiqHcKjY7dgMlNY01TyHYgNlU8QkQH6aSHa3e9pXGwu6yL7GoFXkXFWHZNVi37HzVK3PTJjQVGltb5eSsUDfbZMTANJ3WITGUZaPg0iVJNaQ+Ncr56q0j9yduVX/B8qazQZWRaDodCdUYcvKV1nJ1of7wcx/h6ZOI09u8uW1NBxwdIZYrifas7ZsGk9Y6yBehQG3xSVwHbCwksPSM1EijKUoYj+dBq7hcyHKYQx6zlQHwdA6eyDFZsYzLuR14LoFcdcQl/Oo0qgBZfeAVqplsEKH2eOEmVVdVJ09n9x2eiSCPKLPAPoR/lQ0UTEySuaFasOAvO9d7wsxnkfgIKlxr3PUZgKsQYR/apBycRGmjLSLY1VevKGmRUTyr4wEvcuzEeOuHCd2oppSs20/8qf+xMrU+XHW0oHyXIXlt4dOy4hW8ucNAHoWNo3NN9Q4ONCFhzNwGDV7p7Ywtr8Psf4LnSnpncdw=
- secure: oVZ7JBbZRkBDHs50joAoU9CsHKjuUJL7JscGWYEaM4ltfVyP+PDw8llw+HdIVt8z2frUP3S7Xz3jC8J2mqScmubYnsN9yJYJNHU0RyY7N9PC8eLsRnSglufYjxqSybmq8AodRTEJ4pnhfQeikh/kWh76di9rayNmlcMiZOOdUldo7GEqzRxfrJSJscsWaGzYAx0YELeL27qnOi5jNiorSJ+18PyErqqNbOSlXmdhtiEuS1yXLRo/aougKpAG5c1EqFuRpSjHR2FphfinRPqvIn476bt+zfGcddC0f+e0StFx5xxIzW9XrPm2Xk/HRnGmNyfwgWaWmDh1D+sb+XukWSGyymS8oqf3hsRr3PnTyaoDAfyxNqNkla37f1xtR/zqvpeDahHHAKYFvHOAaVjZQABJC2qbO9jhek1Gr8iA31YsotOVbuD8JBHiIYJSw8jJXCq62aEOp7fXkzyCgnxDJf9TjGzwG3HaWsNOO0qVQSsksM3zxceCWD5WvWHaRrhRUpCCBv42jGXSbVZflrDojqv47KLDh43C7YwzMsOjlZZj7JMh9xmTBxwAJXvP5pLEl0x84llc6+pFSTf/p7an10YmeQHsCFg0+jKntk66IgIemprwXikVNQhplycUz5wD6derutUo10iq8IaeVn3S3TM12Y69v1Wgdvpw/EUI4d4=
- secure: JwWJ4fZO1tioSG5Rodi87LNfoauVbYmAGqPMng+wwlLI/iqa3MVdB6MqslvlXHVnLYvf2C+vDbvpNKvYBR7fDlkKhcZPUu7b6soW3OJRQSyuMef2WUYE5a3KOlz/at52ePMaMdkWhCdHmIowhE8yuH460sL/UfLOvA6ZYbu1IhemVOHfJ8Dqp4fnD185EosZhHtLyATdV8ljk57wM32HsF12dfJOTReC3Acnit3JBG24KBnrPq7+M/kR1WvT+D1oSkv+tWxQ6x8TiENiAC4PQjclg+VD2rn2pJn2bNfxxtHAHaiU88fLlSXJbTAFv1JQ7chSXkG1kPZodyNASkbKo08G8oJx/g+XrpWjm855EWcQHfkESzDmA8B0TSsvRqhAW6klivPwyaz2dXCD8UTHXtlHLgvPlNIqicyEOyoW/VjKiAeRfKzQEgPDzBMJiLbgQDQG2s6o3IfodbU482WiW8lcQEAX68+E06cKnf80qetmzkXjutswjAAK2+u+9tTEpSvwPNpytEXyGM4ba2C1BWqKM8B0/+8Z3FWdi6rBf6BNluQLBMSGwYszEGD/afFUH4r2mr7MzV3UceH3v5tmGbdy3jfNOci7OFxpoEFrdJ3NjoYgkc0UUeDE0t346dKjqXAl5M2emHFNtQ0l8gdQfSNrpzjupZrD9MO4Qif+AQI=
- secure: QzF1AxVMGCKzZRKhDMEJ9T6Nz5k+07+vuo664Slwi76d8Nl0fBA7Eey3m/bLHwFAfCoT6KNcfhVQQOGOXcpVcn8z4YX6K0hWYYK8r8hGyFtXPGbJIyBde3gxmpZEW5PTUiRzlEeDDQJtqShxobtGgfMMMxsEMhVrkSOlVOD/4eUYCyLmEpYd/gKACeZ+6k6cr1hpkBj3HokL+SbCppVo5w5qFUQbqp27TdWIor+zJ+0c/aJ6z8ANmWsmhF+bYyLj328z4QYdiqfM/0rDwNjEm0uxjV+gXUnFi5bQqG/5gzatE0H1QxNDNRouCH8d2b5L5dbjmlr0fSF4uBcyLcluLVX0ggKZko6bLBqsZHJx87c8g4yu/pdsbUNw15hRG0ONLowBvkjZDs0FcVHy9ND2W56ZEUc6Qtsh0H4xpeNFWAebVr0Ir6nYN4KtybPnHec+yQOfF6A2BCU1xJibZBRobOZtfgkGlL1QZeMvAbmPOwfNjAJiJCOufYC9BkJwJiOdJkF/kHcl3hJE3a8JgjBEjwLLKmkfaoJ4x9kDHiUoa5stUP8c9X1DKLQkvKy9pTiWLzbA3alSG9ZvWDEJAn4fpd6OIIkl7cE49sd/pMuycOEuAjRXvY2mGC/yvxr7eFStw+bO2WKt/2Fbj2sGCKiSecAuNFOVNKlGkwu5yiJzlwQ=
- secure: PT8QV033wc4axAoTFXxgF3/r68Yulf74ODar6/uKUP6qmdNK0WA4iMk8LNPA9uF8kj7acnrvBJQYLIW+IGLlhCqjagAXtAJXAtDnjT3n5xdO4EIvcnKm7nPwNbz39EDDpEafTetU2z32DmPPPW4+O8n/omgo0yTVf5qZ10Dt58vM1SrCIiZ6vERVU37Q/pohH622iTN4oUev+vg+qgUBHJrKhY+GpMA2oqwlMRf9ZgsA5ksgocfFS1WstTkB0DYy3tp/zOQzRNtNDFv80EqpGyrRQPk4TUX5Eo+fTKanEUm5Fou11rPtIYhncRWJZcKWZx0F3N8XnF1+8fw67Y1eNqkMZNqbTusnzaz98dMeYeIMeIr3bAArcMWFzZy+NMLiAm7t3qBYpiUaHGqljNswV/2u0ATHd2ooF38pIPvbRQ/WMk+T+VZb6JxCn+5s2PLT8nMtoDjNr7iAx6r+7CJklIcTaFsb1K96yyv0dNvJBv3+efLEbkvzcMhf9m3ynjy2G/nyHNX8Tsjs3bwFLTvCexqSstDSP15ICSB93heiVFcbjIE04+iUqSITa498ErdKpN3KGRyI5zC+NT5bByPQP+fxdxEWpZvKF8EcaYsr+vST+pt1ttM6RtlqvYbcqDS0KpXOS+bOAEo7GruBuLEu46hjCYrWrNfxuFtD2uYGFrU=
- secure: UIA8SrQ4MnPH6hY3n16X0ya1Sp/MdJOoT2BbGmEJ5cY+ZC/UfoRHRNaQn5gYyOEgnZZhE/avC11uDmG49s6zwUsdluRZA0wRfL3Kg/ymck8qbQd70OyxlMRgtOgUFqIUOxrotYtoFznJWlmhk9RcZ1awZsdMQCFJi5RuFFCs4ko3+N3ZC4RbDIRAFX6yx2YlYWRrtbb2UK9jNpvTglqK0qP2qYz2h+d//TlKQDJaGUyU9YS7kL58/dCD7tWkArJnWEsLkOl5ZUQsU+aMfvwI7AQdP19d11DxG/C7IRVU5UQxyn0zUqVRiEv5ePnBr6q05F5o6rm0jEbUl5Qb5RVe8cH5ZIik1IJTIAImNydnaomZyH5T5cO9vV6Gbbfd9nZr30iVAac4zIZS4ciJyKOjLj3d/MaGBt8DSXvPahfB9N2Zs+x0Q11Xb3SBZuVIsJObGBwt5xZ/te1kzCZ6GjnsFYfpLF2DJUFOCWP8lpv2Ppj/NiyHTnCTZJD8XSP4R3bCUyB8cxVZJspZthKtRgkcJo9xk7HBRosHeKsQ55udnft92I8VGXzJG1i6vPhRRg/QuirAkmgJ/MgUnXxUZRq47zVsoMN8fHtNHF4M+YkItC9p6lrQc7qGz//Uhmd9N5sDc6fuIedgVRzyUu+zfqtSonG2+KtTQnCF4LoawKRuBQ8=
- secure: SjpUYnYnWxxIoTciybjfZ37VIuuVnC9ruYObySff6340c4wzrlwXiGMnqcPCy8svAKUk3r1YZ2GtaNb/suKGbfB3v6Fg/GOjPdelPZt/AdT9q4JXWvy7fVd+GwTTPxnad11/1poZNbZcDeFEkX9PCT432ciWI90tNmKCbzsfDx+qb/omZ6OcmmTx8yQSzkE6HBM+b9dYp+I4RudggwwZDILe509Cx1qiO0HVcwg39FLC9lZHWxlAI60w1vZC3GLSPaTW7myWHBKW8NWhZSZ37b+JQSzc5ixJfW6PEsiAZ2EgOv1XI6gfF8lqJ7aN/+yJcAnIM3HMKZAsQ9Qim9fX8gO4CMOMjP89UqAhmXSuTvi1vzIV3UwzhWfIXM2nl7TxguCk9THxk2bd3J5dej0UYytIMzf+YKfBUyrBBjhbbExVAlLP/HOJFiMlpO8o73dSEVWyY8csyuZh0S25WaWeCF1xm54aJ9QWCfHsjSOM/ESaztR+WFFbsbE9ZO2l3SLsYBvsRvvX8rfGr1d9FaRqt/U2hg+oNzvOzYZpDu0LdgesPc5NqG6CpaQAV+g1tDLF6i6VUEDbwwe9yQKb257kjAVZziWLx2FHEa8Ytl4F+CoMDH3NAmgVX2zhI59uAnC0p3Qy0XdMVHtVDkH9XYQJiK/gfQPmGy38WxNsL3KjDlE=
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,4 +77,4 @@
> - Ting Zhang

## License
> - MIT
> - MIT
2 changes: 1 addition & 1 deletion lib/command.go
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,7 @@ func (cmd *Command) ossClient(bucket string) (*oss.Client, error) {
accessKeyID, _ := GetString(OptionAccessKeyID, cmd.options)
accessKeySecret, _ := GetString(OptionAccessKeySecret, cmd.options)
stsToken, _ := GetString(OptionSTSToken, cmd.options)
client, err := oss.New(endpoint, accessKeyID, accessKeySecret, oss.UseCname(isCname), oss.SecurityToken(stsToken), oss.UserAgent(getUserAgent()))
client, err := oss.New(endpoint, accessKeyID, accessKeySecret, oss.UseCname(isCname), oss.SecurityToken(stsToken), oss.UserAgent(getUserAgent()), oss.Timeout(120, 1200), oss.EnableCRC(false))
if err != nil {
return nil, err
}
Expand Down
47 changes: 26 additions & 21 deletions lib/command_manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,28 +19,15 @@ func ParseAndRunCommand() (error) {
return err
}

if len(args) == 0 {
if val, _ := GetBool(OptionVersion, options); val {
fmt.Printf("ossutil version: %s\n", Version)
return nil
}
args = append(args, "help")
}

command := args[0]
args = args[1:]

cm := CommandManager{}
cm.Init()
showElapse, err := cm.RunCommand(command, args, options)
if err != nil {
return err
}
if showElapse {
te := time.Now().UnixNano()
fmt.Printf("%.6f(s) elapsed\n", float64(te-ts)/1e9)
showElapse, err := RunCommand(args, options)
if err != nil {
return err
}
if showElapse {
te := time.Now().UnixNano()
fmt.Printf("%.6f(s) elapsed\n", float64(te-ts)/1e9)
return nil
}
}
return nil
}

Expand All @@ -51,6 +38,24 @@ func clearEnv() {
}
}

func RunCommand(args []string, options OptionMapType) (bool, error) {
if len(args) == 0 {
if val, _ := GetBool(OptionVersion, options); val {
fmt.Printf("ossutil version: %s\n", Version)
return false, nil
}
args = append(args, "help")
}
command := args[0]
args = args[1:]

cm := CommandManager{}
cm.Init()
showElapse, err := cm.RunCommand(command, args, options)
return showElapse, err
}


// CommandManager is used to manager commands, such as build command map and run command
type CommandManager struct {
commandMap map[string]interface{}
Expand Down
70 changes: 55 additions & 15 deletions lib/command_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,18 +38,29 @@ var (
testLogger = log.New(testLogFile, "", log.Ldate|log.Ltime|log.Lshortfile)
resultPath = "ossutil_test.result"
testResultFile, _ = os.OpenFile(resultPath, os.O_RDWR|os.O_TRUNC|os.O_CREATE, 0664)
bucketNamePrefix = "ossutil-test-"
bucketNameExist = "nodelete-ossutil-test-normalcase"
bucketNameNotExist = bucketNamePrefix + "notexistbucket"
bucketNameDest = "nodelete-ossutil-test-dest"
uploadFileName = "ossutil_test.upload_file"
downloadFileName = "ossutil_test.download_file"
inputFileName = "ossutil_test.input_file"
content = "abc"
cm = CommandManager{}
out = os.Stdout
errout = os.Stderr
sleepTime = 5*time.Second
sleepTime = time.Second
)

var (
bucketNamePrefix = "ossutil-test-"
bucketNameExist = "nodelete-ossutil-test-normalcase1"
bucketNameDest = "nodelete-ossutil-test-dest" // bucket not change acl
bucketNameCP = "nodelete-ossutil-test-cp"
bucketNameBCP = "nodelete-ossutil-test-bcp"
bucketNameSetMeta = "nodelete-ossutil-test-setmeta"
bucketNameSetMeta1 = "nodelete-ossutil-test-setmeta1"
bucketNameSetACL = "nodelete-ossutil-test-setacl"
bucketNameSetACL1 = "nodelete-ossutil-test-setacl1"
bucketNameMB = "nodelete-ossutil-test-mb" // bucket with at most one object
bucketNameList = "nodelete-ossutil-test-list" // bucket with at most one object
bucketNameNotExist = bucketNamePrefix + "notexistbucket" // bucket not exist
)

// Run once when the suite starts running
Expand All @@ -61,35 +72,54 @@ func (s *OssutilCommandSuite) SetUpSuite(c *C) {
cm.Init()
s.configNonInteractive(c)
s.createFile(uploadFileName, content, c)
s.removeBuckets(bucketNamePrefix, c)
s.putBucket(bucketNameExist, c)
s.putBucket(bucketNameDest, c)
time.Sleep(sleepTime)
s.SetUpBucketEnv(c)
}

func SetUpCredential() {
if endpoint == "<testEndpoint>" {
endpoint = os.Getenv("OSS_TEST_ENDPOINT")
}
if strings.HasPrefix(endpoint, "https://") {
endpoint = endpoint[8:]
}
if strings.HasPrefix(endpoint, "http://") {
endpoint = endpoint[7:]
}
if accessKeyID == "<testAccessKeyID>" {
accessKeyID = os.Getenv("OSS_TEST_ACCESS_KEY_ID")
}
if accessKeySecret == "<testAccessKeySecret>" {
accessKeySecret = os.Getenv("OSS_TEST_ACCESS_KEY_SECRET")
}
if ue := os.Getenv("OSS_TEST_UPDATE_ENDPOINT"); ue != "" {
vUpdateEndpoint = ue
}
if ub := os.Getenv("OSS_TEST_UPDATE_BUCKET"); ub != "" {
vUpdateBucket = ub
}
if strings.HasPrefix(vUpdateEndpoint, "https://") {
vUpdateEndpoint = vUpdateEndpoint[8:]
}
if strings.HasPrefix(vUpdateEndpoint, "http://") {
vUpdateEndpoint = vUpdateEndpoint[7:]
}
}

func (s *OssutilCommandSuite) SetUpBucketEnv(c *C) {
s.removeBuckets(bucketNamePrefix, c)
time.Sleep(sleepTime)
for _, bucket := range []string{bucketNameExist, bucketNameDest, bucketNameCP, bucketNameBCP, bucketNameSetMeta, bucketNameSetMeta1, bucketNameSetACL, bucketNameSetACL1, bucketNameMB, bucketNameList} {
s.putBucket(bucket, c)
}
time.Sleep(3*sleepTime)
for _, bucket := range []string{bucketNameExist, bucketNameDest, bucketNameCP, bucketNameBCP, bucketNameSetMeta, bucketNameSetMeta1, bucketNameSetACL, bucketNameSetACL1, bucketNameMB, bucketNameList} {
s.removeObjects(bucket, "", true, true, c)
time.Sleep(7*time.Second)
}
}

// Run before each test or benchmark starts running
func (s *OssutilCommandSuite) TearDownSuite(c *C) {
testLogger.Println("test command completed")
s.removeBucket(bucketNameExist, true, c)
s.removeBucket(bucketNameDest, true, c)
s.removeBuckets(bucketNamePrefix, c)
_ = os.Remove(configFile)
_ = os.Remove(resultPath)
_ = os.Remove(uploadFileName)
Expand Down Expand Up @@ -196,7 +226,8 @@ func (s *OssutilCommandSuite) removeBucket(bucket string, clearObjects bool, c *
args := []string{CloudURLToString(bucket, "")}
showElapse, err := s.rawRemove(args, clearObjects, true, true)
if err != nil {
c.Assert(err.(oss.ServiceError).Code == "NoSuchBucket", Equals, true)
error := err.(BucketError).err
c.Assert(error.(oss.ServiceError).Code == "NoSuchBucket" || error.(oss.ServiceError).Code == "BucketNotEmpty", Equals, true)
c.Assert(showElapse, Equals, false)
} else {
c.Assert(showElapse, Equals, true)
Expand Down Expand Up @@ -485,7 +516,7 @@ func (s *OssutilCommandSuite) TestStorageURL(c *C) {
}

func (s *OssutilCommandSuite) TestErrOssDownloadFile(c *C) {
bucketName := bucketNamePrefix + "cmd"
bucketName := bucketNamePrefix + "b1"
bucket, err := copyCommand.command.ossBucket(bucketName)
c.Assert(err, IsNil)

Expand All @@ -502,3 +533,12 @@ func (s *OssutilCommandSuite) TestUserAgent(c *C) {
c.Assert(err, IsNil)
c.Assert(client, NotNil)
}


func (s *OssutilCommandSuite) TestParseAndRunCommand(c *C) {
args := []string{}
options := OptionMapType{}
showElapse, err := RunCommand(args, options)
c.Assert(err, IsNil)
c.Assert(showElapse, Equals, false)
}
10 changes: 5 additions & 5 deletions lib/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -332,9 +332,9 @@ func (cc *ConfigCommand) configInteractive(configFile, language string) error {
section.Add(OptionLanguage, language)
if _, err := os.Stat(configFile); err != nil {
if llanguage == LEnglishLanguage {
fmt.Printf("Please enter language(%s, the configuration will go into effect after the command successfully executed):", OptionMap[OptionLanguage].minVal)
fmt.Printf("Please enter language(%s, default is:%s, the configuration will go into effect after the command successfully executed):", OptionMap[OptionLanguage].minVal, DefaultLanguage)
} else {
fmt.Printf("请输入语言(%s,该配置项将在此次config命令成功结束后生效):", OptionMap[OptionLanguage].minVal)
fmt.Printf("请输入语言(%s,默认为:%s,该配置项将在此次config命令成功结束后生效):", OptionMap[OptionLanguage].minVal, DefaultLanguage)
}
if _, err := fmt.Scanln(&val); err == nil {
vals := strings.Split(OptionMap[OptionLanguage].minVal, "/")
Expand All @@ -359,11 +359,11 @@ func (cc *ConfigCommand) configInteractive(configFile, language string) error {

for _, sec := range []string{BucketEndpointSection, BucketCnameSection} {
if llanguage == LEnglishLanguage {
fmt.Printf("\nIs there any %s configurations(yes or no)?", sec)
fmt.Printf("\nIs there any %s configurations(y or N)?", sec)
} else {
fmt.Printf("\n是否需要配置:%s(y or n)?", sec)
fmt.Printf("\n是否需要配置:%s(y or N)?", sec)
}
if _, err := fmt.Scanln(&val); err == nil && (val == "yes" || val == "y") {
if _, err := fmt.Scanln(&val); err == nil && (strings.ToLower(val) == "yes" || strings.ToLower(val) == "y") {
section = config.NewSection(sec)
nameList := strings.SplitN(sec, "-", 2)
for {
Expand Down
Loading