{"id":14968630,"url":"https://github.com/moreonion/drupy","last_synced_at":"2025-10-30T01:30:48.822Z","repository":{"id":49724553,"uuid":"14083107","full_name":"moreonion/drupy","owner":"moreonion","description":"Drupal site-builder based on JSON-recipes","archived":false,"fork":false,"pushed_at":"2024-11-11T15:44:58.000Z","size":144,"stargazers_count":5,"open_issues_count":2,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-02-02T05:51:13.649Z","etag":null,"topics":["drupal7","drush"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/moreonion.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-11-03T09:46:54.000Z","updated_at":"2024-11-11T15:43:17.000Z","dependencies_parsed_at":"2024-01-15T12:43:20.214Z","dependency_job_id":"ba78a510-e311-4b5c-b29d-cc7d7c8a21b7","html_url":"https://github.com/moreonion/drupy","commit_stats":{"total_commits":71,"total_committers":4,"mean_commits":17.75,"dds":0.04225352112676062,"last_synced_commit":"8ae08742c836753c401dbd8242ea1345bd656a0f"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moreonion%2Fdrupy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moreonion%2Fdrupy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moreonion%2Fdrupy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moreonion%2Fdrupy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/moreonion","download_url":"https://codeload.github.com/moreonion/drupy/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238920635,"owners_count":19552671,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["drupal7","drush"],"created_at":"2024-09-24T13:40:19.639Z","updated_at":"2025-10-30T01:30:48.502Z","avatar_url":"https://github.com/moreonion.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# drupy\n\nA multisite capable Drupal site-builder based on JSON-recipes.\n\n## Features\n\n-   Download and extract packages, prepare a Drupal tree and run \"drush\n    site-install\" all from the same set of configuration files.\n-   Package lists and site-configurations are pure JSON (ie. easy\n    machine-generateable).\n-   configuration files can \"include\" other json-files (even remote\n    files).\n-   Built-in support for multisite installations (optimized for sharing\n    code in a manageable way).\n-   Install files from: git repositores, tarballs, local directories,\n    copy files, patches\n-   Fast: if you change only one project (ie. add a patch) only this\n    project is rebuilt.\n-   Use hashes to check the integrity of downloaded files.\n\n## Requirements\n\n-   Python3\n-   git\n-   drush (for running site-install)\n-   rsync\n-   A symlink capable file-system\n\n## FAQ\n\n-   **Why not simply use drush make?** For our multi-site setup we'd\n    like a directory structure that looks something like:\n```\nprojects/  # packages\n  module1-7.x-1.0/   # code of module1\n  module1-7.x-2.1/   # another version of module1\n  somesite/          # code of the custom somesite projects\n  theproject/        # another custom project with a install_profile\nhtdocs/    # drupal-root\n  profiles/\n  theproject/ -\u003e ../../projects/theproject\n  minimal/\n  standard/\n  testing/\n\n  sites/\n    somesite/\n    modules/         # symlinks to projects in the projects sub-folder\n      contrib/       # only one copy of a module per version.\n        module1 -\u003e ../../../../../projects/module1-7.x-1.0\n        …\n\n    themes/\n      contrib/\n        theme1 -\u003e ../../../../../projects/theme1-7.x-1.0\n        …\n\n  othersite/\n    modules/\n    contrib/         # allow different versions of a module per site\n      module1 -\u003e ../../../../../projects/module1-7.x-2.0\n```\n    Directory layouts like this seems rather cumbersome with drush make\n    which seems to be a bit biased towards a one-drupal-tree-per-site\n    approach of hosting.\n\n-   **Why not use sites/all/ for code-sharing?** sites/all/ doesn't\n    allow us to update modules site by site. If an module has an\n    update-hook (ie. brings down your site until drush updb is run) you\n    have to update the module-code. Then you need to run drush updb in\n    all sites to bring them online again. So the mean down-time for a\n    site is: n/2. With lots of sites this can take quite some time.\n\n-   **Why care for code sharing at all?** Sharing the code for modules\n    means that our opcode cache needs to hold only one copy of a file\n    instead of one per site.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoreonion%2Fdrupy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmoreonion%2Fdrupy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoreonion%2Fdrupy/lists"}