mirror of
https://github.com/GAM-team/GAM.git
synced 2026-07-04 04:41:35 +00:00
Compare commits
7 Commits
v7.03.07
...
20250212.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e1f8969352 | ||
|
|
76aa1d1cdd | ||
|
|
7bdee0927a | ||
|
|
b18d8a0107 | ||
|
|
5ed5540746 | ||
|
|
0a9ea7fc83 | ||
|
|
7ece7a0a1a |
13
.github/workflows/build.yml
vendored
13
.github/workflows/build.yml
vendored
@@ -5,6 +5,7 @@ on:
|
|||||||
pull_request:
|
pull_request:
|
||||||
schedule:
|
schedule:
|
||||||
- cron: '37 22 * * *'
|
- cron: '37 22 * * *'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -756,7 +757,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Attest that gam package files were generated from this Action
|
- name: Attest that gam package files were generated from this Action
|
||||||
uses: actions/attest-build-provenance@v1
|
uses: actions/attest-build-provenance@v1
|
||||||
if: (github.event_name == 'push' || github.event_name == 'schedule') && matrix.goal == 'build'
|
if: (github.event_name == 'push' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') && matrix.goal == 'build'
|
||||||
with:
|
with:
|
||||||
subject-path: |
|
subject-path: |
|
||||||
gam*.tar.xz
|
gam*.tar.xz
|
||||||
@@ -765,7 +766,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Archive production artifacts
|
- name: Archive production artifacts
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
if: (github.event_name == 'push' || github.event_name == 'schedule') && matrix.goal != 'test'
|
if: (github.event_name == 'push' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') && matrix.goal != 'test'
|
||||||
with:
|
with:
|
||||||
name: gam-binaries-${{ env.GAMOS }}-${{ env.arch }}-${{ matrix.jid }}
|
name: gam-binaries-${{ env.GAMOS }}-${{ env.arch }}-${{ matrix.jid }}
|
||||||
path: |
|
path: |
|
||||||
@@ -793,8 +794,8 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
echo "We successfully compiled Python ${this_python} and OpenSSL ${this_openssl}"
|
echo "We successfully compiled Python ${this_python} and OpenSSL ${this_openssl}"
|
||||||
|
|
||||||
- name: Live API tests push only
|
- name: Live API tests
|
||||||
if: (github.event_name == 'push' || github.event_name == 'schedule')
|
if: (github.event_name == 'push' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch')
|
||||||
run: |
|
run: |
|
||||||
export gam_user="gam-gha-${JID}@pdl.jaylee.us"
|
export gam_user="gam-gha-${JID}@pdl.jaylee.us"
|
||||||
echo "gam_user=${gam_user}" >> $GITHUB_ENV
|
echo "gam_user=${gam_user}" >> $GITHUB_ENV
|
||||||
@@ -1004,7 +1005,7 @@ jobs:
|
|||||||
tar cJvvf cache.tar.xz $tar_folders
|
tar cJvvf cache.tar.xz $tar_folders
|
||||||
|
|
||||||
merge:
|
merge:
|
||||||
if: (github.event_name == 'push' || github.event_name == 'schedule')
|
if: (github.event_name == 'push' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch')
|
||||||
runs-on: ubuntu-24.04
|
runs-on: ubuntu-24.04
|
||||||
needs: build
|
needs: build
|
||||||
permissions:
|
permissions:
|
||||||
@@ -1018,7 +1019,7 @@ jobs:
|
|||||||
pattern: gam-binaries-*
|
pattern: gam-binaries-*
|
||||||
|
|
||||||
publish:
|
publish:
|
||||||
if: github.event_name == 'push'
|
if: (github.event_name == 'push' || github.event_name == 'workflow_dispatch')
|
||||||
runs-on: ubuntu-24.04
|
runs-on: ubuntu-24.04
|
||||||
needs: merge
|
needs: merge
|
||||||
permissions:
|
permissions:
|
||||||
|
|||||||
1
.github/workflows/pypi.yml
vendored
1
.github/workflows/pypi.yml
vendored
@@ -3,6 +3,7 @@ on:
|
|||||||
push:
|
push:
|
||||||
tags:
|
tags:
|
||||||
- 'v[0-9]+.[0-9]+.[0-9]+'
|
- 'v[0-9]+.[0-9]+.[0-9]+'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
pypi:
|
pypi:
|
||||||
|
|||||||
@@ -1,29 +1,54 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "gam7"
|
name = "gam7"
|
||||||
dynamic = [
|
dynamic = [
|
||||||
"dependencies",
|
|
||||||
"version",
|
"version",
|
||||||
]
|
]
|
||||||
authors = [
|
authors = [
|
||||||
{ name="Jay Lee", email="jay0lee@gmail.com" },
|
{ name="Jay Lee", email="jay0lee@gmail.com" },
|
||||||
{ name="Ross Scroggs", email="Ross.Scroggs@gmail.com" },
|
{ name="Ross Scroggs", email="Ross.Scroggs@gmail.com" },
|
||||||
]
|
]
|
||||||
|
dependencies = [
|
||||||
|
"chardet",
|
||||||
|
"cryptography",
|
||||||
|
"distro; sys_platform=='linux'",
|
||||||
|
"filelock",
|
||||||
|
"google-api-python-client>=2.1",
|
||||||
|
"google-auth-httplib2",
|
||||||
|
"google-auth-oauthlib>=0.4.1",
|
||||||
|
"google-auth>=2.3.2",
|
||||||
|
"httplib2>=0.17.0",
|
||||||
|
"lxml",
|
||||||
|
"passlib>=1.7.2",
|
||||||
|
"pathvalidate",
|
||||||
|
"python-dateutil",
|
||||||
|
]
|
||||||
description = "CLI tool to manage Google Workspace"
|
description = "CLI tool to manage Google Workspace"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.9"
|
requires-python = ">=3.9"
|
||||||
classifiers = [
|
classifiers = [
|
||||||
"Programming Language :: Python :: 3",
|
"Programming Language :: Python :: 3",
|
||||||
|
"Programming Language :: Python :: 3 :: Only",
|
||||||
|
"Programming Language :: Python :: 3.9",
|
||||||
|
"Programming Language :: Python :: 3.10",
|
||||||
|
"Programming Language :: Python :: 3.11",
|
||||||
|
"Programming Language :: Python :: 3.12",
|
||||||
|
"Programming Language :: Python :: 3.13",
|
||||||
"Operating System :: OS Independent",
|
"Operating System :: OS Independent",
|
||||||
]
|
]
|
||||||
license = {text = "Apache License (2.0)"}
|
license = {text = "Apache License (2.0)"}
|
||||||
license-files = ["LICEN[CS]E*"]
|
license-files = ["LICEN[CS]E*"]
|
||||||
|
|
||||||
|
[project.optional-dependencies]
|
||||||
|
yubikey = ["yubikey-manager>=5.0"]
|
||||||
|
|
||||||
[project.scripts]
|
[project.scripts]
|
||||||
gam = "gam.__main__:main"
|
gam = "gam.__main__:main"
|
||||||
|
|
||||||
[project.urls]
|
[project.urls]
|
||||||
Homepage = "https://github.com/GAM-team/GAM"
|
Homepage = "https://github.com/GAM-team/GAM"
|
||||||
Issues = "https://github.com/GAM-team/GAM/issues"
|
Issues = "https://github.com/GAM-team/GAM/issues"
|
||||||
|
Discussion = "https://groups.google.com/group/google-apps-manager"
|
||||||
|
Chat = "https://git.io/gam-chat"
|
||||||
|
|
||||||
[tool.hatch.version]
|
[tool.hatch.version]
|
||||||
path = "src/gam/__init__.py"
|
path = "src/gam/__init__.py"
|
||||||
@@ -31,12 +56,8 @@ path = "src/gam/__init__.py"
|
|||||||
[tool.hatch.build.targets.wheel]
|
[tool.hatch.build.targets.wheel]
|
||||||
packages = ["src/gam"]
|
packages = ["src/gam"]
|
||||||
|
|
||||||
[tool.hatch.metadata.hooks.requirements_txt]
|
|
||||||
files = ["src/requirements.txt"]
|
|
||||||
|
|
||||||
[build-system]
|
[build-system]
|
||||||
requires = [
|
requires = [
|
||||||
"hatchling",
|
"hatchling",
|
||||||
"hatch-requirements_txt",
|
|
||||||
]
|
]
|
||||||
build-backend = "hatchling.build"
|
build-backend = "hatchling.build"
|
||||||
|
|||||||
@@ -4742,41 +4742,6 @@ gam <UserTypeEntity> sendemail from <EmailAddress>
|
|||||||
[newuser <EmailAddress> firstname|givenname <String> lastname|familyname <string> password <Password>]
|
[newuser <EmailAddress> firstname|givenname <String> lastname|familyname <string> password <Password>]
|
||||||
(<SMTPDateHeader> <Time>)* (<SMTPHeader> <String>)* (header <String> <String>)*
|
(<SMTPDateHeader> <Time>)* (<SMTPHeader> <String>)* (header <String> <String>)*
|
||||||
|
|
||||||
# Sites
|
|
||||||
|
|
||||||
<SiteACLRole> ::= editor|owner|reader|writer
|
|
||||||
<SiteACLRoleList> ::= "<SiteACLRole>(,<SiteACLRole>)*"
|
|
||||||
|
|
||||||
<SiteACLScope> ::=
|
|
||||||
<EmailAddress>|user:<EmailAddress>|group:<EmailAddress>|domain:<DomainName>|domain|default
|
|
||||||
<SiteACLScopeList> ::= "<SiteACLScope>(,<SiteACLScope>)*"
|
|
||||||
<SiteACLScopeEntity> ::=
|
|
||||||
<SiteACLScopeList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
|
||||||
|
|
||||||
<SiteAttribute> ::=
|
|
||||||
(categories <String>)|
|
|
||||||
(name <String>)|
|
|
||||||
(sourcelink <URI>])|
|
|
||||||
(summary <String>)|
|
|
||||||
(theme <String>)
|
|
||||||
|
|
||||||
gam [<UserTypeEntity>] create|add site <SiteItem> <SiteAttribute>*
|
|
||||||
gam [<UserTypeEntity>] update sites <SiteEntity> <SiteAttribute>+
|
|
||||||
gam [<UserTypeEntity>] info sites <SiteEntity> [withmappings] [role|roles all|<SiteACLRoleList>]
|
|
||||||
gam [<UserTypeEntity>] show sites [domain|domains <DomainNameEntity>] [includeallsites]
|
|
||||||
[withmappings] [role|roles all|<SiteACLRoleList>] [startindex <Number>] [maxresults <Number>]
|
|
||||||
gam [<UserTypeEntity>] print sites [todrive <ToDriveAttribute>*] [domain|domains <DomainNameEntity>] [includeallsites]
|
|
||||||
[withmappings] [role|roles all|<SiteACLRoleList>] [startindex <Number>] [maxresults <Number>] [convertcrnl] [delimiter <Character>]
|
|
||||||
|
|
||||||
gam [<UserTypeEntity>] print siteactivity <SiteEntity> [todrive <ToDriveAttribute>*] [startindex <Number>] [maxresults <Number>] [updated_min <Date>] [updated_max <Date>]
|
|
||||||
|
|
||||||
gam [<UserTypeEntity>] create|add siteacls <SiteEntity> <SiteACLRole> <SiteACLScopeEntity>
|
|
||||||
gam [<UserTypeEntity>] update siteacls <SiteEntity> <SiteACLRole> <SiteACLScopeEntity>
|
|
||||||
gam [<UserTypeEntity>] delete siteacls <SiteEntity> <SiteACLScopeEntity>
|
|
||||||
gam [<UserTypeEntity>] info siteacls <SiteEntity> <SiteACLScopeEntity>
|
|
||||||
gam [<UserTypeEntity>] show siteacls <SiteEntity>
|
|
||||||
gam [<UserTypeEntity>] print siteacls <SiteEntity> [todrive <ToDriveAttribute>*]
|
|
||||||
|
|
||||||
# Shared Drives - Administrator
|
# Shared Drives - Administrator
|
||||||
|
|
||||||
<SharedDriveFieldName> ::=
|
<SharedDriveFieldName> ::=
|
||||||
@@ -7606,6 +7571,7 @@ gam <UserTypeEntity> show messages|threads
|
|||||||
[countsonly|positivecountsonly] [useronly]
|
[countsonly|positivecountsonly] [useronly]
|
||||||
[headers all|<SMTPHeaderList>] [dateheaderformat iso|rfc2822|<String>] [dateheaderconverttimezone [<Boolean>]]
|
[headers all|<SMTPHeaderList>] [dateheaderformat iso|rfc2822|<String>] [dateheaderconverttimezone [<Boolean>]]
|
||||||
[showlabels] [delimiter <Character>] [showbody] [showhtml] [showdate] [showsize] [showsnippet]
|
[showlabels] [delimiter <Character>] [showbody] [showhtml] [showdate] [showsize] [showsnippet]
|
||||||
|
[maxmessagesperthread <Number>]
|
||||||
[[attachmentnamepattern <RegularExpression>]
|
[[attachmentnamepattern <RegularExpression>]
|
||||||
[showattachments [noshowtextplain]]
|
[showattachments [noshowtextplain]]
|
||||||
[saveattachments [targetfolder <FilePath>] [overwrite [<Boolean>]]]
|
[saveattachments [targetfolder <FilePath>] [overwrite [<Boolean>]]]
|
||||||
@@ -7617,6 +7583,7 @@ gam <UserTypeEntity> print messages|threads [todrive <ToDriveAttribute>*]
|
|||||||
[countsonly|positivecountsonly] [useronly]
|
[countsonly|positivecountsonly] [useronly]
|
||||||
[headers all|<SMTPHeaderList>] [dateheaderformat iso|rfc2822|<String> [dateheaderconverttimezone [<Boolean>]]]
|
[headers all|<SMTPHeaderList>] [dateheaderformat iso|rfc2822|<String> [dateheaderconverttimezone [<Boolean>]]]
|
||||||
[showlabels] [delimiter <Character>] [showbody] [showhtml] [showdate] [showsize] [showsnippet]
|
[showlabels] [delimiter <Character>] [showbody] [showhtml] [showdate] [showsize] [showsnippet]
|
||||||
|
[maxmessagesperthread <Number>]
|
||||||
[convertcrnl] [delimiter <Character>]
|
[convertcrnl] [delimiter <Character>]
|
||||||
[[attachmentnamepattern <RegularExpression>]
|
[[attachmentnamepattern <RegularExpression>]
|
||||||
[showattachments [noshowtextplain]]]
|
[showattachments [noshowtextplain]]]
|
||||||
|
|||||||
@@ -1,3 +1,50 @@
|
|||||||
|
7.04.00
|
||||||
|
|
||||||
|
The Classic Sites API no longer functions, the following commands are deprecated:
|
||||||
|
```
|
||||||
|
gam [<UserTypeEntity>] create site
|
||||||
|
gam [<UserTypeEntity>] update site
|
||||||
|
gam [<UserTypeEntity>] info site
|
||||||
|
gam [<UserTypeEntity>] print sites
|
||||||
|
gam [<UserTypeEntity>] show sites
|
||||||
|
gam [<UserTypeEntity>] create siteacls
|
||||||
|
gam [<UserTypeEntity>] update siteacls
|
||||||
|
gam [<UserTypeEntity>] delete siteacls
|
||||||
|
gam [<UserTypeEntity>] info siteacls
|
||||||
|
gam [<UserTypeEntity>] show siteacls
|
||||||
|
gam [<UserTypeEntity>] print siteacls
|
||||||
|
gam [<UserTypeEntity>] print siteactivity
|
||||||
|
```
|
||||||
|
|
||||||
|
7.03.09
|
||||||
|
|
||||||
|
Added option `maxmessagesperthread <Number>` to `gam <UserTypeEntity> print|show threads`
|
||||||
|
that limits the number of messages displayed per thread. The default is 0, there is no limit.
|
||||||
|
For example, this can be used if you only want to see the first message of each thread.
|
||||||
|
```
|
||||||
|
gam user user@domain.com print|show threads maxmessagesperthread 1
|
||||||
|
```
|
||||||
|
|
||||||
|
Fixed bug in `gam <UserTypeEntity> print filelist countsonly` where extraneous columns
|
||||||
|
were displayed.
|
||||||
|
|
||||||
|
Fixed bug in `gam <UserTypeEntity> print filelist countsonly showsize` where sizes were
|
||||||
|
all shown as 0 unless`sizefield size` was specified.
|
||||||
|
|
||||||
|
7.03.08
|
||||||
|
|
||||||
|
Improved pip install.
|
||||||
|
|
||||||
|
Yubikey as optional should now be working also. So:
|
||||||
|
|
||||||
|
pip install --upgrade gam7
|
||||||
|
|
||||||
|
skips Yubikey.
|
||||||
|
|
||||||
|
To install with yubikey support (assuming you have installed the necessary swig and libpcsclite-dev packages already) run:
|
||||||
|
|
||||||
|
pip install --upgrade gam7[yubikey]
|
||||||
|
|
||||||
7.03.07
|
7.03.07
|
||||||
|
|
||||||
Updated `gam create vaultexport` to include `corpus gemini`.
|
Updated `gam create vaultexport` to include `corpus gemini`.
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -89,7 +89,6 @@ SERVICEMANAGEMENT = 'servicemanagement'
|
|||||||
SERVICEUSAGE = 'serviceusage'
|
SERVICEUSAGE = 'serviceusage'
|
||||||
SHEETS = 'sheets'
|
SHEETS = 'sheets'
|
||||||
SHEETSTD = 'sheetstd'
|
SHEETSTD = 'sheetstd'
|
||||||
SITES = 'sites'
|
|
||||||
SITEVERIFICATION = 'siteVerification'
|
SITEVERIFICATION = 'siteVerification'
|
||||||
STORAGE = 'storage'
|
STORAGE = 'storage'
|
||||||
STORAGEREAD = 'storageread'
|
STORAGEREAD = 'storageread'
|
||||||
@@ -266,7 +265,6 @@ _INFO = {
|
|||||||
SERVICEUSAGE: {'name': 'Service Usage API', 'version': 'v1', 'v2discovery': True},
|
SERVICEUSAGE: {'name': 'Service Usage API', 'version': 'v1', 'v2discovery': True},
|
||||||
SHEETS: {'name': 'Sheets API', 'version': 'v4', 'v2discovery': True},
|
SHEETS: {'name': 'Sheets API', 'version': 'v4', 'v2discovery': True},
|
||||||
SHEETSTD: {'name': 'Sheets API - todrive', 'version': 'v4', 'v2discovery': True, 'mappedAPI': SHEETS},
|
SHEETSTD: {'name': 'Sheets API - todrive', 'version': 'v4', 'v2discovery': True, 'mappedAPI': SHEETS},
|
||||||
SITES: {'name': 'Sites API', 'version': 'v1', 'v2discovery': False},
|
|
||||||
SITEVERIFICATION: {'name': 'Site Verification API', 'version': 'v1', 'v2discovery': True},
|
SITEVERIFICATION: {'name': 'Site Verification API', 'version': 'v1', 'v2discovery': True},
|
||||||
STORAGE: {'name': 'Cloud Storage API', 'version': 'v1', 'v2discovery': True},
|
STORAGE: {'name': 'Cloud Storage API', 'version': 'v1', 'v2discovery': True},
|
||||||
STORAGEREAD: {'name': 'Cloud Storage API - Read', 'version': 'v1', 'v2discovery': True, 'mappedAPI': STORAGE},
|
STORAGEREAD: {'name': 'Cloud Storage API - Read', 'version': 'v1', 'v2discovery': True, 'mappedAPI': STORAGE},
|
||||||
@@ -500,11 +498,6 @@ _CLIENT_SCOPES = [
|
|||||||
'subscopes': [],
|
'subscopes': [],
|
||||||
'offByDefault': True,
|
'offByDefault': True,
|
||||||
'scope': 'https://www.googleapis.com/auth/siteverification'},
|
'scope': 'https://www.googleapis.com/auth/siteverification'},
|
||||||
{'name': 'Sites API',
|
|
||||||
'api': SITES,
|
|
||||||
'subscopes': [],
|
|
||||||
'offByDefault': True,
|
|
||||||
'scope': 'https://sites.google.com/feeds'},
|
|
||||||
{'name': 'Vault API',
|
{'name': 'Vault API',
|
||||||
'api': VAULT,
|
'api': VAULT,
|
||||||
'subscopes': READONLY,
|
'subscopes': READONLY,
|
||||||
@@ -694,10 +687,6 @@ _SVCACCT_SCOPES = [
|
|||||||
'api': SHEETS,
|
'api': SHEETS,
|
||||||
'subscopes': READONLY,
|
'subscopes': READONLY,
|
||||||
'scope': 'https://www.googleapis.com/auth/spreadsheets'},
|
'scope': 'https://www.googleapis.com/auth/spreadsheets'},
|
||||||
{'name': 'Sites API',
|
|
||||||
'api': SITES,
|
|
||||||
'subscopes': [],
|
|
||||||
'scope': 'https://sites.google.com/feeds'},
|
|
||||||
{'name': 'Tasks API',
|
{'name': 'Tasks API',
|
||||||
'api': TASKS,
|
'api': TASKS,
|
||||||
'subscopes': READONLY,
|
'subscopes': READONLY,
|
||||||
|
|||||||
@@ -1150,6 +1150,10 @@ class GamCLArgs():
|
|||||||
return f'Command: {self.QuotedArgumentList(self.argv[:self.argvI])} >>>{self.QuotedArgumentList([self.argv[self.argvI]])}<<< {self.QuotedArgumentList(self.argv[self.argvI+1:])}\n'
|
return f'Command: {self.QuotedArgumentList(self.argv[:self.argvI])} >>>{self.QuotedArgumentList([self.argv[self.argvI]])}<<< {self.QuotedArgumentList(self.argv[self.argvI+1:])}\n'
|
||||||
return f'Command: {self.QuotedArgumentList(self.argv)} >>><<<\n'
|
return f'Command: {self.QuotedArgumentList(self.argv)} >>><<<\n'
|
||||||
|
|
||||||
|
# Deprecated command
|
||||||
|
def CommandDeprecated(self):
|
||||||
|
return f'{self.QuotedArgumentList(self.argv)}\n'
|
||||||
|
|
||||||
# Peek to see if next argument is in choices
|
# Peek to see if next argument is in choices
|
||||||
def PeekArgumentPresent(self, choices):
|
def PeekArgumentPresent(self, choices):
|
||||||
if self.ArgumentsRemaining():
|
if self.ArgumentsRemaining():
|
||||||
|
|||||||
@@ -342,8 +342,6 @@ class GamEntity():
|
|||||||
SHEET = 'shet'
|
SHEET = 'shet'
|
||||||
SHEET_ID = 'shti'
|
SHEET_ID = 'shti'
|
||||||
SIGNATURE = 'sign'
|
SIGNATURE = 'sign'
|
||||||
SITE = 'site'
|
|
||||||
SITE_ACL = 'sacl'
|
|
||||||
SIZE = 'size'
|
SIZE = 'size'
|
||||||
SKU = 'sku '
|
SKU = 'sku '
|
||||||
SMIME_ID = 'smid'
|
SMIME_ID = 'smid'
|
||||||
@@ -695,8 +693,6 @@ class GamEntity():
|
|||||||
SHEET: ['Sheets', 'Sheet'],
|
SHEET: ['Sheets', 'Sheet'],
|
||||||
SHEET_ID: ['Sheet IDs', 'Sheet ID'],
|
SHEET_ID: ['Sheet IDs', 'Sheet ID'],
|
||||||
SIGNATURE: ['Signatures', 'Signature'],
|
SIGNATURE: ['Signatures', 'Signature'],
|
||||||
SITE: ['Sites', 'Site'],
|
|
||||||
SITE_ACL: ['Site ACLs', 'Site ACL'],
|
|
||||||
SIZE: ['Sizes', 'Size'],
|
SIZE: ['Sizes', 'Size'],
|
||||||
SKU: ['SKUs', 'SKU'],
|
SKU: ['SKUs', 'SKU'],
|
||||||
SMIME_ID: ['S/MIME Certificate IDs', 'S/MIME Certificate ID'],
|
SMIME_ID: ['S/MIME Certificate IDs', 'S/MIME Certificate ID'],
|
||||||
|
|||||||
@@ -23,8 +23,10 @@
|
|||||||
# The following GM_XXX constants are arbitrary but must be unique
|
# The following GM_XXX constants are arbitrary but must be unique
|
||||||
# Most errors print a message and bail out with a return code
|
# Most errors print a message and bail out with a return code
|
||||||
# Some commands want to set a non-zero return code but not bail
|
# Some commands want to set a non-zero return code but not bail
|
||||||
# GAM admin user
|
# GAM admin user from oauth2.txt or oauth2service.json
|
||||||
ADMIN = 'admin'
|
ADMIN = 'admn'
|
||||||
|
# Drive service for admin; used to look up Shared Drive Names
|
||||||
|
ADMIN_DRIVE = 'addr'
|
||||||
# Number/length of API call retries
|
# Number/length of API call retries
|
||||||
API_CALLS_RETRY_DATA = 'rtry'
|
API_CALLS_RETRY_DATA = 'rtry'
|
||||||
# GAM cache directory. If no_cache is True, this variable will be set to None
|
# GAM cache directory. If no_cache is True, this variable will be set to None
|
||||||
@@ -215,6 +217,7 @@ REDIRECT_QUEUE_EOF = 'eof'
|
|||||||
#
|
#
|
||||||
Globals = {
|
Globals = {
|
||||||
ADMIN: None,
|
ADMIN: None,
|
||||||
|
ADMIN_DRIVE: None,
|
||||||
API_CALLS_RETRY_DATA: {},
|
API_CALLS_RETRY_DATA: {},
|
||||||
CACHE_DIR: None,
|
CACHE_DIR: None,
|
||||||
CACHE_DISCOVERY_ONLY: True,
|
CACHE_DISCOVERY_ONLY: True,
|
||||||
|
|||||||
@@ -481,6 +481,7 @@ SERVICE_NOT_APPLICABLE = 'Service not applicable/Does not exist'
|
|||||||
SERVICE_NOT_APPLICABLE_THIS_ADDRESS = 'Service not applicable for this address: {0}'
|
SERVICE_NOT_APPLICABLE_THIS_ADDRESS = 'Service not applicable for this address: {0}'
|
||||||
SERVICE_NOT_ENABLED = '{0} Service/App not enabled'
|
SERVICE_NOT_ENABLED = '{0} Service/App not enabled'
|
||||||
SHORTCUT_TARGET_CAPABILITY_IS_FALSE = '{0} capability {1} is False'
|
SHORTCUT_TARGET_CAPABILITY_IS_FALSE = '{0} capability {1} is False'
|
||||||
|
SITES_COMMAND_DEPRECATED = 'The Classic Sites API is deprecated, this command will not work:\n{0}'
|
||||||
SKU_HAS_NO_MATCHING_ARCHIVED_USER_SKU = 'SKU {0} has no matching Archived User SKU'
|
SKU_HAS_NO_MATCHING_ARCHIVED_USER_SKU = 'SKU {0} has no matching Archived User SKU'
|
||||||
STARTING_THREAD = 'Starting thread'
|
STARTING_THREAD = 'Starting thread'
|
||||||
STATISTICS_COPY_FILE = 'Total: {0}, Copied: {1}, Shortcut created {2}, Shortcut exists {3}, Duplicate: {4}, Copy Failed: {5}, Not copyable: {6}, In skipids: {7}, Permissions Failed: {8}, Protected Ranges Failed: {9}'
|
STATISTICS_COPY_FILE = 'Total: {0}, Copied: {1}, Shortcut created {2}, Shortcut exists {3}, Duplicate: {4}, Copy Failed: {5}, Not copyable: {6}, In skipids: {7}, Permissions Failed: {8}, Protected Ranges Failed: {9}'
|
||||||
|
|||||||
Reference in New Issue
Block a user