Skip to content

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

Merged
imobachgs merged 12 commits intomasterfrom
run-init-scripts
Nov 28, 2024
Merged

feat(rust): add support for auto-installation "init" scripts#1788
imobachgs merged 12 commits intomasterfrom
run-init-scripts

Conversation

@imobachgs
Copy link
Copy Markdown
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
Copy Markdown

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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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
@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