mirror of
https://github.com/josegonzalez/python-github-backup.git
synced 2025-12-05 16:18:02 +01:00
Merge pull request #1 from QuicketSolutions/QKT-42
QKT-42: support saving release information
This commit is contained in:
@@ -303,6 +303,11 @@ def parse_args():
|
|||||||
parser.add_argument('--keychain-account',
|
parser.add_argument('--keychain-account',
|
||||||
dest='osx_keychain_item_account',
|
dest='osx_keychain_item_account',
|
||||||
help='OSX ONLY: account field of password item in OSX keychain that holds the personal access or OAuth token')
|
help='OSX ONLY: account field of password item in OSX keychain that holds the personal access or OAuth token')
|
||||||
|
parser.add_argument('--include-releases',
|
||||||
|
action='store_true',
|
||||||
|
dest='include_releases',
|
||||||
|
help='include release information, not including assets or binaries'
|
||||||
|
)
|
||||||
return parser.parse_args()
|
return parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
@@ -699,6 +704,9 @@ def backup_repositories(args, output_directory, repositories):
|
|||||||
if args.include_hooks or args.include_everything:
|
if args.include_hooks or args.include_everything:
|
||||||
backup_hooks(args, repo_cwd, repository, repos_template)
|
backup_hooks(args, repo_cwd, repository, repos_template)
|
||||||
|
|
||||||
|
if args.include_releases or args.include_everything:
|
||||||
|
backup_releases(args, repo_cwd, repository, repos_template)
|
||||||
|
|
||||||
if args.incremental:
|
if args.incremental:
|
||||||
open(last_update_path, 'w').write(last_update)
|
open(last_update_path, 'w').write(last_update)
|
||||||
|
|
||||||
@@ -880,6 +888,28 @@ def backup_hooks(args, repo_cwd, repository, repos_template):
|
|||||||
log_info("Unable to read hooks, skipping")
|
log_info("Unable to read hooks, skipping")
|
||||||
|
|
||||||
|
|
||||||
|
def backup_releases(args, repo_cwd, repository, repos_template):
|
||||||
|
repository_fullname = repository['full_name']
|
||||||
|
|
||||||
|
# give release files somewhere to live & log intent
|
||||||
|
release_cwd = os.path.join(repo_cwd, 'releases')
|
||||||
|
log_info('Retrieving {0} releases'.format(repository_fullname))
|
||||||
|
mkdir_p(repo_cwd, release_cwd)
|
||||||
|
|
||||||
|
query_args = {}
|
||||||
|
|
||||||
|
_release_template = '{0}/{1}/releases'.format(repos_template, repository_fullname)
|
||||||
|
_releases = retrieve_data(args, _release_template, query_args=query_args)
|
||||||
|
|
||||||
|
# for each release, store it
|
||||||
|
log_info('Saving {0} releases to disk'.format(len(_releases)))
|
||||||
|
for release in _releases:
|
||||||
|
release_name = release['tag_name']
|
||||||
|
output_filepath = os.path.join(release_cwd, '{0}.json'.format(release_name))
|
||||||
|
with codecs.open(output_filepath, 'w+', encoding='utf-8') as f:
|
||||||
|
json_dump(release, f)
|
||||||
|
|
||||||
|
|
||||||
def fetch_repository(name,
|
def fetch_repository(name,
|
||||||
remote_url,
|
remote_url,
|
||||||
local_dir,
|
local_dir,
|
||||||
|
|||||||
Reference in New Issue
Block a user