def GetGsutilStateDir(): """Returns the location of the directory for gsutil state files. Certain operations, such as cross-process credential sharing and resumable transfer tracking, need a known location for state files which are created by gsutil as-needed. This location should only be used for storing data that is required to be in a static location. Returns: Path to directory for gsutil static state files. """ config_file_dir = config.get('GSUtil', 'state_dir', DEFAULT_GSUTIL_STATE_DIR) system_util.CreateDirIfNeeded(config_file_dir) return config_file_dir
def CheckAndMaybePromptForAnalyticsEnabling(): """Asks a user to opt-in to data collection if a UUID file does not exist. If the user agrees, generates a UUID file. Will not prompt if part of SDK. """ disable_prompt = boto.config.get_value('GSUtil', 'disable_analytics_prompt') if (not os.path.exists(_UUID_FILE_PATH) and not disable_prompt and not system_util.InvokedViaCloudSdk()): enable_analytics = input('\n' + textwrap.fill( 'gsutil developers rely on user feedback to make improvements to the ' 'tool. Would you like to send anonymous usage statistics to help ' 'improve gsutil? [y/N]') + ' ') text_to_write = _DISABLED_TEXT if enable_analytics.lower()[0] == 'y': text_to_write = uuid.uuid4().hex system_util.CreateDirIfNeeded(os.path.dirname(_UUID_FILE_PATH)) with open(_UUID_FILE_PATH, 'w') as f: f.write(text_to_write)
def GetTabCompletionCacheFilename(): tab_completion_dir = os.path.join(GetGsutilStateDir(), 'tab-completion') # Limit read permissions on the directory to owner for privacy. system_util.CreateDirIfNeeded(tab_completion_dir, mode=0o700) return os.path.join(tab_completion_dir, 'cache')