Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(rust): add support for auto-installation "init" scripts #1788

Merged
merged 12 commits into from
Nov 28, 2024

Conversation

imobachgs
Copy link
Contributor

@imobachgs imobachgs commented Nov 27, 2024

Add support for running custom-defined scripts during the first boot of the installed system. The scripts are executed by a special agama-scripts service, which is included in a package that is installed on the target system only if an init-script was included in the profile.

Agama will not complain if the package is available yet. We should enable this behavior when we 1) submit the package and 2) improve software error reporting.

@imobachgs imobachgs changed the title Add support for auto-installation "init" scripts feat(rust): add support for auto-installation "init" scripts Nov 27, 2024
@coveralls
Copy link

coveralls commented Nov 27, 2024

Pull Request Test Coverage Report for Build 12054896082

Details

  • 9 of 62 (14.52%) changed or added relevant lines in 7 files are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage decreased (-0.09%) to 70.973%

Changes Missing Coverage Covered Lines Changed/Added Lines %
rust/agama-lib/src/store.rs 0 2 0.0%
rust/agama-server/src/scripts/web.rs 0 2 0.0%
rust/agama-lib/src/software/http_client.rs 0 5 0.0%
rust/agama-lib/src/software/client.rs 0 7 0.0%
rust/agama-server/src/software/web.rs 0 7 0.0%
rust/agama-lib/src/scripts/store.rs 0 30 0.0%
Totals Coverage Status
Change from base Build 12027397701: -0.09%
Covered Lines: 16937
Relevant Lines: 23864

💛 - Coveralls

@imobachgs imobachgs marked this pull request as ready for review November 28, 2024 11:08

if settings.scripts.as_ref().is_some_and(|s| !s.pre.is_empty()) {
self.run_pre_scripts().await?;
if scripts.pre.as_ref().is_some_and(|s| !s.is_empty()) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

here it is kind of strange...can it happen at all to be some and also empty? From code it looks to me like it cannot happen together.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would say that, in JSON, it can be "pre: []", so it is Some but empty.

Path(id): Path<String>,
Json(params): Json<ResolvableParams>,
) -> Result<Json<()>, Error> {
let names: Vec<_> = params.names.iter().map(|n| n.as_str()).collect();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why type is needed here? I kind of expect it can infer that it is Vector from using collect.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, it is needed because the type cannot be inferred from the usage (it is used as a [&str] later). Bear in mind that collect can be used to build different kind of collections, even a Result<T, E>.

@imobachgs imobachgs merged commit e53ae19 into master Nov 28, 2024
6 checks passed
@imobachgs imobachgs deleted the run-init-scripts branch November 28, 2024 15:52
@imobachgs imobachgs restored the run-init-scripts branch November 29, 2024 08:22
@imobachgs imobachgs deleted the run-init-scripts branch December 2, 2024 10:17
@imobachgs imobachgs mentioned this pull request Jan 10, 2025
imobachgs added a commit that referenced this pull request Jan 13, 2025
Update to release version 11.

* #1495
* #1564
* #1617
* #1618
* #1625
* #1626
* #1627
* #1628
* #1630
* #1631
* #1632
* #1633
* #1634
* #1635
* #1636
* #1639
* #1640
* #1641
* #1642
* #1643
* #1644
* #1645
* #1646
* #1647
* #1648
* #1649
* #1650
* #1651
* #1652
* #1654
* #1655
* #1656
* #1657
* #1660
* #1663
* #1666
* #1667
* #1668
* #1670
* #1671
* #1673
* #1674
* #1675
* #1676
* #1677
* #1681
* #1682
* #1683
* #1684
* #1687
* #1688
* #1689
* #1690
* #1691
* #1692
* #1693
* #1694
* #1695
* #1696
* #1698
* #1699
* #1702
* #1703
* #1704
* #1705
* #1707
* #1708
* #1709
* #1710
* #1711
* #1712
* #1713
* #1714
* #1715
* #1716
* #1717
* #1718
* #1720
* #1721
* #1722
* #1723
* #1727
* #1728
* #1729
* #1731
* #1732
* #1733
* #1734
* #1735
* #1736
* #1737
* #1740
* #1741
* #1743
* #1744
* #1745
* #1746
* #1751
* #1753
* #1754
* #1755
* #1757
* #1762
* #1763
* #1764
* #1765
* #1766
* #1767
* #1769
* #1771
* #1772
* #1773
* #1774
* #1777
* #1778
* #1785
* #1786
* #1787
* #1788
* #1789
* #1790
* #1791
* #1792
* #1793
* #1794
* #1795
* #1796
* #1797
* #1798
* #1799
* #1800
* #1802
* #1803
* #1804
* #1805
* #1807
* #1808
* #1809
* #1810
* #1811
* #1812
* #1814
* #1815
* #1821
* #1822
* #1823
* #1824
* #1825
* #1826
* #1827
* #1828
* #1830
* #1831
* #1832
* #1833
* #1834
* #1835
* #1836
* #1837
* #1838
* #1839
* #1840
* #1841
* #1842
* #1843
* #1844
* #1845
* #1847
* #1848
* #1849
* #1850
* #1851
* #1854
* #1855
* #1856
* #1857
* #1860
* #1861
* #1863
* #1864
* #1865
* #1866
* #1867
* #1871
* #1872
* #1873
* #1875
* #1876
* #1877
* #1878
* #1880
* #1881
* #1882
* #1883
* #1884
* #1885
* #1886
* #1888
* #1889
* #1890
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants