Prefetch source code from github for nix build tool
Project description
Introduction
This module implements a python function and a command line tool to help you fetch sources from github when using fetchFromGitHub.
This program can be distributed under the conditions of the GNU Public License Version 3. Check out LICENSE.txt to read the license text.
Command Line Example
result/bin/nix-prefetch-github seppeljordan nix-prefetch-github
{ "owner": "seppeljordan", "repo": "nix-prefetch-github", "rev": "b89933bf5643c97f00c374b39af4f265eef83220", "hash": "sha256-8veCTba0fhHEUPLge58FfWlk6tnYfAL852AYXWLu4Ss=" }
Available Commands
nix-prefetch-github
This command downloads the code from a github repository and puts it into the local nix store. It also prints the function arguments to fetchFromGitHub to the standard output. :
usage: nix-prefetch-github [-h] [--fetch-submodules] [--no-fetch-submodules] [--leave-dot-git] [--no-leave-dot-git] [--deep-clone] [--no-deep-clone] [--verbose] [--quiet] [--nix] [--json] [--meta] [--version] [--rev REV] owner repo positional arguments: owner repo options: -h, --help show this help message and exit --fetch-submodules Include git submodules in the output derivation --no-fetch-submodules Don't include git submodules in output derivation --leave-dot-git Include .git folder in output derivation. Use this if you need repository data, e.g. current commit hash, for the build process. --no-leave-dot-git Don't include .git folder in output derivation. --deep-clone Include all of the repository history in the output derivation. This option implies --leave-dot-git. --no-deep-clone Don't include the repository history in the output derivation. --verbose, -v Print additional information about the programs execution. This is useful if you want to issue a bug report. --quiet, -q Print less information about the programs execution. --nix Output the results as valid nix code. --json Output the results in the JSON format --meta Output the results in JSON format where the arguments to fetchFromGitHub are located under the src key of the resulting json dictionary and meta information about the prefetched repository is located under the meta key of the output. --version show program's version number and exit --rev REV
nix-prefetch-github-directory
This command examins the current working directory and tries to figure out if it is part of a git repository linked to github. If this was successful the program prefetches the currently checked out commit from the origin remote repository similar to the command nix-prefetch-github.
usage: .nix-prefetch-github-directory-wrapped [-h] [--fetch-submodules] [--no-fetch-submodules] [--leave-dot-git] [--no-leave-dot-git] [--deep-clone] [--no-deep-clone] [--verbose] [--quiet] [--nix] [--json] [--meta] [--version] [--directory DIRECTORY] [--remote REMOTE] options: -h, --help show this help message and exit --fetch-submodules Include git submodules in the output derivation --no-fetch-submodules Don't include git submodules in output derivation --leave-dot-git Include .git folder in output derivation. Use this if you need repository data, e.g. current commit hash, for the build process. --no-leave-dot-git Don't include .git folder in output derivation. --deep-clone Include all of the repository history in the output derivation. This option implies --leave-dot-git. --no-deep-clone Don't include the repository history in the output derivation. --verbose, -v Print additional information about the programs execution. This is useful if you want to issue a bug report. --quiet, -q Print less information about the programs execution. --nix Output the results as valid nix code. --json Output the results in the JSON format --meta Output the results in JSON format where the arguments to fetchFromGitHub are located under the src key of the resulting json dictionary and meta information about the prefetched repository is located under the meta key of the output. --version show program's version number and exit --directory DIRECTORY --remote REMOTE
nix-prefetch-github-latest-release
This command fetches the code for the latest release of the specified repository.
usage: nix-prefetch-github-latest-release [-h] [--fetch-submodules] [--no-fetch-submodules] [--leave-dot-git] [--no-leave-dot-git] [--deep-clone] [--no-deep-clone] [--verbose] [--quiet] [--nix] [--json] [--meta] [--version] owner repo positional arguments: owner repo options: -h, --help show this help message and exit --fetch-submodules Include git submodules in the output derivation --no-fetch-submodules Don't include git submodules in output derivation --leave-dot-git Include .git folder in output derivation. Use this if you need repository data, e.g. current commit hash, for the build process. --no-leave-dot-git Don't include .git folder in output derivation. --deep-clone Include all of the repository history in the output derivation. This option implies --leave-dot-git. --no-deep-clone Don't include the repository history in the output derivation. --verbose, -v Print additional information about the programs execution. This is useful if you want to issue a bug report. --quiet, -q Print less information about the programs execution. --nix Output the results as valid nix code. --json Output the results in the JSON format --meta Output the results in JSON format where the arguments to fetchFromGitHub are located under the src key of the resulting json dictionary and meta information about the prefetched repository is located under the meta key of the output. --version show program's version number and exit
development environment
Use nix develop with flake support enabled. Development without nix flake support is not officially supported. Run the provided tests via pytest. You can control what kind of tests are run via the variable DISABLED_TESTS:
# Only run tests that don't hit network and don't use nix DISABLED_TESTS="network requires_nix_build" pytest
Currently network and requires_nix_build are the only values that make sense with this environment variable.
You can visualize the dependency graph of the individual python modules via the ./generate-dependency-graph program.
You can generate a coverage report for the tests via
coverage run -m nix_prefetch_github.run_tests && coverage html
changes
v7.1.0
Add -q / --quiet option to decrease logging verbosity
Add --meta option to include the commit timestamp of the latest prefetched commit in the output
Use content of =GITHUB_TOKEN= environment variable for authenticating with GitHub API
v7.0.0
The output format changed. In previous versions the json and nix output included sha256 as a field. This field was removed in favour of a hash field. The value of this field is an SRI hash.
v6.0.1
Fix bug in repository detection for nix-prefetch-github-directory
v6.0.0
Drop support for python3.8
Drop default arguments to fetchFromGitHub from json output (e.g. leaveDotGit = false;, fetchSubmodule = false;, deepClone = false;)
v5.2.2
Add more info to error messages
v5.2.1
Fixed a bug that broke the program for users without the experimental `nix-command` feature
v5.2.0
Emit warning if unsafe options –deep-clone and –leave-dot-git are used.
Improve –help output slightly
Declutter verbose logging output
v5.1.2
Use old prefetch implementation because of bug in nix-prefetch-git. See this github issue
v5.1.1
Fix bug that broke nix-prefetch-github --version
v5.1.0
Use nix-prefetch-git and nix-prefetch-url for calculating sha256 sums when possible. The application will fall back to the old method when nix-prefetch-* are not available.
v5.0.1
Fix breaking bug in hash generation
v5.0.0
Remove all dependencies to other python packages other than “core” ones
Allow users to control debugging output via the --verbosity cli option
All commands now understand --fetch-submodules and --no-fetch-submodules options
Commands now understand --leave-dot-git and --no-leave-dot-git options
Commands now understand --deep-clone and --no-deep-clone
v4.0.4
Print standard error output of subprocesses for better debugging
v4.0.3
Generated hashes now don’t have a “sha256-” prefix
jinja2 is no longer a dependency of nix-prefetch-github
v4.0.2
packaging release, no bugfixes or features
v4.0.1
Fix issue #38
v4.0
Make fetching submodules the default in calls to python routines. The CLI should be uneffected by this change.
Remove default values for fetch_submodules in all internal classes.
Implement nix-prefetch-github-latest-release command
v3.0
major changes to the internal module structure
introduction of the nix-prefetch-github-directory command
code repository now functions as a nix flake
v2.4
added --fetch-submodules flag
Fixed incompability with nix 2.4
v2.3.2
fix issues #21, #22
nix-prefetch-github now accepts full ref names, e.g. refs/heads/master which was broken since 2.3 (#23)
v2.3.1
Fix bug in generated nix expression
Fix bug that prevented targeting tags with prefetch command
Improve error message format in case revision is not found
v2.3
Remove dependency to requests
Default to master branch instead of first branch in list
v2.2
Add --version flag
Fix bug in output formatting
v2.1
Fix bug (#4) that made nix-prefetch-github incompatible with nix 2.2.
v2.0
The result of nixpretchgithub and its corresponding command line tool now contains always the actual commit hash as detected by the tool instead of the branch or tag name.
Add a new flag --nix that makes the command line tool output a valid nix expression
Removed the --hash-only and --no-hash-only flags and changed add --prefetch and --no-prefetch flags to replace them.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Hashes for nix-prefetch-github-7.1.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | ef63da34d1050d961c305a70863263d59f259020d3abef4e6e707800228f4001 |
|
MD5 | 6a124bc686e594f1e9d34ce240007c21 |
|
BLAKE2b-256 | 9c9073f7a3768f59a58c997593a4bb7fd2f2e778212ee273cd1e124c9a6130f6 |