{"id":21447827,"url":"https://github.com/beatussum/join","last_synced_at":"2026-05-20T03:31:35.950Z","repository":{"id":249306400,"uuid":"830954465","full_name":"beatussum/join","owner":"beatussum","description":"A small script allowing to replace patterns in files by the content of other files","archived":false,"fork":false,"pushed_at":"2025-10-27T19:42:44.000Z","size":152,"stargazers_count":0,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2026-05-14T00:36:45.070Z","etag":null,"topics":["bash","shellspec"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/beatussum.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-19T10:37:04.000Z","updated_at":"2025-04-07T21:33:30.000Z","dependencies_parsed_at":"2025-03-17T05:01:21.931Z","dependency_job_id":null,"html_url":"https://github.com/beatussum/join","commit_stats":null,"previous_names":["beatussum/join"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/beatussum/join","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beatussum%2Fjoin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beatussum%2Fjoin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beatussum%2Fjoin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beatussum%2Fjoin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/beatussum","download_url":"https://codeload.github.com/beatussum/join/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beatussum%2Fjoin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33244693,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-20T03:30:51.439Z","status":"ssl_error","status_checked_at":"2026-05-20T03:30:49.443Z","response_time":356,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["bash","shellspec"],"created_at":"2024-11-23T03:12:18.829Z","updated_at":"2026-05-20T03:31:35.926Z","avatar_url":"https://github.com/beatussum.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# \u003cimg src=\"share/icons/hicolor/scalable/apps/io.github.beatussum.join.svg\" width=\"64\" height=\"64\"/\u003e join\n\n[![License](https://img.shields.io/github/license/beatussum/join)](LICENSE)\n[![Release](https://img.shields.io/github/v/release/beatussum/join)](https://github.com/beatussum/join/releases/)\n\n[![GitHub Actions Workflow Status (run check)](https://img.shields.io/github/actions/workflow/status/beatussum/join/run-check.yml?label=run%20check)](https://github.com/beatussum/join/actions/workflows/run-check.yml/)\n[![GitHub Actions Workflow Status (run tests)](https://img.shields.io/github/actions/workflow/status/beatussum/join/run-tests.yml?label=run%20tests)](https://github.com/beatussum/join/actions/workflows/run-tests.yml/)\n[![Codecov](https://codecov.io/gh/beatussum/join/graph/badge.svg)](https://codecov.io/gh/beatussum/join/)\n[![CodeFactor](https://www.codefactor.io/repository/github/beatussum/join/badge)](https://www.codefactor.io/repository/github/beatussum/join/)\n\n## Table of contents\n\n- [What is join?](#what-is-join)\n- [Usage](#usage)\n\n- [Building](#building)\n    - [Dependencies](#dependencies)\n    - [Building process](#building-process)\n\n- [Licenses](#licenses)\n\n## What is join?\n\n[**join**](https://github.com/beatussum/join/) is a small script allowing to replace patterns in files by the content of other files.\nThis script is licensed under GPL-3 or any later version.\n\n## Usage\n\n```raw\nUsage: join [options...] [--] [patterns...] [--] [inputs...]\n\nOptions:\n  -c,--copyright    Print copyright information.\n  -h,--help         Print this message.\n  -l,--lines NUM    Set the number of lines to be deleted at the beginning of\n                    each entry to NUM.\n  -v,--version      Print version information.\n\nPatterns are defined with the following syntax:\n  1. @\u003cPATTERN\u003e@=\u003cfile\u003e\n  2. @\u003cPATTERN\u003e@=\u003cdirectory\u003e\n  3. @\u003cPATTERN\u003e@=\"\u003cstring\u003e\"\n\nPATTERN must be uppercase.\n\nWith the syntax (1), all the entries @PATTERN@ in inputs will be replaced by the\ncontent of file.\n\nWith the syntax (2), all the entries @PATTERN@ in inputs will be replaced by the\ncontent of all the files in directory.\n\nWith the syntax (3), all the entries @PATTERN@ in inputs will be replaced by\nstring. As the shell will probably interpreted double quotes, the latter should\nbe escaped, e.g. @FOO@='\"bar\"'.\n\njoin Copyright (C) 2024 Mattéo Rossillol‑‑Laruelle \u003cbeatussum@protonmail.com\u003e\nThis program comes with ABSOLUTELY NO WARRANTY; for details type `join --copyright'.\nThis is free software, and you are welcome to redistribute it\nunder certain conditions; type `join --copyright' for details.\n```\n\n## Building\n\n### Dependencies\n\n- `dev-util/kcov`: only needed for coverage.\n- `dev-util/shellspec`[^1]: only needed for testing and coverage.\n- `dev-vcs/git`: only needed for building.\n\nAll other dependencies are already included in **@system**.\n\n### Building process\n\n1. Clone the repository.\n\n    ```sh\n    git clone \"https://github.com/beatussum/join.git\"\n    ```\n\n1. **(optional)** Test the program.\n\n    ```sh\n    make -C join test\n    ```\n\n    The JUnit report file is at `build/report/results_junit.xml`.\n\n1. **(optional)** Compute code coverage.\n\n    ```sh\n    make -C join coverage\n    ```\n\n    The output files are in `build/coverage/`.\n\n1. Install the program.\n\n    ```sh\n    sudo make -C join DESTDIR=\u003cDESTDIR\u003e PREFIX=\u003cPREFIX\u003e install\n    ```\n\n## Licenses\n\nAs explained above, the code of this software is licensed under GPL-3 or any later version. Details of the rights applying to the various third-party files are described in the [copyright](copyright) file in [the Debian `debian/copyright` file format](https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/).\n\n[^1]: You can emerge this package by using [my personnal overlay](https://github.com/beatussum/beatussum-overlay/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbeatussum%2Fjoin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbeatussum%2Fjoin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbeatussum%2Fjoin/lists"}